Home >> SmartFactory NonUI 
+- 1. 파생항목 
+- 2. 메시지생성 
+- 3. Send TC to Kafka 
+- 4. Skip TC

GlueMessageCreate 사용 가이드

GlueMessageCreate는 reuse Activity로써 parser된 Message결과를 이용하여 새로운 Message TC 혹은 File을 만드는 역활을 한다.
새로운 GlueMessage객체를 생성하기 위하여 GlueCreateMessage Activity의 Attribute를 이용하여 해당 객체를 생성한다.
생성된 GlueMessage객체를 이용하여 새로운 생성하고자 하는 Message는 LayoutManager에 정의되어 있는 Layout을 근거로 message를 String을 생성하거나 File을 생성한다.

그림 : GlueMessageCreate reuse Activity 화면
GlueCreateMessage Activity Diagram
  1. Activity의 properties 설명
  2. Attribute의 설정
  3. TC Create 사용
  4. File Create 사용
  5. Note

1. Activity의 properties 설명

    <activity name="GlueMessageCreate" class="com.posco.reuse.activity.GlueMessageCreate">
        <transition name="success" value="end"/>
        <property name="attr-cnt" value="8"/>
        <property name="attr-1" value="C|MSGFW002"/>
        <property name="attr-2" value="M|DEPTNO"/>
        <property name="attr-3" value="R|sdd_result@ENAME"/>
        <property name="attr-4" value="M|DLOC"/>
        <property name="attr-5" value="A|sdd_result"/>
        <property name="attr-6" value="R|sdd_result@EMPNO"/>
        <property name="attr-7" value="R|sdd_result@ENAME"/>
        <property name="attr-8" value="M|CRUD"/>
        <property name="layout" value="layoutManager"/>
        <property name="msg-id" value="MSGFW002"/>
        <property name="file-name" value="posco_createMessage.dat"/>
        <property name="msg-type" value="file"/> 
        <property name="msgmulti-type" value="multi"/>
        <property name="result-key" value="posco_createMessage"/>
    </activity>
properties명 설명 사용 예
class com.posco.reuse.activity.GlueMessageCreate -
layout (필수) applicationContext.xml의 GlueLayoutManager bean id. layoutManager, xmlLayoutManager, dbLayoutManager
msg-id (필수) 새로운 layout으로 만들고자 하는 TC ID MSGFW002, MSGFW003
msg-type (필수) TC 혹은 File로 만들 경우는 선택 한다. TC일 경우 'tc', File일 경우 'file'
attr-cnt (필수) 새로 만들어질 TC의 Layout에 attribute의 갯수 -
attr-1 ~ n (필수) 새로 만들어질 TC의 Layout에 attribute의 값 C|MSGFW002, M|DEPTNO, R|sdd_result@EMPNO, 상세
file-name (선택) msg type이 파일일 경우의 파일 이름 posco_createMessage.dat
msgmulti-type (선택) 한개의 전문의 대해서 다수의 전문을 사용할 경우 한개일 경우 'single' 다수일 경우 'multi' (default : 'single')
charset (선택) Create Message의 ParseType이 byte 일 경우 사용됨. 고정값. 'UTF-8', 'EUC-KR'
charset-name (선택) Create Message의 ParseType이 byte 일 경우 사용됨. 동적값.(GlueContext key) -
result-key (필수) Context에 Map형태로 결과를 담을 Key.(TC경우 Map<String, List <String > >, file경우 해당 파일 경로 ) -

2. Attribute의 설정

