EMB Designer
본 장에서는 EMB Designer의 개념적인 이해를 돕기 위해 EMB Designer의 특징과 구성요소에 대해 설명한다.
1. 개요
EMB Designer는 ProFrame의 EMB 기술을 실현시키는 GUI 툴로서 서비스 또는 업무 모듈을 생성하는 데 사용한다. EMB Designer는 스튜디오에 내장되어 있으며, 개발자는 EMB Designer를 이용하여 업무 모듈을 생성하고 여러 모듈들을 조합함으로써 별도의 코딩 없이 다양하고 새로운 서비스를 개발할 수 있다. EMB 모듈을 생성하는 절차와 방법에 상세한 내용은 본 안내서의 EMB 시작하기를 참고한다.
2. 특징
다음은 EMB Designer의 특징과 동시에 이 툴을 사용함으로써 얻게 되는 효과이다.
-
서비스의 비즈니스 로직을 가시화한다.
-
서비스의 설계와 개발
-
업무 및 처리 흐름
-
복잡한 연동 서비스
-
서비스를 분해 및 조립
-
서비스 구현이 용이
-
-
업무간 의존성이 최소화된다.
-
업로 로직이 자산화된다.
-
리소스의 재사용성이 증가된다.
-
MDA(Model Driven Architecture)
EMB Designer를 통해 비즈니스 로직을 가시적으로 모델링하고 이것을 실행 가능한 소스로 변환시켜 사용함으로써 MDA를 구현한다.
구분 설명 Source Generation Engine
EMB Designer를 이용하여 생성된 서비스 플로우는 내부의 Source Generation Engine을 통해 실제 사용 가능한 Skeleton Code로 변환한다.
C Skeleton Code
C Skeleton Code는 Source Generation Engine를 통해 변환된 소스 코드가 하나의 static 함수로 호출되어 워크 플로우를 순차적, 구조적으로 구현하는 C 코드이다.
다시 말해 플로우의 순서에 따른 코드진행, 함수호출, 함수정의 등을 포함하고 있는 C Skeleton Code인데 개발자는 이 Skeleton Code에 약간의 코딩을 추가함으로써 하나의 단위 업무를 처리하는 모듈을 빨리 완성시킬 수 있다. 최종적으로 이러한 모듈들이 조합이 되면 외부에서 호출할 수 있는 하나의 서비스 모듈이 완성된다.
추가적으로 다음은 EMB Designer를 통해 얻게 되는 효과를 역할별로 구분한 설명이다.
| 구분 | 설명 |
|---|---|
설계자 |
서비스의 로직 플로우를 효과적으로 설계할 수 있다. |
실무자 |
해당 업무 흐름을 직관적으로 파악할 수 있다. |
개발자 |
업무 플로우에 따라 생성된 Skeleton Code에 필요한 코드를 추가하여 서비스를 완성하는데 이를 통해 개발시간 단축 및 논리적인 개발이 가능하다. |
3. 구성요소
EMB Designer는 스튜디오에서 만든 모듈뿐만 아니라 TmaxSoft의 ProFactory, ProRule, ProBus 제품 등 다른 시스템에서 생성된 다양한 리소스들과의 연동도 가능하다. 각종 연결 모듈을 마우스로 드래그 앤드 드롭하여 모듈을 생성하고 배치하여 하나의 서비스의 비즈니스 로직 플로우를 완성할 수 있다.
EMB Designer에서는 다음과 같은 모듈을 생성할 수 있다.
-
서비스 모듈
배치 모듈과 함께 ProFrame의 모듈 종류 중 최상위 개념으로써 다른 모듈들을 포함하는 일종의 컨테이너 역할을 수행하는 모듈이다. 하위 모듈이 외부에 서비스의 형태로 공개되지 않는 반면, 서비스 모듈은 외부에 공개되는 하나의 트랜잭션 단위로 구성되며, 호출에 이용되는 하나의 거래 코드를 가지고 있다.
비즈니스 모듈과 DBIO 모듈은 서비스 모듈 내에서 호출되는 방법으로만 접근이 가능하다.
서비스 모듈은 ProFrame에서 제공하는 Resource Pool에 저장된 각종 하위 모듈 또는 동종 모듈을 EMB Designer에서 비즈니스 로직의 플로우 형태로 조합하고 배치하여 하나의 완성된 신규 서비스를 만들 수 있다.
-
비즈니스 모듈
서비스 모듈에서 호출하여 사용되는 모듈로써 실질적인 서비스의 콘텐츠 부분을 담당한다. 단위 비즈니스 모듈을 구분 짓는 요소로는 구현의 복잡성, 사용 용도, 관리의 용이성, Runtime 성능 등이 있으나, 가장 중요한 기준은 재사용성이다. 즉 서비스 내에서 반복적이고 공통적인 부분을 하나의 비즈니스 모듈로 추출하여 재사용하는 것이 성공적인 EMB 사용 여부의 관건이라고 말할 수 있다.
-
선처리 모듈
다른 말로 업무 선처리 모듈이라고 하며, 작성 방식은 비즈니스 모듈과 동일하다. 서비스 모듈을 호출하기 전에 특정한 공통 작업이 있으면 이 모듈을 작성하고 그렇지 않으면 서비스 모듈에서 설정하고 호출하여 사용한다.
-
후처리 모듈
다른 말로 업무 후처리 모듈이라고 하며, 작성 방식은 비즈니스 모듈과 동일하다. 서비스 모듈을 호출한 후 특정한 공통 작업이 있으면 이 모듈을 작성하고 그렇지 않으면 서비스 모듈에서 설정하고 호출하여 사용한다.
-
DBIO 모듈
ProFrame에서는 데이터베이스에 접근하는 모든 기능을 애플리케이션 프로그램과 분리하여 제공한다. 즉, 데이터베이스 접근과 관련된 모든 기능을 별도의 개발 환경 즉 스튜디오에 내장된 DBIO 편집기에서 정의하고, 추상화된 API를 이용하여 각종 모듈에서 사용한다.
-
템플릿 모듈
업무 유형별로 나타나는 반복 처리 또는 공통의 비즈니스 로직 플로우를 템플릿 형태로 만든다. 실제 모듈을 작성할 때 이 템플릿 모듈을 사용하여 신속하게 작업을 처리한다.
-
배치 모듈
업무 내용상 일반적인 서비스로 구성될 수 없고 일괄적이고 동시적인 대량의 작업처리를 할 때 작성하는 모듈이다. 배치 모듈은 외부에 서비스 형태로 공개되며 이 배치 모듈을 호출하기 위해서는 배치 코드가 존재해야 한다.
4. 환경설정
본 장에서는 스튜디오에 내장된 EMB Designer를 사용하는 데 필요한 환경설정 정보를 각각 디자인 편집기와 소스 편집기를 설명한다.
4.1. 디자인 편집기
다음은 스튜디오에서 디자인 편집기의 환경설정 정보를 확인하고 설정하는 과정이다.
-
메뉴 바에서 [창] > [환경설정] > [프로프레임] > [Design Editor]를 선택한다.
-
Design Editor 환경설정 대화상자가 나타나면 변경할 부분을 변경하고 [확인] 버튼을 클릭한다.
Design Editor 환경설정 대화상자를 종료하지 않고 환경설정 정보를 변경하려면 [적용(A)] 버튼을 클릭한다. 만약 설정된 환경설정 정보를 기본값으로 복원할 때는 [기본값 복원(D)] 버튼을 클릭한다.
스튜디오 – Design Editor 환경설정-
노드 설정
플로우 다이어그램에 표현되는 노드의 속성을 설정하는 영역이다.
항목 설명 너비
노드의 너비를 설정한다.
높이
노드의 높이를 설정한다.
폰트
노드 안에 표현되는 글자의 폰트를 설정한다.
-
검색조건 설정
Resource Pool View에서 특정 모듈을 검색할 때 사용되는 옵션에 대한 기본값을 설정하는 영역이다.
다음은 검색조건 설정 영역에 속한 항목 설명이다.
항목 세부 항목 검색 방법
검색하는 방법을 설정한다.
-
자동검색 : 검색어를 입력한 후 몇 초 뒤에 검색결과가 나타난다.
-
수동검색 : 검색어를 입력한 후 [검색] 버튼을 클릭한 경우에만 검색결과가 나타난다.
범위 선택
검색 범위(전체, 사용자)를 설정한다.
검색명칭 선택
리소스를 검색할 명칭을 설정한다.
-
논리명 : 리소스를 논리명으로 검색한다.
-
물리명 : 리소스를 물리명으로 검색한다.
검색어 위치 선택
검색어의 위치 범위를 선택한다.
-
시작 단어부터 : 검색어를 입력했을 때 시작 단어부터 검색한다.
-
입력어 포함 : 입력된 단어까지 포함하여 검색한다.
항목 추가 순서
항목 추가를 상단에 할 것인지 하단에 할 것인지를 선택한다.
-
-
산출물
EMB Designer에서 [산출물로 내보내기] 메뉴를 선택했을 때 산출물이 저장되는 경로를 설정하는 영역이다.
항목 설명 생성 경로
산출물로 내보내기를 실행했을 때 산출물이 저장되는 경로이다.
[경로 찾기] 버튼을 클릭하면 저장할 개발자의 로컬 컴퓨터의 경로를 지정할 수 있다.
산출물 보여주기
산출물의 생성 여부를 선택한다.
-
마법사 옵션
EMB 모듈을 생성하는 신규 서비스모듈 생성 대화상자에 적용될 옵션을 설정하는 영역이다.
-
물리명을 서비스명에 복사
-
물리명을 배치 코드에 복사
-
물리명을 거래 코드에 복사
-
서비스명을 대문자로 변경
-
배치 코드명을 대문자로 변경
-
거래 코드명을 대문자로 변경
-
-
기타 옵션
항목 설명 저장 후 알림 창 보여주기
저장 후 알림 메시지를 알려주는 창이 나타나도록 설정한다.
속성 간단하게 보여주기
각 노드에 마우스 커서를 놓으면 노드의 정보를 툴 팁으로 보여주도록 설정한다.
함수 호출 깊이 보여주기
Call 모듈의 연속적인 호출 수를 계산하여 보여주도록 설정한다. 이때 호출 깊이를 보여주기 위해 Call 모듈의 노드 오른쪽 상단에 빨간색 숫자가 단계마다 표시된다.
매핑노드 삭제할 때 맵핑 삭제
매핑된 Call 모듈를 삭제하는 경우 관련된 매핑 정보를 데이터베이스에서 영구 삭제하도록 설정한다. 이때 Undo를 실행해도 매핑 정보는 복원되지 않는다.
-
4.2. 소스 편집기
다음은 스튜디오에서 소스 편집기의 환경설정 정보를 확인하고 설정하는 과정이다.
-
메뉴 바에서 [창] > [환경설정] > [프로프레임] > [Source Editor]를 선택한다.
-
Source Editor 환경설정 대화상자가 나타나면 변경할 부분을 변경하고 [확인] 버튼을 클릭한다.
스튜디오 – Source Editor 환경설정항목 설명 모듈정보 주석외 더블클릭시 소스이동 안함
모듈정보 주석은 EMB 모듈을 생성할 때 소스 편집기에 자동으로 생성되는 주석을 의미한다. 주석은 "/****…" 와 "****/" 형태로 생성된다. 소스 편집기에서는 이와 같은 모듈정보 주석 영역을 마우스로 더블클릭하면 모듈 편집기의 해당 노드로 이동한다.
체크박스 선택을 해제하면 소스 편집기의 어느 영역을 마우스로 더블클릭해도 근접한 해당 코딩영역의 노드로 이동하게 된다.
모듈정보 주석 컬러 없음
체크박스 선택을 해제하면 모듈정보 주석 부분에 사각형 박스와 색상이 나타난다.
코딩영역 테두리 컬러 없음
체크박스 선택을 해제하면 “//DO_NOT_MODIFY_THIS_LINE…”으로 시작되는 라인들에 대한 소스의 가독성을 높이기 위해 색상을 적용한다.
코딩영역 텍스트 컬러 없음
체크박스 선택을 해제하면 코딩영역 내의 코드 색상이 하위 메뉴에 설정한 대로 변경된다.
텍스트 컬러 설정
위에서 설명한 체크박스를 해제했을 때 각각 해당하는 영역에 적용할 색상을 지정하는 영역이다.
-
코딩영역 텍스트 컬러 : 코딩영역의 텍스트 색상을 설정한다.
-
코딩영역 키워드 컬러 : 코딩영역의 키워드 색상을 설정한다.
-
코딩영역 주석 컬러 : 코딩영역의 주석 색상을 설정한다.
-
코딩영역 상하주석 텍스트 컬러 : 코딩영역의 상하주석 텍스트 색상을 설정한다.
[적용(A)]
Source Editor 환경설정 대화상자를 종료하지 않고 환경설정 정보를 변경한다.
[기본값 복원(D)]
설정된 환경설정 정보를 기본값으로 복원한다.
참고로 Source Editor 환경설정 대화상자에서 체크박스 선택을 모두 해제할 경우 소스 편집기의 내용은 다음과 같이 표시된다.
소스 편집기 화면 예 -
5. 화면 구성
EMB Designer는 서비스 모듈, 비즈니스 모듈, DBIO 모듈 등을 분해 및 조립하는 등의 모듈 편집기의 역할뿐만 아니라 각종 보조 툴을 이용하여 EMB 모듈을 디자인할 수 있는 툴이다.
다음 그림과 같이 3개의 주요 영역(①~③)과 보조 역할을 수행하는 툴인 뷰(④)로 구성된다.
① 모듈 편집기
② Palette
③ 도구 상자
④ 뷰
① 모듈 편집기
EMB Designer 영역 중 모듈 편집기는 EMB 모듈의 플로우 다이어그램을 작성하는 영역이다. 이 영역에서는 다양한 리소스 등을 ②번 영역에서 선택하여 서비스 또는 업무 플로우를 디자인한다.
-
모듈 편집기의 구성요소
모듈 편집기는 EMB 모듈의 플로우 다이어그램을 쉽게 작성할 수 있도록 편집기 왼쪽 하단에 4개의 탭을 제공한다.
탭 설명 design
디자인 편집기는 서비스 또는 업무 플로우를 작성하는 화면이다. 서브 또는 업무 플로우를 가시적으로 볼 수 있기 때문에 EMB 모듈 생성에 용이한 편집기이다.
{물리명}.smd
메타 편집기는 EMB 모듈의 XML 정보를 볼 수 있는 화면이다.
여기서 XML은 ProFrame에서 사용하는 메타 파일이다.
메타 파일 확장자는 아래와 같이 리소스 모듈에 따라 달라진다.
-
서비스 모듈 : {물리명}.smd
-
비즈니스 모듈 : {물리명}.md
-
배치 모듈 : {물리명}.btm
source
소스 편집기는 디자인 편집기에서 작성된 모듈의 소스를 볼 수 있는 화면이다.
header
헤더 뷰어는 작성된 EMB 모듈의 헤더 파일의 내용을 볼 수 있는 화면이다.
-
② Palette
EMB Designer 영역 중 [Palette] 메뉴는 서비스 또는 업무 플로우 작성에 필요한 다이어그램과 리소스들이 나열된 영역이다. 이 영역에서는 모듈 편집기에서 플로우 다이어그램을 작성할 때 각종 노드를 생성하거나 생성된 노드를 연결하는 등의 기능들이 배치되어 있다. 단, RI 리소스를 열었을 경우 수정을 위한 기능(일반 모듈, 호출 모듈, 배치 모듈)은 보이지 않고 각 뷰 보기만 나타나며, Resources 조회 및 호출은 RI 영역 리소스를 대상으로 한다.
| 기능명 | 설명 | |
|---|---|---|
Select |
하나의 노드를 선택할 때 사용한다. |
|
Marquee |
여러 노드를 선택할 때 사용한다. |
|
Connection |
노드 간의 연결 또는 재연결을 할 때 사용한다. |
|
일반 모듈 |
Inner 모듈 |
Inner 모듈을 서비스 또는 업무 플로우 다이어그램에 삽입하는 경우 사용한다. |
가상 모듈 |
가상 모듈을 서비스 또는 업무 플로우 다이어그램에 삽입하는 경우 사용한다. |
|
루프 모듈 |
루프 모듈을 서비스 또는 업무 플로우 다이어그램에 삽입하는 경우 사용한다. |
|
호출 모듈 |
FileIO 루프 모듈 |
FileIO 모듈을 서비스 또는 업무 플로우 다이어그램에 삽입하는 경우 사용한다. (FIleIO Plugin이 설치되었을 경우에만 보임) |
DBIO 호출 |
DBIO 모듈을 서비스 또는 업무 플로우 다이어그램에 삽입하는 경우 사용한다. |
|
BM 호출 |
Business 모듈을 서비스 또는 업무 플로우 다이어그램에 삽입하는 경우 사용한다. |
|
배치 모듈 |
Tx Begin |
TX Begin 처리하는 경우 사용한다. (배치 에디터의 경우에만 보임) |
Tx Commit |
TX 커밋 처리하는 경우 사용한다. (배치 에디터의 경우에만 보임) |
|
Tx Rollback |
TX 롤백 처리하는 경우 사용한다. (배치 에디터의 경우에만 보임) |
|
DB Commit |
DB 커밋 처리하는 경우 사용한다. (배치 에디터의 경우에만 보임) |
|
DB Rollback |
DB 롤백 처리하는 경우 사용한다. (배치 에디터의 경우에만 보임) |
|
배치 호출 |
배치 모듈을 서비스 또는 업무 플로우 다이어그램에 삽입하는 경우 사용한다. |
|
특성 뷰 보기 |
선택된 모듈의 속성정보를 확인하거나 설정할 때 사용한다. |
|
변수 뷰 보기 |
모듈에서 사용되는 각종 변수 목록을 보여준다. |
|
매핑 뷰 보기 |
모듈에서 사용되는 각종 매핑 목록을 보여준다. |
|
가상 함수 뷰 보기 |
개발자가 인자의 정보를 정의할 수 있는 일반 함수를 생성하여 서비스 또는 업무 플로우 다이어그램에서 사용한다. |
|
리소스풀 뷰 보기 |
각종 리소스를 검색할 때 쓰인다. |
|
모듈 찾기 뷰 보기 |
모듈 내에서 사용되는 각종 호출 모듈을 검색할 때 사용한다. |
|
③ 도구 상자
EMB Designer 영역 중 도구상자는 서비스 또는 업무 플로우를 작성할 때 자주 사용되는 기능들을 모아서 단축 아이콘 형태로 제공하는 영역이다. 예를 들어 상수 정의, 변수 정의, 단위 테스트 등과 같은 기능을 단축 아이콘으로 제공하여 신속하게 메뉴를 실행한다.
다음은 도구 상자에 대한 설명이다.
| 아이콘 | 설명 |
|---|---|
|
모듈의 입력 구조체를 설정 또는 변경하는 대화상자를 나타낸다. 이 아이콘은 최상위의 시작 노드를 선택했을 때 활성화된다. |
|
모듈의 출력 구조체를 설정 또는 변경하는 대화상자를 나타낸다. 이 아이콘은 최상위의 시작 노드를 선택했을 때 활성화된다. |
|
선택된 노드의 예외처리를 설정한다. 시작 노드나 Inner 모듈을 선택했을 때 활성화된다. |
|
CommBuff를 정의하는 대화상자를 나타낸다. 모듈 편집기 화면을 클릭했을 때 활성화된다. |
|
상수를 정의하는 대화상자를 나타낸다. 모듈 편집기 화면을 클릭했을 때 활성화된다. |
|
컨텍스트를 정의하는 대화상자를 나타낸다. 모듈 편집기 화면을 클릭했을 때 활성화된다. |
|
구조체를 정의하는 대화상자를 나타낸다. 모듈 편집기 화면을 클릭했을 때 활성화된다. |
|
지역 변수를 정의하는 대화상자를 나타낸다. 시작 노드나 Inner 모듈을 선택했을 때 활성화된다. |
|
루프 선후처리를 설정하는 대화상자를 나타낸다. Loop 모듈을 선택했을 때 활성화된다. |
|
소스 파일에 삽입할 코드를 작성할 수 있는 대화상자를 나타낸다. Virtual 모듈을 선택했을 때 활성화된다. |
|
Call 모듈의 입력 매핑을 설정할 수 있는 대화상자를 나타낸다. Call 모듈을 선택했을 때 활성화된다. (현재 버전에서는 지원하지 않으며 Bypass만 사용 가능) |
|
현재 에디터가 열려 있는 몯류의 입력 매핑을 설정할 수 있는 대화상자를 나타낸다. EMB에서 다른 모듈외의 공간을 선택했을 때 활성화된다. (현재 버전에서는 지원하지 않음) |
|
Call 모듈의 출력 매핑을 설정할 수 있는 대화상자를 나타낸다. Call 모듈을 선택했을 때 활성화된다. (현재 버전에서는 지원하지 않으며 Bypass만 사용 가능) |
|
현재 에디터가 열려 있는 모듈의 출력 매핑을 설정할 수 있는 대화상자를 나타낸다. EMB에서 다른 모듈외의 공간을 선택했을 때 활성화된다. (현재 버전에서는 지원하지 않음) |
|
같은 부모 노드 아래 여러 개의 모듈을 선택했을 때 활성화된다. 이 모듈들을 XOR 설정을 하거나 해제할 때 사용한다. |
|
소스검사를 실행한다. 모듈 편집기 화면을 클릭했을 때 활성화된다. |
|
Fetch 실행 노드를 추가할 때 사용하는 아이콘이다. DBIO 모듈을 선택했을 때 활성화된다. |
|
모듈을 재구성할 때 사용하는 아이콘이다. Call 모듈을 선택했을 때 활성화된다. |
|
선택된 노드를 클립보드에 복사한다. |
|
선택된 노드 아래 클립보드에 복사된 노드를 붙여 넣는다. |
|
선택된 노드를 삭제한다. |
|
선택된 모듈의 단위 테스트를 실행하는 아이콘이다. |
|
로그 보기를 시작한다. |
|
로그 보기를 멈춘다. |
|
Undo를 실행한다. |
|
Redo를 실행하는 아이콘이다. |
|
Call 모듈의 하위 노드들까지 모두 펼쳐서 보여준다. 이때 하위 노드들은 모듈 편집기에서 읽기 전용 상태이므로 조회만 가능하다. |
|
모듈 편집기 화면을 확대한다. |
|
모듈 편집기 화면을 축소한다. |
|
소스 생성을 실행한다. 모듈 편집기 화면을 클릭했을 때 활성화된다. |
④ 뷰
EMB 모듈의 세부 정보 또는 모듈 간의 매핑 정보 및 등록된 리소스를 검색하는 등의 기능을 제공하는 영역이다. 예를 들면 가상 함수 뷰, 변수 뷰, 리소스풀 뷰 등이 있다.
특성 뷰는 작성된 EMB 모듈의 중요한 속성정보를 확인하거나 재설정할 때 필요한 기능이다.
특성 뷰를 나타나게 하는 방법은 EMB Designer 영역 중 [Palette] 메뉴의 [특성 뷰 보기]를 클릭하거나 스튜디오의 [창] > [보기 표시(V)] > [특성] 메뉴를 선택한다.
다음은 서비스 모듈에 대한 특성 뷰의 속성이다.
| 분류 및 속성 | 설명 | |
|---|---|---|
Build |
Makefile |
서비스 모듈을 빌드할 때 사용할 Makefile을 Makefile edit 대화상자를 통해 작성하고 저장한다. |
ComBuf |
Commbuf |
CommBuff 변수를 설정할 수 있는 CommBuff 정의 대화상자가 나타난다. |
Constant |
Constant |
상수를 설정할 수 있는 상수 정의 대화상자가 나타난다. |
Context |
Context |
컨텍스트를 설정할 수 있는 컨텍스 정의 대화상자가 나타난다. |
Header |
Include header |
헤더 파일을 추가적으로 설정할 수 있는 Include header edit 대화상자가 나타난다. 이 대화상자에서 추가하고 싶은 헤더 파일을 입력한다. |
Post Processing |
Post process input mapping |
후처리 모듈과 선택된 서비스 모듈 간의 입력 매핑을 설정한다. |
Post process module |
후처리 모듈을 검색한 후 설정한다. |
|
Post process output mapping |
후처리 모듈과 선택된 서비스 모듈 간의 출력 매핑을 설정한다. |
|
Pre Processing |
Pre process input mapping |
선처리 모듈과 선택된 서비스 모듈 간의 입력 매핑을 설정한다. |
Pre process module |
선처리 모듈을 검색한 후 설정한다. |
|
Pre process output mapping |
선처리 모듈과 선택된 서비스 모듈 간의 출력 매핑을 설정한다. |
|