com.sds.acube.bpm.framework.api
Class XmlProcessor

java.lang.Object
  extended by com.sds.acube.bpm.framework.api.XmlProcessor

public class XmlProcessor
extends java.lang.Object

XmlProcessor.java 2009. 04. 14. XML 관련 BPM API (이 클래스는 스트링파싱이 아닌 XML라이브러리를 이용함)

Version:
1.0.0.0 Copyright 2008 Samsung SDS Co., Ltd. All rights reserved.
Author:
LEE IL YONG

Constructor Summary
XmlProcessor()
           
 
Method Summary
static java.lang.String getCurrentXmlLocation(java.sql.Connection conn, java.lang.String processID)
          특정 업무의 현재 xml location을 찾아 리턴한다.
static java.lang.String getCurrentXmlLocation(java.lang.String processID)
          특정 업무의 현재 xml location을 찾아 리턴한다.
static java.util.HashMap getHashMapByBeginString(java.util.HashMap map, java.lang.String beginString)
          HashMap에서 특정 문자열로 시작하는 데이터만 추출하여 새로운 HashMap으로 리턴함.
static java.lang.String getString(org.w3c.dom.Document document)
          주어진 org.w3c.dom.Document을 xml 문자열로 변환하여 리턴한다.
static java.lang.String getValueFromCData(java.lang.String xml, java.lang.String name)
          주어진 xml에서 필드값을 추출해 리턴함(단,xml은 CDATA 기반이라고 간주함)
static java.lang.String getValueOfJForm(java.lang.String xml, java.lang.String xmlTagName)
          주어진 전체 xml에서 특정 노드의 값을 리턴한다.
static java.lang.String getValueOfJForm(java.lang.String xml, java.lang.String xmlTagName, org.apache.log4j.Logger logger)
          주어진 전체 xml에서 특정 노드의 값을 리턴한다.
static java.lang.String getXmlDescriptionByDept(java.lang.String deptCode)
          부서 지정용 XML생성 API (for 부서대기함)(부서ID는 회사와 상관없이 전체적으로 고유함)
static java.lang.String getXmlDescriptionByDept(java.lang.String deptCode, java.lang.String deptName)
          부서 지정용 XML생성 API (for 부서대기함)(부서ID는 회사와 상관없이 전체적으로 고유함)
static java.lang.String getXmlDescriptionByMail(java.lang.String email)
          메일주소만 설정되고 나머지는 빈 XmlDescription을 만들어 낸다.
static java.lang.String getXmlDescriptionByMailInfo(java.lang.String userID, java.lang.String userName, java.lang.String email)
          메일주소만 설정되고 나머지는 빈 XmlDescription을 만들어 낸다.
static java.lang.String getXmlDescriptionByRoleID(java.lang.String roleID)
          roleID만 가지고 서버단 호출없이 XML을 만들어 낸다.
static java.lang.String getXmlDescriptionByRoleInfo(java.lang.String roleID, java.lang.String roleName)
          roleID 가지고 서버단 호출없이 XML을 만들어 낸다(예전버전 상황조회 고려 버전)
static java.lang.String getXmlDescriptionByRoleInfoWithDept(java.lang.String roleID, java.lang.String roleName, java.lang.String deptCode, java.lang.String deptName)
          부서안에 역할자 지정(부서ID는 회사와 상관없이 전체적으로 고유함)
static java.lang.String getXmlDescriptionByUserID(java.lang.String userID)
          사용자 ID만 설정되고 나머지는 빈 XmlDescription을 만들어 낸다.
static java.lang.String getXmlDescriptionByUserInfo(java.lang.String userID, java.lang.String userName, java.lang.String deptCode, java.lang.String deptName, java.lang.String companyID, java.lang.String companyName)
          사용자 ID만 설정되고 나머지는 빈 XmlDescription을 만들어 낸다.
static java.lang.String getXmlWithHashMap(java.util.HashMap map, java.lang.String xmlStatement, java.lang.String rootTagName)
          HashMap을 받으면 루프를 돌면서 XML을 만들어 문자열로 리턴함.
static java.lang.String getXmlWithTaskID(java.sql.Connection conn, java.lang.String tableType, java.lang.String taskID)
          특정 업무함에서 taskID로 xml을 찾아 리턴한다.
