온라인 프로그램 작성
온라인 프로그램은 ProFrame에서 서비스 모듈의 형태로 작성된다. 따라서 본 장에서는 서비스 모듈을 작성하는 방법에 대해 설명한다.
1. 서비스 모듈 생성 절차
서비스 모듈을 생성하기 위해서는 서비스 모듈 이름을 정한 후 TP-Monitor에 이 이름과 동일한 서비스를 등록해야 한다.
다음은 서비스 모듈을 생성하는 절차이다.
-
입출력 구조체 작성
-
서비스 모듈 구현
-
컴파일 및 Hot Deploy
-
단위 테스트 및 디버깅
2. 입출력 구조체 작성
서비스 모듈의 입출력 구조체를 작성하기 위해서는 입출력 전문의 데이터 포맷에 맞게 구조체를 생성해야 한다.
입출력 구조체 정의
입출력 구조체를 생성하면 EMB Designer의 소스 편집기에 다음과 같이 정의된 입출력 구조체의 매크로가 나타난다.
#define INPUT (context->input) #define OUTPUT (context->output)
매크로는 생성된 서비스 모듈의 헤더 파일에 정의되어 있으므로 프로그램에서는 INPUT→grid[0].name과 같이 사용할 수 있다.
위 그림에서 Include된 구조체가 있는 경우 구조체부터 컴파일하고 Dludpate를 한다. 만약 구조체가 변경되었을 때(구조체 멤버가 추가되거나 삭제 또는 길이가 변경되었을 때)는 반드시 다시 전문을 생성하고 컴파일 및 Dlupdate를 해야 한다. 다시 말해 구조체가 변경되면 구조체를 사용하는 모든 프로그램에 대해서 컴파일하고 Dlupdate되어야 한다.
|
구조체 생성에 대한 자세한 내용은 ProFrame ProMapper 개발 안내서를 참고한다. |
-
입출력 구조체의 제약사항
단말과의 원활한 통신을 위해 하위 구조체는 1레벨까지만 Include한다. 따라서 Include된 구조체는 다른 구조체를 Include해서는 안 된다. 배열의 경우 가변처리를 위해 데이터 건수를 지정할 수 있는 항목을 준비해야 한다.
-
입출력 구조체의 컴파일
서비스 모듈의 입출력 구조체는 전문 통신을 하기 때문에 반드시 컴파일이 필요하다. Include된 하위 구조체는 별도로 컴파일할 필요가 없으며 직접 사용되는 입력 구조체와 출력 구조체만 컴파일 및 Dlupdate한다. 이때 컴파일되는 것은 구조체의 헤더 파일이 아니라 각 구조체마다 하나씩 생성되는 전문 변환 소스인 ~MsgFld.c 파일이다.
전문 생성
서비스 모듈에 등록된 구조체는 저장 후 반드시 전문을 생성해야 한다.
전문을 생성하는 방법은 ProMapper 편집기의 전문 생성 화면에서 FixedLength 등의 전문 타입을 선택하고 선택한 전문 타입에 따라 전문을 편집한 후 저장하면 된다. 다양한 채널에서 들어오는 전문을 구조체로 변환하기 위해서는 구조체를 컴파일하고 Dlupdate를 실행해야 한다.
|
전문 생성에 대한 자세한 내용은 ProFrame ProMapper 개발 안내서를 참고한다. |
-
숫자 타입의 전문 길이 지정
구조체 작성이 끝나면 전문 편집 대화상자를 실행하여 숫자는 +1, 소수점이 있는 숫자는 +2하여 필드 길이를 지정해 주어야 한다. 이것은 부호를 포함한 길이를 확보하기 위해서다.
3. 서비스 모듈 구현
서비스 모듈을 생성하려면 작업영역 내비게이터에서 오른쪽 마우스 버튼을 클릭한 후 [New] > [EMB Design] 메뉴를 선택한다.
3.1. 신규 서비스 모듈 생성
아래 그림과 같이 신규 서비스 모듈 생성 대화상자가 나타난다.
다음은 대화상자의 각 항목에 대한 설명이다.
| 항목 | 설명 |
|---|---|
리소스타입 |
생성할 모듈의 타입을 설정한다. 여기서는 'Service Module’를 선택한다. |
논리명 |
특수문자(공백문자 및 {, }, \ 등)를 사용하지 않는다. |
물리명 |
특수문자(공백문자 및 {, }, \ 등)를 사용하지 않는다. |
리소스 그룹 |
생성할 서비스 모듈이 포함될 리소스 그룹이다. |
라이브러리 경로 |
생성할 서비스 모듈이 참조하는 라이브러리 경로를 설정한다. |
거래 코드 |
필수 입력항목으로 반드시 대문자로 입력한다. 서비스 모듈의 업무 특성을 정의한 파라미터 키 값이다. |
서비스명 |
필수 입력항목으로 반드시 대문자로 입력한다. 서비스 모듈로 등록될 TP-Monitor의 서비스명이다. |
3.2. EMB Designer 사용
이전 절에서 서비스 모듈 생성에 필요한 기본 정보를 등록하면 다음과 같이 서비스 모듈을 작성할 수 있는 EMB Designer가 나타난다.
EMB Designer에는 서비스 모듈을 작성하기 위한 가장 기본이 되는 노드가 존재한다. 기본 노드를 시작으로 기존에 작성된 모듈들을 연결하여 서비스 플로우를 작성한다. EMB 모듈은 GUI 기반으로 작성된다. 기존에 생성된 리소스를 EMB Designer에 드래그 앤드 드롭한다든지 아니면 [Palette] 메뉴를 이용한다든지 하는 방법을 통해 서비스 모듈의 업무 흐름을 디자인할 수 있다.
|
EMB Designer에 대한 내용은 ProFrame EMB 개발 안내서를 참고한다. |
다음은 EMB Designer에서 리소스 모듈을 배치하는 방법이다.
-
내비게이터 영역
내비게이터는 운영영역 리소스를 확인할 수 있는 프로프레임 내비게이터와 작업영역 리소스를 확인할 수 있는 작업영역 내비게이터가 존재한다. 각각의 내비게이터에 있는 프로바이더를 기준으로 리소스를 선택하여 EMB Designer의 모듈 편집기에 연결할 노드 위치로 드래그 앤드 드롭하여 배치한다. 이때 삽입되는 노드 위치에 따라 자동으로 리소스 모듈이 이동하고 프로프레임 내비게이터에서 모듈을 드래그 앤드 드롭하면 운영영역 리소스를 참조하고, 작업영역 내비게이터에서 드래그 앤드 드롭하면 작업영역의 리소스를 참조하게 된다.
작업 영역의 리소스는 모듈명 텍스트에 'WS -'가 표시되어 쉽게 확인할 수 있다.
EMB Designer -
[Palette] 메뉴
[Palette] 메뉴를 이용하여 배치할 모듈을 선택한다. 해당 메뉴에는 모듈과 모듈을 연결하거나 선택하는 기능이 있다.
Palette 메뉴메뉴 설명 Select
EMB Designer에 배치된 리소스 또는 모듈을 선택할 때 사용한다.
Marquee
여러 개의 모듈을 선택할 때 사용한다.
connection
업무처리 흐름을 나타내기 위해 리소스와 모듈들을 연결할 때 사용한다.
Inner 모듈
여러 모듈이 동시에 사용하는 변수를 설정하거나 모듈의 진입조건, 예외처리 등을 설정하기 위해 사용한다.
가상 모듈
입출력이 없는 단순한 코딩을 업무 플로우에 삽입할 때 사용한다.
루프 모듈
여러 모듈이 반복하여 수행해야 할 경우에 사용한다.
3.3. IM, VM, LM 사용
[Palette] 메뉴에서 IM(Inner Module), VM(Virtual Module), LM(Loop Module)과 같은 모듈을 삽입하는 방법은 다음과 같다. 삽입할 모듈을 선택한 후 EMB Designer의 모듈 편집기에 배치할 위치로 이동한다.
-
루프 선후처리
LM의 경우는 다른 모듈과는 다르게 루프 선후처리를 수행해야 한다. 선후처리는 반복을 어떤 명령어로 수행할 것인지, 몇 번을 반복할 것인지, 어떤 경우에 루프를 빠져 나올 것인지에 대한 내용을 작성한다.
LM의 루프 선후처리 -
진입조건
각각의 모듈에는 진입조건을 설정하여 특정한 경우에만 실행되게 할 수 있다. 진입조건을 설정하는 방법은 설정하려는 모듈 위에서 오른쪽 마우스 버튼을 누르면 나타나는 메뉴 중 [진입조건]을 선택해서 설정한다.
진입조건 대화상자가 나타나면 진입조건 텍스트박스에 진입조건을 입력한다. 이때 입력하는 방법은 직접 입력하거나 진입조건 대화상자 화면 하단에 있는 변수와 연산자를 조합하여 생성한다.
진입조건 대화상자위와 같이 진입조건을 모두 작성하면 다음과 같은 소스 코드가 생성된다.
If(context->input->item > 0) { /********************* * KIND: Intermediary Module Function Call * NODE ID: 1 * NAME: Inner Module * COMMENTS: **********************/ PFM_TRY(innerModule(context)); }
4. 컴파일, Dlupdate
서비스 모듈 구현이 완료되면 스튜디오에서 [컴파일] 메뉴를 실행하여 소스 컴파일을 실행하고, Hot Deploy를 실행하기 위해 [Dlupdate] 메뉴를 실행한다.
서비스 모듈이 정상적으로 동작하기 위해서는 반드시 모듈을 컴파일하고 Dlupdate해야 한다. 생성된 입출력 구조체도 마찬가지이다.
5. 단위 테스트 및 디버깅
컴파일 및 Hot Deploy 실행 결과가 정상이면 테스트 프레임워크를 이용하여 단위 테스트를 수행한다. 단위 테스트를 수행하는 방법은 스튜디오에 내장된 단위 테스트 기능을 실행한다.
|
단위 테스트 기능에 대한 내용은 ProFrame 단위 테스트 안내서를 참고한다. |
만약 단위 테스트 후에 서비스 모듈에 문제가 발생하면 디버깅 과정을 통해 해결한다. 여기서 디버깅은 서비스 모듈을 생성하는 절차를 검증하는 과정이다.