type 이름 설명 사용 예
C CONSTANT 상수를 설정할 경우 C|MSGFW002 : (type|value)
M MESSAGE Message객제에서 데이터를 가지고 설정할 경우 M|EMPNO : (type|Message key)
S SYSTEMDATE system Date를 설정할 경우 S : (type)
H HASH GlueContex의 Hash Map의 데이터를 가지고 설정할 경우 H|dataMap@EMPNO : (type|ctx_key@Map_key)
P PARAMETER GlueContex의 데이터를 가지고 설정할 경우 P|dataMap : (type|ctx_key)
A ARRAY GlueContex의 ArrayList의 데이터를 가지고 설정할 경우 A|sdd_result@2 : (type|ctx_key@idx)
R ROW GlueContex의 ArrayList<Map>의 데이터를 가지고 설정할 경우 R|sdd_result@EMPNO@2 : (type|ctx_key@Map_key@idx)
  • type과 Condition의 구분는 '|' 구분자를 이용한다.
  • condition내의 구분는 '@' 구분자를 이용한다.
  • idx : List의 인덱스 숫자를 의미 합니다. (default : 0)

3. TC Create 사용

3.1 properties 설정

    <activity name="GlueMessageCreate" class="com.posco.reuse.activity.GlueMessageCreate">
        <transition name="success" value="end"/>
        <property name="attr-cnt" value="8"/>
        <property name="attr-1" value="C|MSGFW002"/>
        <property name="attr-2" value="M|DEPTNO"/>
        <property name="attr-3" value="R|sdd_result@ENAME"/>
        <property name="attr-4" value="M|DLOC"/>
        <property name="attr-5" value="A|sdd_result"/>
        <property name="attr-6" value="R|sdd_result@EMPNO"/>
        <property name="attr-7" value="R|sdd_result@ENAME"/>
        <property name="attr-8" value="M|CRUD"/>
        <property name="layout" value="layoutManager"/>
        <property name="msg-id" value="MSGFW002"/>
        <property name="msg-type" value="tc"/>
        <property name="msgmulti-type" value="multi"/>
        <property name="result-key" value="posco_createMessage"/>
    </activity>
  • msg-type의 value : 'tc'설정.

3.2 result-key를 이용한 확인

 java code : GlueContext.get("posco_createMessage");
   
 결과 :  value =  Map<String, List<String>> 
 예) MSGFW002 = [MSGFW00210test1         bc001 abc001 1101test1     1102test2     1103test3      ]

4. File Create 사용

4.1 FILE PATH 설정

glue.propertiese 파일의 "reuse.msg.file.path"를 추가 한다.

 예) reuse.msg.file.path=C:/data/test/

4.2 properties 설정

    <activity name="GlueMessageCreate" class="com.posco.reuse.activity.GlueMessageCreate">
        <transition name="success" value="end"/>
        <property name="attr-cnt" value="8"/>
        <property name="attr-1" value="C|MSGFW002"/>
        <property name="attr-2" value="M|DEPTNO"/>
        <property name="attr-3" value="R|sdd_result@ENAME"/>
        <property name="attr-4" value="M|DLOC"/>
        <property name="attr-5" value="A|sdd_result"/>
        <property name="attr-6" value="R|sdd_result@EMPNO"/>
        <property name="attr-7" value="R|sdd_result@ENAME"/>
        <property name="attr-8" value="M|CRUD"/>
        <property name="layout" value="layoutManager"/>
        <property name="msg-id" value="MSGFW002"/>
        <property name="file-name" value="posco_createMessage.dat"/>
        <property name="msg-type" value="file"/> 
        <property name="msgmulti-type" value="multi"/>
        <property name="result-key" value="posco_createMessage"/>
    </activity>
  • file-name의 value : posco_createMessage.dat설정.
  • msg-type의 value : file설정.

4.3 result-key의 확인

 java code : GlueContext.get("posco_createMessage");
   
 결과 :  value =  String  : 파일의 경로 와 이름을 포함한 값
 예) C:\data\test\posco_createMessage.dat
그림 : GlueMessageCreate : File Create
: GlueMessageCreate : File Create

5. Note

5.1 Attribute의 주의사항

 Attribute의 'attr-1'의 시퀀스 '1'와 새로운 Layout의 시퀀스는 일치 하여야 한다.     

5.2 File일 경우 encoding의 설정

 File의 encoding 설정은 WAS의 JAVA OPTION의 "file.encoding"에 의해서 결정된다. (default : UTF-8)

5.3 Create Layout type과 Attribute의 Type 관계 가능 여부

