반응형
프로프레임에서는 구조체를 컴파일하는 독특한 작업이 있다. C 개발자라면 구조체는 structure 이고 structure 를 어떻게 , 왜 컴파일해야 하는지 의아해 한다. 이것은 당연한 질문이고 궁금해해야 하는 것이 맞다.
프로프레임에서는 스튜디오로 구조체를 하나 작성하게 되면 이 구조체에 따는 전문(메시지)가 같이 생성된다. 이 때 생성된 구조체 및 전문(메시지)의 헤더 파일은 $PMAPINCDIR 디렉토리에 있다.
마찬가지로 $PMAPSRCDIR 에 전문(메시지)의 소스가 생성된다. 물론 구조체의 소스는 없다. 구조체명뒤에 ~MsgFld.c 라고 생성된 것을 볼 수 있다. 이 뒤에 붙는 MsgFld 라는 것은 해당 프로젝트에서 명명규칙으로 정하여 사용할 수 있으며 Default 값이 이 MsgFld 인 것이다.
사실 우리가 스튜디오에서 구조체를 컴파일 하는 경우에 구조체를 컴파일 하는 것이 아니라 이 전문(메시지) 소스를 컴파일 하는 행위인 것이다.
그렇다면 공통모듈(비즈모듈) 같은 것은 전문(메시지)를 사용하지 않는데 왜 컴파일을 해야 하는 것일까? 사실 서비스모듈 같은 경우야 MCA 와 같은 client 와 전문을 주고 받기 때문에 전문을 해석/변환하는 이 ~MsgFld.c 를 컴파일해 주는 것은 필수적이지만 비즈모듈 같은 경우는 해줄 필요가 없다. 특히나 DBIO 의 입출력 구조체는 더욱 그러하다.
그러나 프레임웍에서 제공하는 단위테스트 기능을 이용하여 가라 전문을 날려서 비즈모듈을 테스트해 보고자 한다면 어쩔 수 없이 비즈모듈의 전문(메시지)를 만들어야 하고 이 메시지전문을 컴파일도 해 놔야 할 것이다.
나 같은 경우 비즈모듈의 테스트를 스튜디오에서 제공하는 단위테스트를 이용하지 않고 비즈모듈을 호출하는 가라서비스를 하나 만들어 놓고 이용한다. 이 방법이 더 현실에 가까운 환경하에서 비즈모듈을 실행시켜 보고 결과를 지켜볼 수 있는 확실한 테스트 방법이기 때문이다.
프로프레임 스튜디오에서 구조체를 작성한 다음 해당 구조체의 전문메시지를 생성하는 방법은 아래그림과 같이 Message 생성 탭에서 해당 메시지를 체크하면 된다. FixedLength, delimiter, XML 등의 방법이 제공되고 있다.
예를 들어 FixedLength 를 체크했으면 $PMAPSRCDIR 과 $PMAPINCDIR 에 해당 전문메시지의 헤더와 소스가 생성이 되었을 것이다.
편집: 부분의 콤보박스를 선택하면 해당 전문메시지를 편집할 수 있는 팝업화면이 아래와 같이 뜨게 된다.
엄연히 구조체와 전문메시지가 따로 존재함을 이해했다면 왜 구조체를 컴파일 하는 지 이해했을 것이다. 개발자들이 쉽게 접근할 수 있도록 그냥 구조체 컴파일 한다고 가이드하고 있지만 실제적으로는 구조체를 컴파일 하는 것이 아니라 구조체와 짝으로 별도 존재하는 전문메시지의 소스를 컴파일 하는 것이다.
정리하면 메시지를 생성하고 컴파일이 필요한 경우
1. 서비스모듈의 구조체 ( 단말과 전문을 주고 받는 경우 )
2. 전문변환시 사용하는 구조체( EAI 등과 같이 타 시스템으로 연계를 위하여 ProMapper API 를 이용하여 변환 )
<2008년10월2일>
프로프레임에서는 스튜디오로 구조체를 하나 작성하게 되면 이 구조체에 따는 전문(메시지)가 같이 생성된다. 이 때 생성된 구조체 및 전문(메시지)의 헤더 파일은 $PMAPINCDIR 디렉토리에 있다.
[cbsdev]cd $PMAPINCDIR
[cbsdev]ls -al *mfeecal_trsc_ptcl_reg_in*
-rw-rw-r-- 1 pfm tmax 17257 9월 1일 18:24 pfmMappermfeecal_trsc_ptcl_reg_in_sub01MsgFld.h
-rw-rw-r-- 1 pfm tmax 13389 9월 1일 18:24 pfmMappermfeecal_trsc_ptcl_reg_in_sub01.h
-rw-rw-rw- 1 pfm tmax 3854 10월 2일 11:09 pfmMappermfeecal_trsc_ptcl_reg_inMsgFld.h
-rw-rw-rw- 1 pfm tmax 3838 10월 2일 11:09 pfmMappermfeecal_trsc_ptcl_reg_in.h
[cbssvd01]
[cbsdev]ls -al *mfeecal_trsc_ptcl_reg_in*
-rw-rw-r-- 1 pfm tmax 17257 9월 1일 18:24 pfmMappermfeecal_trsc_ptcl_reg_in_sub01MsgFld.h
-rw-rw-r-- 1 pfm tmax 13389 9월 1일 18:24 pfmMappermfeecal_trsc_ptcl_reg_in_sub01.h
-rw-rw-rw- 1 pfm tmax 3854 10월 2일 11:09 pfmMappermfeecal_trsc_ptcl_reg_inMsgFld.h
-rw-rw-rw- 1 pfm tmax 3838 10월 2일 11:09 pfmMappermfeecal_trsc_ptcl_reg_in.h
[cbssvd01]
마찬가지로 $PMAPSRCDIR 에 전문(메시지)의 소스가 생성된다. 물론 구조체의 소스는 없다. 구조체명뒤에 ~MsgFld.c 라고 생성된 것을 볼 수 있다. 이 뒤에 붙는 MsgFld 라는 것은 해당 프로젝트에서 명명규칙으로 정하여 사용할 수 있으며 Default 값이 이 MsgFld 인 것이다.
[cbsdev]cd $PMAPSRCDIR
[cbsdev]ls -al *mfeecal_trsc_ptcl_reg_in*.c
-rw-rw-r-- 1 pfm tmax 60421 9월 1일 18:24 pfmMappermfeecal_trsc_ptcl_reg_in_sub01MsgFld.c
-rw-rw-r-- 1 pfm tmax 10214 9월 1일 18:24 pfmMappermfeecal_trsc_ptcl_reg_in_sub01.c
-rw-rw-rw- 1 pfm tmax 11874 10월 2일 11:09 pfmMappermfeecal_trsc_ptcl_reg_inMsgFld.c
-rw-rw-rw- 1 pfm tmax 5981 10월 2일 11:09 pfmMappermfeecal_trsc_ptcl_reg_in.c
[cbsdev]
[cbsdev]ls -al *mfeecal_trsc_ptcl_reg_in*.so
-rwxrwxr-x 1 pfm tmax 90713 7월 8일 14:43 libpfmMappermfeecal_trsc_ptcl_reg_in_sub01.so
-rwxrwxr-x 1 pfm tmax 97422 8월 12일 21:26 libpfmMappermfeecal_trsc_ptcl_reg_in.so
[cbsdev]
[cbsdev]ls -al *mfeecal_trsc_ptcl_reg_in*.c
-rw-rw-r-- 1 pfm tmax 60421 9월 1일 18:24 pfmMappermfeecal_trsc_ptcl_reg_in_sub01MsgFld.c
-rw-rw-r-- 1 pfm tmax 10214 9월 1일 18:24 pfmMappermfeecal_trsc_ptcl_reg_in_sub01.c
-rw-rw-rw- 1 pfm tmax 11874 10월 2일 11:09 pfmMappermfeecal_trsc_ptcl_reg_inMsgFld.c
-rw-rw-rw- 1 pfm tmax 5981 10월 2일 11:09 pfmMappermfeecal_trsc_ptcl_reg_in.c
[cbsdev]
[cbsdev]ls -al *mfeecal_trsc_ptcl_reg_in*.so
-rwxrwxr-x 1 pfm tmax 90713 7월 8일 14:43 libpfmMappermfeecal_trsc_ptcl_reg_in_sub01.so
-rwxrwxr-x 1 pfm tmax 97422 8월 12일 21:26 libpfmMappermfeecal_trsc_ptcl_reg_in.so
[cbsdev]
사실 우리가 스튜디오에서 구조체를 컴파일 하는 경우에 구조체를 컴파일 하는 것이 아니라 이 전문(메시지) 소스를 컴파일 하는 행위인 것이다.
그렇다면 공통모듈(비즈모듈) 같은 것은 전문(메시지)를 사용하지 않는데 왜 컴파일을 해야 하는 것일까? 사실 서비스모듈 같은 경우야 MCA 와 같은 client 와 전문을 주고 받기 때문에 전문을 해석/변환하는 이 ~MsgFld.c 를 컴파일해 주는 것은 필수적이지만 비즈모듈 같은 경우는 해줄 필요가 없다. 특히나 DBIO 의 입출력 구조체는 더욱 그러하다.
그러나 프레임웍에서 제공하는 단위테스트 기능을 이용하여 가라 전문을 날려서 비즈모듈을 테스트해 보고자 한다면 어쩔 수 없이 비즈모듈의 전문(메시지)를 만들어야 하고 이 메시지전문을 컴파일도 해 놔야 할 것이다.
나 같은 경우 비즈모듈의 테스트를 스튜디오에서 제공하는 단위테스트를 이용하지 않고 비즈모듈을 호출하는 가라서비스를 하나 만들어 놓고 이용한다. 이 방법이 더 현실에 가까운 환경하에서 비즈모듈을 실행시켜 보고 결과를 지켜볼 수 있는 확실한 테스트 방법이기 때문이다.
프로프레임 스튜디오에서 구조체를 작성한 다음 해당 구조체의 전문메시지를 생성하는 방법은 아래그림과 같이 Message 생성 탭에서 해당 메시지를 체크하면 된다. FixedLength, delimiter, XML 등의 방법이 제공되고 있다.
예를 들어 FixedLength 를 체크했으면 $PMAPSRCDIR 과 $PMAPINCDIR 에 해당 전문메시지의 헤더와 소스가 생성이 되었을 것이다.
편집: 부분의 콤보박스를 선택하면 해당 전문메시지를 편집할 수 있는 팝업화면이 아래와 같이 뜨게 된다.
엄연히 구조체와 전문메시지가 따로 존재함을 이해했다면 왜 구조체를 컴파일 하는 지 이해했을 것이다. 개발자들이 쉽게 접근할 수 있도록 그냥 구조체 컴파일 한다고 가이드하고 있지만 실제적으로는 구조체를 컴파일 하는 것이 아니라 구조체와 짝으로 별도 존재하는 전문메시지의 소스를 컴파일 하는 것이다.
정리하면 메시지를 생성하고 컴파일이 필요한 경우
1. 서비스모듈의 구조체 ( 단말과 전문을 주고 받는 경우 )
2. 전문변환시 사용하는 구조체( EAI 등과 같이 타 시스템으로 연계를 위하여 ProMapper API 를 이용하여 변환 )
<2008년10월2일>
반응형
'컴퓨터활용 > 티맥스' 카테고리의 다른 글
내가 실행한 마지막 서비스 로그 보기 쉘 (0) | 2009.01.10 |
---|---|
공통모듈의 필러 관리하기 (0) | 2008.10.06 |
모듈정보 재구성 을 해야 하는가? (0) | 2008.09.26 |
모두빌드 기능 사용 정지 시키기 (0) | 2008.09.23 |
VIEW 의 쿼리에디터 폰트 설정 (0) | 2008.09.19 |