static java.lang.String getXmlWithTaskID(java.lang.String tableType, java.lang.String taskID)
          특정 업무함에서 taskID로 xml을 찾아 리턴한다.
static java.lang.String getXmlWithXmlLocation(java.sql.Connection conn, java.lang.String xmlLocation)
          주어진 xmlLocation에서(tBPM_ARCHIVE table에서) xml을 찾아 리턴한다.
static java.lang.String getXmlWithXmlLocation(java.lang.String xmlLocation)
          주어진 xmlLocation에서(tBPM_ARCHIVE table에서) xml을 찾아 리턴한다.
static java.lang.String getXPathValue(java.lang.String xml, java.lang.String xpath)
          주어진 전체 xml에서 특정 노드의 값을 리턴한다.
static java.lang.String getXPathValue(java.lang.String xml, java.lang.String xpath, org.apache.log4j.Logger logger)
          주어진 전체 xml에서 특정 노드의 값을 리턴한다.
static void main()
           
static java.lang.String mergeJFormXml(java.lang.String[] arrXml, java.lang.String mergeTargetPrefix, java.lang.String mergeString)
          주어진 xml을 머지한 후 리턴함 [주의] ROOT는 JFORM이며 모든 XML은 CDATA라고 전제함
static java.lang.String mergeXmlByLocation(java.util.ArrayList xmlLocationList, java.lang.String mergeTargetPrefix, java.lang.String mergeString)
          주어진 xmlLocation에서(tBPM_ARCHIVE table에서) xml을 찾아 머지한 후 리턴함
static java.lang.String mergeXmlByLocation(java.sql.Connection conn, java.util.ArrayList xmlLocationList, java.lang.String mergeTargetPrefix, java.lang.String mergeString)
          주어진 xmlLocation에서(tBPM_ARCHIVE table에서) xml을 찾아 머지한 후 리턴함
static boolean setXmlWithXmlLocation(java.sql.Connection conn, java.lang.String xmlLocation, java.lang.String xml)
          주어진 xmlLocation에서(tBPM_ARCHIVE table에서) xml을 저장한다.
static boolean setXmlWithXmlLocation(java.lang.String xmlLocation, java.lang.String xml)
          주어진 xmlLocation에서(tBPM_ARCHIVE table에서) xml을 저장한다.
static boolean updateCurrentXML(java.sql.Connection conn, java.lang.String topProcessID, java.lang.String processID, java.lang.String nodeID, int nodeSeq, java.lang.String xmlString)
          넘겨받은 XML을 Current XML로 변경하는 함수
static boolean updateCurrentXML(java.lang.String topProcessID, java.lang.String processID, java.lang.String nodeID, int nodeSeq, java.lang.String xmlString)
          넘겨받은 XML을 Current XML로 변경하는 함수
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

XmlProcessor

public XmlProcessor()
Method Detail

getValueFromCData

public static java.lang.String getValueFromCData(java.lang.String xml,
                                                 java.lang.String name)
                                          throws java.lang.Exception
주어진 xml에서 필드값을 추출해 리턴함(단,xml은 CDATA 기반이라고 간주함)

Parameters:
String - xml
String - 필드명
Returns:
String
Throws:
java.lang.Exception
Since:
2013.04.01 LEE IL YONG

updateCurrentXML

public static boolean updateCurrentXML(java.lang.String topProcessID,
                                       java.lang.String processID,
                                       java.lang.String nodeID,
                                       int nodeSeq,
                                       java.lang.String xmlString)
                                throws java.lang.Exception
넘겨받은 XML을 Current XML로 변경하는 함수

Parameters:
topProcessID - Top Process ID
processID - Process ID
nodeID - Node ID
nodeSeq - Node Sequence
xmlString - XMl Content
Returns:
boolean
Throws:
java.lang.Exception
Since:
2013.03.13 LEE IL YONG

updateCurrentXML

public static boolean updateCurrentXML(java.sql.Connection conn,
                                       java.lang.String topProcessID,
                                       java.lang.String processID,
                                       java.lang.String nodeID,
                                       int nodeSeq,
                                       java.lang.String xmlString)
                                throws java.lang.Exception