Layout Type Attribute Type 가능여부 비고
E C -
E M 참고1
E A 참고1
E R 참고1
GE C -
GE M 참고2
GE A 참고2
GE R 참고2
  • Layout Type -> E(Element), GE(GROUP Element)
  • 가능여부 -> ○(가능), △(일부), X(불가능)
  • Attribute Type -> C(CONSTANT), M(MESSAGE), A(ARRAY), R(ARRAY<MAP>), H(HASH MAP)
  • 참고 1 : 입력 데이터가 Collection(Object[], List<>)일 경우 첫번째 데이터를 기준으로 데이터을 등록함.
  • 참고 2 : CONSTANT, MESSAGE, HASH MAP Attribute Type 사용 가능 함.

5.4 msgmulti-type이 multi일 경우 데이터 입력 방식 예

  • ROW(List<Map>)의 입력 값
      List<Map<String, Object>> rowMapList =  new ArrayList<Map<String,Object>>();  
      Map<String, Object> tempMap = new HashMap<String, Object>();
      tempMap.put("EMPNO", 1101);
      tempMap.put("ENAME", "test1");
      rowMapList.add(tempMap);
      tempMap = new HashMap<String, Object>();
      tempMap.put("EMPNO", 1102);
      tempMap.put("ENAME", "test2");
      rowMapList.add(tempMap);
      ctx.put("sdd_result", rowMapList);  
      ctx.put("test", "abc");
    
  • Layout 설정 (seq, type, id, length) : XXX-msg.xml
       1, E,  DNAME, 4 
       2, G,  EMPSET, 2
       3, GE, EMPNO, 4
       4, GE, ENAME, 5
    
  • Attribute 설정
      arr-1 R|sdd_result@ENAME 
      arr-2 A|ssd_result
      arr-3 R|sdd_result@EMPNO
      arr-4 R|sdd_result@ENAME
    
  • 결과
      test11101test 11102test2 
      test21101test 11102test2  
    

5.5 GE(GROUP Element) 경우 사용 예

  • ROW(List<Map>)의 입력 값
     List<Map<String, Object>> rowMapList =  new ArrayList<Map<String,Object>>();   
     Map<String, Object> tempMap = new HashMap<String, Object>();
     tempMap.put("EMPNO", 1101);
     tempMap.put("ENAME", "이름");
     rowMapList.add(tempMap);
     tempMap = new HashMap<String, Object>();
     tempMap.put("EMPNO", 1102);
     tempMap.put("ENAME", "test2");
     rowMapList.add(tempMap);
     tempMap = new HashMap<String, Object>();
     tempMap.put("EMPNO", 1103);
     tempMap.put("ENAME", "test3");
     rowMapList.add(tempMap);
     tempMap = new HashMap<String, Object>();
     tempMap.put("EMPNO", 1104);
     tempMap.put("ENAME", "test4");
     rowMapList.add(tempMap);
     ctx.put("sdd_result", rowMapList);
            
     Map<String, Object> tempMap1 = new HashMap<String, Object>();
     tempMap1.put("CRUD", "R" );
     ctx.put("CRUD", tempMap1);
    
  • Layout 설정 (seq, type, id, length) : XXX-msg.xml
       1, E,  TRANSACTION_CODE, 8
       2, E,  DEPTNO, 2
       3, E,  DNAME, 14
       4, E,  DLOC, 13
       5, E,  DDATE, 14
       6, G,  EMPSET, 3
       7, GE, EMPNO, 4
       8, GE, ENAME, 10
       9, GE, CRUD, 1
    
  • Attribute 설정
     attr-1 C|MSGFW003
     attr-2 M|DEPTNO
     attr-3 R|sdd_result@ENAME
     attr-4 M|DLOC
     attr-5 S
     attr-6 A|sdd_result
     attr-7 R|sdd_result@EMPNO
     attr-8 R|sdd_result@ENAME
     attr-9 H|CRUD@CRUD
    
  • 결과
      MSGFW00310이름        bc001 abc001 201603041743361101이름    R1102test2     R1103test3     R