GXS Korea 문의 결과 해당 기능과 관련한 공식 가이드/메뉴얼 문서는 없는 상황.
BizManager Library 디컴파일 해보면 참고가 될만한 샘플을 볼수가 있어서 해당 내용을 기반으로 첨부와 같이 가이드 문서를 작성
1. 기능 설명
- Parties -> Processing Rule -> Action 에 해당 하는 기능임
- Provides the capability to configure the system to invoke a Java class.
2. 설정 세부 항목 설명
1) Name
- 실행될 Processing Rule Action 명칭 정의
2) Java Class
- 실행할 Java Class에 대한 Class Qualified Name
- Class 생성과 관련한 현재까지 공개된 내용(현재 BizManager측의 해당 Class 생성관련한 공식 가이드 없음)
(1) 주요 Interface or Class - com.ipnetsolutions.msgsrv.script.ScrBean
=> 생성할 Class에서는 이 Interface를 Implement 해야만 함
- com.ipnetsolutions.msgsrv.script.ScrResults
=> 생성한 Class내에서의 처리결과를 저장하는데 사용되는 클래스
- com.ipnetsolutions.msgsrv.script.ScrBean.Context
=> 생성하는 Class내에서 BizManager 프로세싱 단계에 저장된 각 Object에 접근할수 있는 통로
(2) 생성 Class의 적용위치
- BizManager의 ClassPath상에 위치하면 될것으로 추정됨
- 현재 C:\BizConnect\Application\app3.3.0\lib\common 경로에 생성한 클래스를 위치히야 정상동작
하는것으로 확인됨
- 생성 Class 적용시 서버 재기동 과정이 필요함
(3) 샘플 소스
- 첨부의 샘플소스 확인
package kr.co.inspien.bizmanager; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import com.ipnetsolutions.config.itf.Configurator; import com.ipnetsolutions.logger.Logger; import com.ipnetsolutions.msgsrv.script.ScrBean; import com.ipnetsolutions.msgsrv.script.ScrResults; public class SampleJavaAction implements ScrBean{ @Override public ScrResults run(Context context) throws Exception { // TODO Auto-generated method stub Logger oLog = context.getLog(); //Action Script 실행 결과 객체 생성 ScrResults oResult = new ScrResults(oLog); //Context 객체에서 Parameter String 추출 String sParam = context.getParam(); //Context 객체에서 현재 처리중인 데이터 파일명 추출하기 Input oInput = context.getInput(); String outFnm = oInput.logicalFilename; //Context 객체에서 현재 처리중인 데이터 추출하기 InputStream is = oInput.getInputStream(); String sProcData = convertStreamToString(is); //Context 객체에서 Output 출력하기 String sOutFile = "TRANS_JAVA_OUTPUT"; FileWriter wtr = new FileWriter(sOutFile); StringBuffer sb = new StringBuffer(); sb.append(""); sb.append(""); sb.append(" "); wtr.write(sb.toString()); wtr.close(); //Context 객체에서 Output 출력하기 oResult.addOutput(sOutFile); //Configuration 정보 Configurator cf = context.getConfigurator(); String sCF = null; if(cf != null){ sCF = cf.getDatabaseConnectionName(); } //==> Test Output File FileWriter fstream = new FileWriter("C:/temp/BizManagerTestOutput_0724.txt"); BufferedWriter out = new BufferedWriter(fstream); out.write("Logger Level="+oLog.getLevel()+"\r\n"); out.write("Logger Name="+oLog.getName()+"\r\n"); out.write("Parameter String = "+sParam+"\r\n"); out.write("logicalFileName = "+outFnm+"\r\n"); out.write("Configuration DB Connection Name="+sCF+"\r\n"); out.write("============================== Contents Start =============================\r\n"); out.write(sProcData); out.write("============================== Contents End =============================\r\n"); out.close(); if(sParam.equals("ERROR")){ oResult.addError("Custom Error Message"); //처리결과 에러상태로 지정 }else if(sParam.equals("WARNING")){ oResult.addWarning("Custom Warning Message"); //처리결과는 Success이나 지정한 메시지가 Operation 모니터링내에 Error Message 항목에 출력됨 } return oResult; } public String convertStreamToString(InputStream is) throws IOException { if (is != null) { StringBuilder sb = new StringBuilder(); String line; try { BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); while ((line = reader.readLine()) != null) { sb.append(line).append("\n"); } } finally { is.close(); } return sb.toString(); } else { return ""; } } }"); sb.append(" "); sb.append("YUMI_DUNS "); sb.append("lswDUNS "); sb.append("YUMI_XML_DOC "); sb.append("123123 "); sb.append(""); sb.append(" "); sb.append(""); sb.append(" "); sb.append("444 "); sb.append("10 "); sb.append("Test "); sb.append("
3) System ID
- 서버 이중화 구성의 경우 해당 Class가 실행될 특정 서버를 지정할 수 있음
4) Parameter String
- 생성한 Java Class 내부로 전달할 Parmeter String 지정
- //Context 객체에서 Parameter String 추출 String sParam = context.getParam();
5) Stop Default Transmission
- Java Class 호출후 수신자(Receipt)의 Default Trandport를 실행할지 여부임
- 하나의 Processing Rule에 등록된 Acition 모두 동일하게 셋팅해야 적용된다
예) 모두 해당 옵션을 선택해제해야 각 Action의 처리상태와 상관없이 수신지 Default Transport 수행함
6) Cascade Multiple Actions
- 현재 등록하는 Action의 처리상태에 따라 후속 Action을 실행여부 결정
- 해당 옵션선택시 현재 단계의 Action이 실패할경우 후속 Action이 실행되지 않음
7) Schedule
- immediately : 즉시 실행
- 그외 스케쥴 지정시 지정된 시간만큼의 Delay를 가진후 실행되는 모습을 취함
※ 특정시간 실행 지정가능
3. 해당 기능 활용 방안
- 각 Processing Rule에서 지정한 Document 처리시 BizManager에서 제공하지 않는 기능들에 대해서
Custom Java 소스를 활용하여 극복이 가능 할것으로 보임
- Java Class의 처리상태가 Error인경우 Operation 메뉴에서 Retry 처리도 가능함
- Java Class에서 문서의 변환 및 외부 작업 수행후 후속 프로세스로의 연계도 가능함
예) 아래와 같이 ACT_JAVACALL2 단계에서 문서를 변환하고 이후 후속 프로세스가 진행됨
Schedule 지정시 Operation 옵션에서 아래와 같이 Delay 처리되는 상황을 확인할수 있다.
'EAI > BizManager' 카테고리의 다른 글
[BizManager] Windows 시스템에서 BizManager Mapper 설치시 발생하는 오류 대응법 (0) | 2013.09.03 |
---|---|
[BizManager] Mapper 사용 TEST시 에러발생관련 팁 (0) | 2013.08.22 |