티스토리 뷰
프로프레임에서 서비스 - 서비스간 연동방식은 크게 Local/Remote, Sync/Async, 1-tx/n-tx 로 나뉜다.
Local call은 tdl 공유 메모리의 shared library를 호출하는 Dlcall 방식, Remote call은 TMAX 미들웨어에 등록된 tcs 서비스를 호출하는 tpcall 방식이다.
Local call 의 경우 Sync, 1-tx 방식만 가능하고
Remote call의 경우 XA방식이 아닌 Non-XA 방식으로 TP서버가 구성되어 있다면 n-tx 방식만 가능하다.
위의 설정들은 call property만 수정하는것으로 간단하게 설정 가능하지만
Async Reply 방식으로 서비스연동을 할 경우 추후에 reply 를 받아오기 위해서 추가적인 개발 과정이 필요하다.
다음은 Async reply 서비스연동후 reply 를 받아오는 예제이다.
해당 예제는 proframe c 5 / TMAX 5 (Non-XA) 환경에서 작성하였다.
주의사항
Async reply 연동이기 때문에 반드시 Remote, n-tx 방식을 사용해야 한다.
주의할 점은 n-tx 처리를 위해 주연동 서비스(호출하는 서비스)와 피연동 서비스(호출당하는 서비스)는 tcs 서버명이 달라야한다.
주연동(sfw200015)의 tcs 서버가 TPFM01 이라면 피연동(sfw200002)서비스는 TPFM01이 아닌 다른 서버에 등록되어야 한다. (예제에서는 TPDONGMIN에 등록)
연동한 서비스모듈 클릭 후 특성창의 Call Property를 다음과 같이 변경한다
Async 호출 후 getReply는 pfmServiceMoudleCallGetReply() api를 dlcall 하여 가져온다.
pfmTpGetReply2() api를 직접 사용하는 방식은 combuff의 데이터가 넘어오기 때문에 결과값을 직접 다루기가 힘들다.
PFM_TRYNJ(pfmDlCall( "pfmServiceModuleExt", "pfmServiceModuleCallGetReply", &input, &output ));
&input은 dlcall 의 입력구조체 주소값 이다.
pfmServiceModuleCallGetReply( long *cd, void *output ) 함수를 호출하기 위해
cd 필드를 가진 구조체를 만든다.
&ouput은 reply 값을 담기 위한 연동서비스의 출력구조체 주소값 이다.
위 api의 argument로 사용될 input, output 구조체 변수를 정의한다.
아래와 같이 구조체 변수가 선언된 것을 확인할 수 있다.
연동된 서비스의 입력값을 셋팅해주고
서비스 호출 뒤 출력값 셋팅부에서는 출력값 셋팅대신 서비스연동에서 사용된 TPCALL 의 cd (call descripter)값을 구하여 저장한다.
서비스연동 호출후 cd 값만 따로 저장하고 다른작업을 수행 후 get reply 를 한다.
연속해서 서비스연동 호출을 할경우 cd 값이 계속 변하기 때문에 추후에 각 서비스별 reply를 구별하기 위해서는 각각의 cd 값을 따로 저장해줘야 한다.
예제에서는 다음과 같이 함수 호출하여 reply 값을 구조체에 저장한다.
PFM_TRYNJ(pfmDlCall( "pfmServiceModuleExt", "pfmServiceModuleCallGetReply", &reply_input, &svc_out ));
svc_out 구조체에 저장된 값을 주연동 서비스의 출력구조체로 strcpy 한다. (혹은 다른 필요 로직을 추가 수행)
단위테스트 결과 정상적으로 async 호출된 서비스값을 받아온 것을 확인할 수 있다.
위의 예제 소스는 다음 링크에서 확인 가능하다.
'Framework > ProFrame' 카테고리의 다른 글
[ProFrame] JeusServerLog 내것만 확인하기 (0) | 2018.12.05 |
---|---|
[ProFrame] 스튜디오 Java path 변경 (0) | 2018.12.03 |
[ProFrame 5C 예제] 1. 시작하기 (4) | 2018.11.30 |
[ProFrame 예제 실습] 상주배치 만들기 (0) | 2018.11.23 |
[ProFrame C] 출력전문 data 밀림현상 (10byte 000000000) (0) | 2018.11.06 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Terraform GCP
- oracle
- AWS 문화
- 아마존 입사
- GCP 자격증 후기
- AWS TECH U
- 프로프레임
- AWS 신입
- AWS 후기
- 뱅크샐러드 면접
- AWS 면접
- AWS 인터뷰
- GCP 이직
- AWS 신입 채용
- SA란
- dbio
- AWS 취업 후기
- 2022 회고
- 구글 입사 후기
- ProFrame
- AWS 이직
- 오라클
- AWS Associate Solution Architect
- Terraform
- 아마존 이직
- TECH U ASA
- AWS 입사
- gcp 자격증
- 구글 이직
- expect 스크립트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함