넘겨받은 XML을 Current XML로 변경하는 함수

Parameters:
topProcessID - Top Process ID
processID - Process ID
nodeID - Node ID
nodeSeq - Node Sequence
xmlString - XMl Content
Returns:
boolean
Throws:
java.lang.Exception
Since:
2013.03.13 LEE IL YONG

getString

public static java.lang.String getString(org.w3c.dom.Document document)
                                  throws java.lang.Exception
주어진 org.w3c.dom.Document을 xml 문자열로 변환하여 리턴한다.

Parameters:
org.w3c.dom.Document -
Returns:
String
Throws:
java.lang.Exception
Since:
2013.03.08 LEE IL YONG

mergeXmlByLocation

public static java.lang.String mergeXmlByLocation(java.util.ArrayList xmlLocationList,
                                                  java.lang.String mergeTargetPrefix,
                                                  java.lang.String mergeString)
                                           throws java.lang.Exception
주어진 xmlLocation에서(tBPM_ARCHIVE table에서) xml을 찾아 머지한 후 리턴함

Parameters:
xmlLocationList - xml경로 리스트
Returns:
String xml
Throws:
java.lang.Exception
Since:
2013.03.07 LEE IL YONG

mergeXmlByLocation

public static java.lang.String mergeXmlByLocation(java.sql.Connection conn,
                                                  java.util.ArrayList xmlLocationList,
                                                  java.lang.String mergeTargetPrefix,
                                                  java.lang.String mergeString)
                                           throws java.lang.Exception
주어진 xmlLocation에서(tBPM_ARCHIVE table에서) xml을 찾아 머지한 후 리턴함

Parameters:
xmlLocationList - xml경로 리스트
Returns:
String xml
Throws:
java.lang.Exception
Since:
2013.03.07 LEE IL YONG

mergeJFormXml

public static java.lang.String mergeJFormXml(java.lang.String[] arrXml,
                                             java.lang.String mergeTargetPrefix,
                                             java.lang.String mergeString)
                                      throws java.lang.Exception
주어진 xml을 머지한 후 리턴함 [주의] ROOT는 JFORM이며 모든 XML은 CDATA라고 전제함

Parameters:
arrXml -
Returns:
String xml
Throws:
java.lang.Exception
Since:
2013.03.07 LEE IL YONG

getHashMapByBeginString

public static java.util.HashMap getHashMapByBeginString(java.util.HashMap map,
                                                        java.lang.String beginString)
                                                 throws com.sds.acube.bpm.framework.api.ProcessorException
HashMap에서 특정 문자열로 시작하는 데이터만 추출하여 새로운 HashMap으로 리턴함.

Parameters:
HashMap - 데이터
beginString - ex)JFORM_META_
Returns:
새로운 HashMap(없을 경우 빈HashMap을 리턴,null을 리턴하진 않음)
Throws:
com.sds.acube.bpm.framework.api.ProcessorException
Since:
2011.07.12 LEE IL YONG

getXmlWithHashMap

public static java.lang.String getXmlWithHashMap(java.util.HashMap map,
                                                 java.lang.String xmlStatement,
                                                 java.lang.String rootTagName)
                                          throws com.sds.acube.bpm.framework.api.ProcessorException
HashMap을 받으면 루프를 돌면서 XML을 만들어 문자열로 리턴함.
[참고] 데이터는 모두 CDATA로 들어감

Parameters:
HashMap - 데이터
xmlStatement - or
rootTagName - root태그('<'없이 내용만)
Returns:
String xml값(없을 경우 null을 리턴)
Throws:
com.sds.acube.bpm.framework.api.ProcessorException
Since:
2011.07.08 LEE IL YONG

getXmlWithXmlLocation

public static java.lang.String getXmlWithXmlLocation(java.lang.String xmlLocation)
                                              throws com.sds.acube.bpm.framework.api.ProcessorException
주어진 xmlLocation에서(tBPM_ARCHIVE table에서) xml을 찾아 리턴한다.
[참고] 어댑터에서 xmlLocation 얻기 => String xmlLocation = getParam("%OUTPUT_XML%");
XML파싱은 XmlProcessor.getValueOfJForm() 참조

