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("");
sb.append("YUMI_DUNS ");
sb.append("lswDUNS ");
sb.append("YUMI_XML_DOC ");
sb.append("123123 ");
sb.append(" ");
sb.append("");
sb.append("");
sb.append("444 ");
sb.append("10 ");
sb.append("Test ");
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 "";
}
}
}
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 |