Parameters:
xmlLocation - xml경로(예:db://archive/xml/FA6E80C5088E44de855D48063885A429)
Returns:
String xml(없을 경우 null을 리턴)
Throws:
com.sds.acube.bpm.framework.api.ProcessorException
Since:
2009.04.14 LEE IL YONG

getXmlWithXmlLocation

public static java.lang.String getXmlWithXmlLocation(java.sql.Connection conn,
                                                     java.lang.String xmlLocation)
                                              throws com.sds.acube.bpm.framework.api.ProcessorException
주어진 xmlLocation에서(tBPM_ARCHIVE table에서) xml을 찾아 리턴한다.
[참고] 어댑터에서 xmlLocation 얻기 => String xmlLocation = getParam("%OUTPUT_XML%");
XML파싱은 XmlProcessor.getValueOfJForm() 참조

Parameters:
Connection - db커넥션
xmlLocation - xml경로(예:db://archive/xml/FA6E80C5088E44de855D48063885A429)
Returns:
String xml(없을 경우 null을 리턴)
Throws:
com.sds.acube.bpm.framework.api.ProcessorException
Since:
2009.04.14 LEE IL YONG

setXmlWithXmlLocation

public static boolean setXmlWithXmlLocation(java.lang.String xmlLocation,
                                            java.lang.String xml)
                                     throws com.sds.acube.bpm.framework.api.ProcessorException
주어진 xmlLocation에서(tBPM_ARCHIVE table에서) xml을 저장한다. 이미 있을 경우 수정한다.
[참고] 이 함수는 이력관리를 하지 않으므로 관리자용으로만 사용할 것.
[참고] archiveID만 알 경우 앞에 'db://archive/xml/'를 붙일 것.

Parameters:
xmlLocation - xml경로(예:db://archive/xml/FA6E80C5088E44de855D48063885A429)
xml -
Returns:
boolean 수행결과
Throws:
com.sds.acube.bpm.framework.api.ProcessorException
Since:
2009.12.30 LEE IL YONG

setXmlWithXmlLocation

public static boolean setXmlWithXmlLocation(java.sql.Connection conn,
                                            java.lang.String xmlLocation,
                                            java.lang.String xml)
                                     throws com.sds.acube.bpm.framework.api.ProcessorException
주어진 xmlLocation에서(tBPM_ARCHIVE table에서) xml을 저장한다. 이미 있을 경우 수정한다.
[참고] 이 함수는 이력관리를 하지 않으므로 관리자용으로만 사용할 것.
[참고] archiveID만 알 경우 앞에 'db://archive/xml/'를 붙일 것.

Parameters:
Connection - db커넥션
xmlLocation - xml경로(예:db://archive/xml/FA6E80C5088E44de855D48063885A429)
xml -
Returns:
boolean 수행결과
Throws:
com.sds.acube.bpm.framework.api.ProcessorException
Since:
2009.12.30 LEE IL YONG

getXmlWithTaskID

public static java.lang.String getXmlWithTaskID(java.lang.String tableType,
                                                java.lang.String taskID)
                                         throws com.sds.acube.bpm.framework.api.ProcessorException
특정 업무함에서 taskID로 xml을 찾아 리턴한다.
XML파싱은 XmlProcessor.getValueOfJForm() 참조

Parameters:
tableType - 업무함명(예,inbox)
taskID - 업무함식별자
Returns:
String xml(없을 경우 null을 리턴)
Throws:
com.sds.acube.bpm.framework.api.ProcessorException
Since:
2009.04.14 LEE IL YONG

getXmlWithTaskID

public static java.lang.String getXmlWithTaskID(java.sql.Connection conn,
                                                java.lang.String tableType,
                                                java.lang.String taskID)
                                         throws com.sds.acube.bpm.framework.api.ProcessorException
특정 업무함에서 taskID로 xml을 찾아 리턴한다.
XML파싱은 XmlProcessor.getValueOfJForm() 참조

Parameters:
Connection - db커넥션
tableType - 업무함명(예,inbox)
taskID - 업무함식별자
Returns:
String xml(없을 경우 null을 리턴)
Throws:
com.sds.acube.bpm.framework.api.ProcessorException
Since:
2009.04.14 LEE IL YONG

getCurrentXmlLocation

public static java.lang.String getCurrentXmlLocation(java.lang.String processID)
                                              throws com.sds.acube.bpm.framework.api.ProcessorException
특정 업무의 현재 xml location을 찾아 리턴한다.

Parameters:
processID -
Returns:
String XmlLocation
Throws:
com.sds.acube.bpm.framework.api.ProcessorException
Since:
2011.04.20 LEE IL YONG

getCurrentXmlLocation

public static java.lang.String getCurrentXmlLocation(java.sql.Connection conn,
                                                     java.lang.String processID)
                                              throws com.sds.acube.bpm.framework.api.ProcessorException
특정 업무의 현재 xml location을 찾아 리턴한다.

Parameters:
processID -
Returns:
String XmlLocation
Throws:
com.sds.acube.bpm.framework.api.ProcessorException
Since:
2011.04.20 LEE IL YONG

getValueOfJForm

public static java.lang.String getValueOfJForm(java.lang.String xml,
                                               java.lang.String xmlTagName)
                                        throws com.sds.acube.bpm.framework.api.ProcessorException
주어진 전체 xml에서 특정 노드의 값을 리턴한다.
[주의] 성능상 이유로 이 함수를 여러번 호출하지 말 것.

Parameters:
xml - 전체 xml
xpath - xml태그명(JFORM 아래의)
Returns:
String xml값(없을 경우 null을 리턴)
Throws:
com.sds.acube.bpm.framework.api.ProcessorException
Since:
2009.04.14 LEE IL YONG

getValueOfJForm

public static java.lang.String getValueOfJForm(java.lang.String xml,
                                               java.lang.String xmlTagName,
                                               org.apache.log4j.Logger logger)
                                        throws com.sds.acube.bpm.framework.api.ProcessorException
주어진 전체 xml에서 특정 노드의 값을 리턴한다.
[주의] 성능상 이유로 이 함수를 여러번 호출하지 말 것.

Parameters:
xml - 전체 xml
xmlTagName - xml태그명(JFORM 아래의)
logger - Logger
Returns:
String xml값(없을 경우 null을 리턴)
Throws:
com.sds.acube.bpm.framework.api.ProcessorException
Since:
2009.04.14 LEE IL YONG

getXPathValue

public static java.lang.String getXPathValue(java.lang.String xml,
                                             java.lang.String xpath)
                                      throws com.sds.acube.bpm.framework.api.ProcessorException
주어진 전체 xml에서 특정 노드의 값을 리턴한다.
[주의] 성능상 이유로 이 함수를 여러번 호출하지 말 것.

Parameters:
xml - 전체 xml
xpath - xpath경로 (예:"/JFORM/JFORM_01")
Returns:
String xml값(없을 경우 null을 리턴)
Throws:
com.sds.acube.bpm.framework.api.ProcessorException
Since:
2009.04.14 LEE IL YONG

getXPathValue

public static java.lang.String getXPathValue(java.lang.String xml,
                                             java.lang.String xpath,
                                             org.apache.log4j.Logger logger)
                                      throws com.sds.acube.bpm.framework.api.ProcessorException
주어진 전체 xml에서 특정 노드의 값을 리턴한다.
[주의] 성능상 이유로 이 함수를 여러번 호출하지 말 것.

Parameters:
xml - 전체 xml
xpath - xpath경로 (예:"/JFORM/JFORM_01")
logger - Logger
Returns:
String xml값(없을 경우 null을 리턴)
Throws:
com.sds.acube.bpm.framework.api.ProcessorException
Since:
2009.04.14 LEE IL YONG

getXmlDescriptionByUserID

public static java.lang.String getXmlDescriptionByUserID(java.lang.String userID)
                                                  throws com.sds.acube.bpm.framework.api.ProcessorException
사용자 ID만 설정되고 나머지는 빈 XmlDescription을 만들어 낸다.
idir등 DB 접속없이 XmlDescription을 만들어 낼 때 사용가능.

Parameters:
userID - 사용자 ID
Returns:
XML
Throws:
com.sds.acube.bpm.framework.api.ProcessorException

getXmlDescriptionByUserInfo

public static java.lang.String getXmlDescriptionByUserInfo(java.lang.String userID,
                                                           java.lang.String userName,
                                                           java.lang.String deptCode,
                                                           java.lang.String deptName,
                                                           java.lang.String companyID,
                                                           java.lang.String companyName)
사용자 ID만 설정되고 나머지는 빈 XmlDescription을 만들어 낸다.
BPM 예전버전에서만 사용하고 가급적 사용하지 말 것 - 2009.08.27 LEE IL YONG

Parameters:
userID - 사용자 ID
Returns:
XML
Throws:
com.sds.acube.bpm.framework.api.ProcessorException

getXmlDescriptionByRoleID

public static java.lang.String getXmlDescriptionByRoleID(java.lang.String roleID)
roleID만 가지고 서버단 호출없이 XML을 만들어 낸다.

Parameters:
roleID -
Returns:
XML
Throws:
com.sds.acube.bpm.framework.api.ProcessorException
Since:
2011.09.08 LEE IL YONG

getXmlDescriptionByRoleInfo

public static java.lang.String getXmlDescriptionByRoleInfo(java.lang.String roleID,
                                                           java.lang.String roleName)
roleID 가지고 서버단 호출없이 XML을 만들어 낸다(예전버전 상황조회 고려 버전)

Parameters:
roleID -
Returns:
XML
Throws:
com.sds.acube.bpm.framework.api.ProcessorException
Since:
2011.09.08 LEE IL YONG

getXmlDescriptionByRoleInfoWithDept

public static java.lang.String getXmlDescriptionByRoleInfoWithDept(java.lang.String roleID,
                                                                   java.lang.String roleName,
                                                                   java.lang.String deptCode,
                                                                   java.lang.String deptName)
부서안에 역할자 지정(부서ID는 회사와 상관없이 전체적으로 고유함)

Parameters:
roleID -
Returns:
XML
Throws:
com.sds.acube.bpm.framework.api.ProcessorException
Since:
2011.09.08 LEE IL YONG

getXmlDescriptionByDept

public static java.lang.String getXmlDescriptionByDept(java.lang.String deptCode)
부서 지정용 XML생성 API (for 부서대기함)(부서ID는 회사와 상관없이 전체적으로 고유함)

Parameters:
deptCode -
Returns:
XML
Throws:
com.sds.acube.bpm.framework.api.ProcessorException
Since:
2011.09.08 LEE IL YONG

getXmlDescriptionByDept

public static java.lang.String getXmlDescriptionByDept(java.lang.String deptCode,
                                                       java.lang.String deptName)
부서 지정용 XML생성 API (for 부서대기함)(부서ID는 회사와 상관없이 전체적으로 고유함)

Parameters:
deptCode -
Returns:
XML
Throws:
com.sds.acube.bpm.framework.api.ProcessorException
Since:
2011.11.01 LEE IL YONG

getXmlDescriptionByMail

public static java.lang.String getXmlDescriptionByMail(java.lang.String email)
메일주소만 설정되고 나머지는 빈 XmlDescription을 만들어 낸다.
SmtpMailSender 어댑터에게 메일주소만 넘길 때 사용 가능.
SmtpMailSenderAdaptor에 메일 사용자 설정시 mail값만 설정하여 사용할 수 있다.
현재 알림(지연,업무인계) 메일은 userID를 넣어야 함

Parameters:
email -
Returns:
XML
Throws:
com.sds.acube.bpm.framework.api.ProcessorException
Since:
2011.11.01 LEE IL YONG

getXmlDescriptionByMailInfo

public static java.lang.String getXmlDescriptionByMailInfo(java.lang.String userID,
                                                           java.lang.String userName,
                                                           java.lang.String email)
메일주소만 설정되고 나머지는 빈 XmlDescription을 만들어 낸다.
SmtpMailSender 어댑터에게 메일주소만 넘길 때 사용 가능.
SmtpMailSenderAdaptor에 메일 사용자 설정시 mail값만 설정하여 사용할 수 있다.
현재 알림(지연,업무인계) 메일은 userID를 넣어야 함

Parameters:
email -
Returns:
XML
Throws:
com.sds.acube.bpm.framework.api.ProcessorException
Since:
2011.11.01 LEE IL YONG

main

public static void main()