서비스 플로우 에디터
본 장에서는 AnyLink 스튜디오의 서비스 플로우 에디터의 기능과 사용법에 대해 설명한다.
1. 개요
서비스 플로우는 서비스의 수행 절차를 그래프로 표현한 것이다. 서비스 플로우 다이어그램(SFDL: Service Flow Definition Language) 파일을 생성하기 전에 AnyLink 프로젝트가 생성되어 있어야 한다. 서비스 플로우의 수신(Receive) 메시지 이벤트들이 AnyLink의 내부 서비스로 등록된다. 대부분 AnyLink 내부 서비스는 서비스 플로우의 메시지 이벤트이며, 플로우에 정의된 흐름을 따라 진행 후 플로우의 서비스 액티비티를 호출하게 된다.
2. 서비스 플로우 에디터 생성
서비스 플로우 생성은 왼쪽 프로젝트 네비게이터의 컨텍스트 메뉴에서 [새로만들기] > [플로우]를 선택한다. 플로우 다이어그램에서 각 항목을 설정하고 [Finish] 버튼을 클릭한다.
항목 | 설명 |
---|---|
플로우 아이디 |
서비스 플로우 리소스 아이디를 입력한다. 영어, 숫자, 특수문자(_)만 사용이 가능하며 첫 글자는 영어로 입력한다. |
플로우 이름 |
사용할 플로우명을 입력한다. 한글, 영어, 숫자, 특수문자 입력이 가능하다. 플로우 이름은 XML Naming Convention을 따른다. |
3. 서비스 플로우 다이어그램
서비스 플로우를 생성하면 기본 화면이 나오며 오른편에 다이어그램을 추가할 수 있는 팔레트와 편집창 상단 툴바가 있다.
-
[툴바]
툴바는 플로우 다이어그램의 정렬, 화면 표시방법 및 디버거 동작을 위한 버튼으로 구성된다.
서비스 플로우 화면 - 툴바버튼 설명 다이어그램을 왼쪽으로 정렬한다.
다이어그램을 오른쪽으로 정렬한다.
다이어그램을 위쪽으로 정렬한다.
다이어그램을 아래쪽으로 정렬한다.
다이어그램을 중앙(상하)으로 정렬한다.
다이어그램을 중앙(좌우)으로 정렬한다.
다이어그램들의 수평 거리를 일정하게 정렬한다.
다이어그램을 수직 거리를 일정하게 정렬한다.
다이어그램을 ID/Name 표시를 변경한다.
Transition Condition 표시 유무를 변경한다.
디버거 모드를 실행시킨다. 서버 선택 다이얼로그가 나타난다.
디버깅을 위한 메시지 설정 다이얼로그가 나타난다.
(13번째 아이콘)
현재 디버거 상태를 조회한다.
디버거를 다음 액티비티로 이동시킨다.
디버거를 다음 Break Point로 이동시킨다.
디버거를 플로우 끝까지 이동시킨다.
디버거가 Running 상태인 경우 다음 액티비티에서 정지시킨다.
(18번째 아이콘)
디버거 상태를 나타내는 아이콘이다. (버튼 아님)
마우스 포인터를 'Selection' 상태로 변경한다.
마우스 포인터를 'Transition' 상태로 변경한다.
-
[팔레트]
팔레트는 서비스 플로우에서 제공하는 서비스 플로우 다이어그램이다.
서비스 플로우는 프로세스(Process)라고도 부르며, 액티비티, 이벤트와 트랜지션으로 구성된다. 원하는 객체를 클릭하여 에디터 영역에 올려 사용한다.
서비스 플로우 화면 - 팔레트구분 설명 Selection, Transition
-
(Select) : 트랜지션 설정을 종료한다.
-
(Transition) : 트랜지션은 액티비티 또는 이벤트들 간의 흐름의 순서를 나타내는 화살표이다. 에디터의 각 객체를 연결할 수 있다. 각 단위 액티비티 간의 흐름을 표시하는 것으로서, 실제로 업무 프로세스의 흐름을 액티비티, 이벤트, 게이트웨이 간 연결하여 표시한다. 트랜지션의 또 하나의 기능은 게이트웨이 이후에 조건에 따라 업무 흐름을 결정할 때 조건을 설정하는 것이다.
액티비티(Activity)
작업(Task)이라고도 부르며, 서비스 플로우에 해당 위치로 흐름이 도달하게 되면 실행해야 할 어떤 일들을 표현한다.
플로우에 그려진 서비스 액티비티는 대부분 어댑터의 아웃바운드 룰 서비스를 의미한다. 자세한 설명은 액티비티를 참고한다.
이벤트(Event)
사건을 나타내는 특별한 액티비티로 메시지, 에러, 타임아웃 등의 사건을 나타낸다.
이벤트는 전후 트랜지션 유무에 따라 들어오는 트랜지션이 없는 시작 이벤트(Start Event), 들어오는 트랜지션과 나가는 트랜지션이 모두 있는 중간 이벤트(Intermediate Event), 나가는 트랜지션이 없는 끝 이벤트(End Event)로 구분할 수 있다. 자세한 설명은 이벤트를 참고한다.
게이트웨이(Gateway)
흐름을 제어하는데 사용되는 특별한 액티비티 형태라고 생각할 수 있다.
크게 하나의 트랜지션 흐름을 여러 개의 트랜지션 흐름으로 분리시켜주는 스플릿 게이트웨이(Split Gateway)와 그 반대로 여러 개의 트랜지션 흐름을 하나의 트랜지션 흐름을 합쳐주는 조인 게이트웨이(Join Gateway)가 있다. 자세한 설명은 게이트웨이를 참고한다.
스웜레인 / 블록 / Annotations
-
스웜레인 : 서비스 플로우 상의 Task를 구분해주는 선을 나타낸다.
-
블록 : 특정 구역을 묶어서 표한하기 위해 사용되는 액티비티 묶음이다.
-
Annotations : 플로우의 메모 기능을 제공하기 위한 객체이다.
자세한 설명은 스웜레인 / 블록 / ANNOTATIONS를 참고한다.
Utility
서비스 플로우에서 사용되는 Utility이다. 자세한 설명은 Utility를 참고한다.
-
4. 액티비티
다음은 액티비티의 종류에 대한 설명이다.
0메뉴 | 설명 |
---|---|
(TCP 액티비티) |
TCP 아웃바운드 룰 서비스를 호출할 수 있는 액티비티이다. |
(유저 클래스 액티비티) |
유저 클래스를 사용할 수 있는 액티비티이다. |
(매핑 액티비티) |
Source와 Target 변수를 설정하여 매핑해 주는 액티비티이다. |
(응답 메시지 액티비티) |
서비스의 응답 메시지로 사용할 수 있는 액티비티이다. 이벤트 메시지의 요청 메시지로부터 응답 메시지를 보내준다. 정상 응답과 오류 응답 2개의 형태로 구현할 수 있다. |
(서브 플로우 액티비티) |
다른 서비스 플로우 프로세스를 호출하는 액티비티이다. |
(멀티바인딩 액티비티) |
멀티바인딩 서비스를 호출할 수 있는 액티비티이다. |
(HTTP 액티비티) |
HTTP 아웃바운드 룰 서비스를 호출할 수 있는 액티비티이다. |
(웹서비스 액티비티) |
웹 서비스 형태로 만들어진 서비스를 import하여 사용할 수 있는 액티비티이다. |
(TMAX 액티비티) |
미들웨어인 Tmax와 관련된 서비스를 호출할 수 있는 액티비티이다. |
(DB 액티비티) |
DB 어댑터 서비스를 호출할 수 있는 액티비티이다. |
(파일 액티비티) |
File 어댑터 서비스를 호출할 수 있는 액티비티이다. |
(FTP 액티비티) |
FTP 어댑터 서비스를 호출할 수 있는 액티비티이다. |
(배치 액티비티) |
배치 아웃바운드 룰을 호출할 수 있는 액티비티이다. |
(MQ 액티비티) |
MQ 아웃바운드 룰을 호출할 수 있는 액티비티이다. |
(SAP 액티비티) |
SAP 아웃바운드 룰을 호출할 수 있는 액티비티이다. |
(SMTP 액티비티) |
SMTP 아웃바운드 룰을 호출할 수 있는 액티비티이다. |
(WebDav 액티비티) |
WebDav 아웃바운드 룰을 호출할 수 있는 액티비티이다. |
(Tuxedo 액티비티) |
Tuxedo 아웃바운드 룰을 호출할 수 있는 액티비티이다. |
(JMS 액티비티) |
JMS 아웃바운드 룰을 호출할 수 있는 액티비티이다. |
(ISO8583 액티비티) |
ISO8583 아웃바운드 룰을 호출할 수 있는 액티비티이다. |
(UDP 액티비티) |
UDP 아웃바운드 룰을 호출할 수 있는 액티비티이다. |
(ProObject 액티비티) |
ProObject 아웃바운드 룰을 호출할 수 있는 액티비티이다. |
액티비티는 입력, 출력에 해당하는 파라미터를 가진다.
입력 파라미터는 해당 액티비티가 읽기 위해 사용하는 변수이고, 출력 파라미터는 해당 액티비티가 쓰기 위해 사용하는 변수이다. 두 변수 모두 프로세스나 액티비티를 둘러싼 블록 액티비티에 선언된다.
4.1. 액티비티 설정
액티비티를 에디터 화면으로 갖고 온 뒤 더블클릭 또는 마우스를 객체 위로 올리면 나타나는 Activity Preference 화면에서 액티비티 설정을 할 수 있다.
메뉴 | 설명 | 메뉴 | 설명 |
---|---|---|---|
일반정보 |
Loop 설정 |
||
파라미터 설정 |
복사 |
||
핸들러 설정 |
삭제 |
기본 정보
다음은 활성화된 Activity Preference 화면에 대한 설명이다.
항목 | 설명 |
---|---|
ID |
해당 객체의 아이디를 입력할 수 있는 항목이다. |
Name |
해당 객체 이름을 알려주는 항목이다. |
Description |
해당 액티비티의 역할을 간략하게 나타낸다. |
Documentation |
해당 액티비티에 대한 설명으로 사용자의 편의를 위한 항목이다. |
Session ID |
입력한 Session ID를 가지는 다른 액티비티, 이벤트들과 동일한 세션으로 연결하기 위한 항목이다. |
Session Key |
입력한 세션 키를 가지는 세션으로 연결하기 위한 항목이다. TCP 액티비티에서만 설정 가능하다. |
엔드포인트 라우팅 |
매핑에서 설정된 VALUE를 가진 엔드포인트나 엔드포인트 그룹에 라우팅을 하기 위한 항목이다. 아웃바운드룰에서 설정한 엔드포인트 그룹이 WebAdmin의 [구성관리] > [어댑터]의 엔드포인트 그룹에서 매핑으로 설정되어 있어야 한다. 하위 엔드포인트/엔드포인트 그룹의 VALUE 설정시 해당 엔드포인트로 요청메시지가 전달된다. |
Address 동적변경 |
TCP 클라이언트인 경우 요청할 대상의 IP, Port를 동적으로 변경하기 위한 항목이다. |
URL 동적변경 |
HTTP 아웃바운드의 경우 요청할 대상의 IP, Port를 동적으로 변경하기 위한 항목이다. |
Location |
객체의 위치를 나타내는 x, y 좌표값이다. 좌표 설정을 통해 액티비티의 위치를 변경할 수 있지만, 에디터에서 마우스 드래그를 통해 옮기는 것을 추천한다. |
Width |
객체의 위치를 나타내는 값으로, Location과 마찬가지로 에디터에서 드래그로 크기를 조절 가능하다. |
라인 색상 변경 |
객체의 외곽 라인 색상을 변경시킬 수 있는 항목이다. |
폰트 색상 변경 |
객체의 글자 폰트 색상을 변경시킬 수 있는 항목이다. |
아웃바운드 룰(서비스) 설정
다음은 Activity Preference 화면의 [아웃바운드 룰(서비스) 설정]에 대한 설명이다.
항목 | 설명 |
---|---|
호출서비스 |
사전에 생성한 아웃바운드 룰 서비스를 검색하여 적용시킬 수 있는 항목이다. 단, 액티비티에 맞는 아웃바운드 룰을 적용시켜야 한다. [Browse...] 버튼을 클릭하면 서비스를 검색할 수 있는 다이얼로그가 생성된다. |
전송모드 |
|
매핑 설정 |
매핑과 관련된 내용은 매핑 관련 다이얼로그를 참조한다. |
로그 OFF |
해당 액티비티에 대한 로그를 OFF한다. |
요청 커스텀 로깅 |
요청 커스텀 로깅을 사용한다. [Browse...] 버튼을 클릭하면 커스텀 로그 아웃바운드 룰을 설정하고 [Mapping...] 버튼을 클릭해서 매핑을 설정한다. |
응답 커스텀 로깅 |
응답 커스텀 로깅을 사용한다. [Browse...] 버튼을 클릭하면 커스텀 로그 아웃바운드 룰을 설정하고 [Mapping...] 버튼을 클릭해서 매핑을 설정한다. |
에러 커스텀 로깅 |
에러 커스텀 로깅을 사용한다. [Browse...] 버튼을 클릭하면 커스텀 로그 아웃바운드 룰을 설정하고 [Mapping...] 버튼을 클릭해서 매핑을 설정한다. |
Skip 조건
다음은 Activity Preference 화면의 Skip 조건에 대한 설명이다.
항목 | 설명 |
---|---|
Skip 사용 |
Skip 항목을 선택하면 프로세스 변수에대한 Skip 조건을 사용할 수 있다. |
Skip 조건 |
선택한 변수에 대한 조건문을 작성해 주어야 한다. [변수 선택] 버튼을 클릭하면 프로세스 변수를 선택할 수 있는 Select Variable 화면(Activity Preference 화면 - Select Variable 화면)이 나타난다. |
파라미터 설정
파라미터로 설정된 변수가 실제 서비스 호출에 이용된다. 매핑이 있다면 Input 파라미터는 Input 매핑의 소스가 되고, Output 파라미터는 Output 매핑에서 타겟이 된다.
다음은 Activity Preference 화면의 [파라미터 설정]에 대한 설명이다.
-
Input/Output 파라미터 설정
항목 설명 ID
변수 파라미터 아이디이다.
INPUT
해당 변수 타입을 Input으로 설정한다.
OUTPUT
해당 변수 타입을 Output으로 설정한다.
ERROR
해당 변수 타입을 Error로 설정한다.
-
버튼
버튼 설명 [New Parameter]
새로운 파라미터를 생성할 수 있다. 버튼을 클릭하면 Add New Process Variable 화면(Activity Preference 화면 - Add New Process Variable)이 나타난다.
[Select Parameter]
이미 생성되어 있는 파라미터를 선택할 수 있는 Select Variable 화면(Activity Preference 화면 - Select Variable 화면)이 생성된다.
[Delete]
파라미터 화면에서 선택한 파라미터를 삭제한다.
[Property]
선택된 파라미터 정보를 보여준다.
[Up]
선택한 파라미터의 위치를 한 칸 높인다.
[Down]
선택한 파라미터의 위치를 한 칸 내린다.
[New Parameter] 버튼을 클릭하면 Add New Process Variable 화면이 나타난다.
Activity Preference 화면 - Add New Process Variable항목 설명 ID
생성할 파라미터의 아이디이다.
Name
생성할 파라미터의 이름이다.
Description
생성할 파라미터에 대한 설명으로 사용자의 편의를 위한 것이다.
Initial Value
생성할 파라미터의 타입이 'Basic'일 경우, 변수에 대한 초기값을 설정할 수 있다.
Scope
인스턴스로 고정된 값이다.
Variable Type
-
Basic Type : 변수의 기본 타입으로 String, Float, Integer, DateTime, Boolean Type을 지원한다.
-
Message Type : 메시지 타입으로, 자신의 프로젝트의 서비스 그룹 아래에 있는 DTO 파일들을 찾아서 선택하여 메시지 선택 다이얼로그에서 추가한다.
-
Any Type : Java Class 객체를 Process Variable로 사용하는 경우 해당 타입을 선택한다.
-
Map Type : Key Value, msg, ctx 정보를 접근하는 방법을 나타낸다.
[Key Setting] 버튼을 클릭해서 'Map Data Field Key' 값을 설정할 수 있다. 서비스 호출에 사용되는 header variable에는 Map Type만이 이용될수 있다. 형식은 <String, String>으로 설정한다.
-
Attachment Map Type : 첨부 파일 등의 지정이 가능하며, 일반적으로 파일 Adapter Attachment 타입인 경우 사용한다.
Is Array Variable
배열을 사용할지 여부를 결정한다.
-
액티비티 핸들러
다음은 Activity Preference 화면의 [액티비티 핸들러]에 대한 설명이다.
버튼 | 설명 |
---|---|
[Add] |
사용자가 생성한 액티비티 핸들러를 설정할 수 있는 Service List Dialog가 출력된다. |
[Edit] |
선택한 핸들러에 대한 수정 화면이 생성된다. |
[Remove] |
선택한 핸들러를 삭제한다. |
다음은 사용자가 생성한 액티비티 핸들러를 설정할 수 있는 Service List Dialog에 대한 설명이다.
항목 | 설명 |
---|---|
Search |
액티비티 핸들러를 검색한다. |
Service list |
핸들러 목록이 나타난다. |
Activity Error Handler
다음은 Activity Preference 화면의 [Activity Error Handler]에 대한 설명이다. 버튼의 기능은 액티비티 핸들러 화면(Activity Preference 화면 - 액티비티 핸들러)의 기능과 동일하다.
항목 | 설명 |
---|---|
Error Code |
핸들러가 처리할 에러 코드를 입력한다. |
Handler Class |
User Class를 직접 등록해서 처리한다. |
Error Event ID |
에러 타입의 이벤트 아이디이다. |
Ignore |
해당 액티비티에서 에러 이벤트 사용 여부를 설정한다. |
다음은 [Add] 버튼을 클릭하는 경우 나타나는 화면에 대한 설명이다.
항목 | 설명 |
---|---|
Catch All Excpetions |
모든 Exception을 Catch한다. |
Error Code |
Catch할 에러 코드를 입력한다. Catch All Exception이 체크되어 있을 경우 자동으로 All이 된다. |
Error Event |
에러 이벤트를 검색하여 입력한다. [검색] 버튼을 클릭하면 Service List Dialog에서 검색 가능하다. |
Handler Class |
핸들러 클래스를 검색하여 입력한다. [검색] 버튼을 클릭하면 Service List Dialog에서 검색 가능하다. |
Activity Loop
다음은 Activity Preference 화면의 [Activity Loop]에 대한 설명이다.
항목 | 설명 |
---|---|
Loop Variable |
Array 항목을 가진 변수이다. |
For-each Variable |
Loop 변수의 타입을 자신의 타입으로 가지는 변수이어야 한다. Loop 변수의 배열 순서대로 값이 매핑된다. |
Index Variable |
반복될 때 마다 하나씩 증가하는 Integer 변수이다. |
Loop Handler List |
Loop에서 사용할 수 있는 Handler Class를 등록할 수 있다. |
-
[Standard Loop]
순차적으로 일정 횟수만큼 단순 반복한다.
Activity Preference 화면 - Activity Loop - Standard Loop항목 설정 Loop Count
현 액티비티의 최대 반복 횟수를 설정한다.
'Loop Condition'을 만족하지 못하는 경우 최대 반복 횟수를 모두 채우지 못하고 Loop가 종료될 수도 있다. 'Loop Count'를 설정하고 'Loop Condition'을 설정하지 않았을 경우, 내부적으로는 'Loop Condition'을 참으로 설정한다.
When to Check
'Loop Condition'을 체크하는 시점을 설정한다.
-
Before : 액티비티를 수행하기 전에 체크(while loop) 한다.
-
After : 액티비티 수행 후에 체크(until loop)한다. 'Loop Condition'을 만족하지 못할 경우라도 최소한 1회는 수행된다.
Loop Condition
Loop의 수행 조건을 설정한다.
조건이 참일 경우에만 Loop은 'Loop Count'의 수 만큼 반복 수행되며 거짓이면 Loop은 종료된다. 'Loop Count'가 설정되어 있지 않으면 'Loop Condition'을 만족하지 않을 때까지 무한 반복하게 된다.
아무 것도 입력하지 않으면 항상 참으로 인식하지만 'Loop Count'가 설정되지 않았을 경우 'Loop Condition'은 반드시 항상 참이 아닌 값으로 설정되어 있어야 한다. 입력 창에서 <Ctrl>+<Space>로 변수를 쉽게 입력할 수도 있다.
-
-
[Multiple Instance]
순차적 또는 병렬적으로 수행되며 수행 횟수나 종료 조건도 일정하지 않은 경우가 많다.
Activity Preference 화면 - Activity Loop - Multiple Instance-
Completion condition
현 액티비티를 얼마나 수행할 것인가를 설정한다. 'MI Count'로 최대 반복 횟수를 설정하고, ‘Loop Condition’으로 종료 조건을 설정한다.
-
How the loop instance will performed
항목 설명 Sequential
인스턴스가 순차적으로 실행된다.
Parallel
모든 인스턴스가 동시에 실행된다.
-
When transition to the next activity occurs
현 액티비티가 언제 종료 처리되어 Process Instance의 토큰이 다음 액티비티로 나갈 것인지를 설정한다.
항목 설명 Whenever each activity instance has completed
하나의 액티비티 인스턴스가 종료될 때마다 다음 액티비티로 토큰을 넘긴다. 하나 이상의 토큰이 계속 전달된다.
After only one of the activity instance has completed
하나의 액티비티 인스턴스만 종료되어도 다음 액티비티로 토큰을 넘긴다. 뒤에 수행되는 인스턴스의 토큰은 무시된다.
After all of the activity instance have completed
모든 액티비티 인스턴스가 종료되었을 때 다음 액티비티로 토큰을 넘긴다.
As the condition below
표시된 조건에 따라 그 조건이 만족되면 토큰을 넘긴다.
멀티인스턴스(Multiple Instance)를 사용하고 'How the loop instance will be performed'을 'Parallel’로 지정하는 경우 For-each 변수와 Index 변수은 동시성 이슈가 있으므로 반드시 local scope의 변수를 사용해야 한다. 하지만, 'How the loop instance will be performed'을 'Sequential’로, 'When transition to the next activity occurs'을 'After all of the activity instance have completed’로 지정하면 Standard Loop를 사용하는 것과 동일하게 동작한다.
-
4.2. 특정 액티비티 설정
본 절에서는 특정 액티비티를 설정하는 방법에 대한 설명한다.
유저 클래스 액티비티
유저 클래스 액티비티의 경우 Activity Preference 화면에서 복잡한 로직을 처리하기 위해 유저가 직접 생성한 유저 클래스 정보를 설정한다.
항목 | 설명 |
---|---|
패키지 이름 |
유저 클래스의 패키지 이름이다. |
클래스 이름 |
유저 클래스의 클래스 이름이다. |
매핑 액티비티
이미 정의된 맵을 사용하여 변수들의 값을 변환한다. 매핑 액티비티의 경우 Activity Preference 화면에서 [Mapping]을 클릭해서 정보를 설정한다.
-
Mapping Information
항목 설명 Access Type
Private를 선택하면 공유가 불가능하도록 액티비티 내에 정보가 저장된다.
-
버튼
버튼 설명 [Import Variables]
Public Mapping에 설정된 메시지를 import한다.
[Select Source]
Source에 해당하는 프로세스 변수를 선택할 수 있다.
[Select Target]
Target에 해당하는 프로세스 변수를 선택할 수 있다.
[Delete]
선택된 변수를 제거한다.
[Up]
변수를 한 칸 위로 이동시킨다.
[Down]
변수를 한 칸 아래로 이동시킨다.
[Mapping]
Source와 Target에 해당되는 프로세스 변수를 매핑시켜주는 Mapping Dialog가 출력된다.
[Clear Mapping]
생성된 매핑을 제거한다.
다음은 Source와 Target에 해당되는 프로세스 변수를 매핑시켜주는 Mapping Dialog 화면에 대한 설명이다. [Add User Class] 버튼을 클릭해서 유저 매핑 핸들러를 등록하거나 [Add Mapping Code] 버튼을 클릭해서 매핑할 때 호출될 Java Code를 입력한다.
항목 | 설명 |
---|---|
Source |
매핑에 사용될 변수들의 목록이다. |
Target |
매핑을 통해 값을 넣을 변수들의 목록이다. |
Properties |
Source/Target에서 선택한 변수나 필드의 정보를 조회한다. 왼쪽 Properties는 Source 영역이고, 오른쪽 Properties는 Target 영역이다. |
Location Path |
매핑 연결에 대한 연결 정보 값이다. |
Expression |
표현식을 통해 값을 매핑한다. 문자열은 큰따옴표(" ")로 감싸서 입력하고, 숫자는 그대로 입력한다. |
응답 메시지 액티비티
메시지 이벤트로 들어온 인바운드 서비스에 응답을 준다. 응답 메시지 액티비티의 경우 Activity Preference 화면에서 [Reply Message]를 선택해서 정보를 설정한다.
항목 | 설명 |
---|---|
Trans Mode |
|
MessageEvent ID |
서비스 플로우에 있는 메시지 이벤트를 설정할 수 있다. |
Use Mapping |
'Trans Mode'가 Response일 때 사용 가능하며 Reply Mapping 화면에서 프로세스 변수와 Output 파라미터 간에 매핑을 설정한다. [Reply Mapping] 버튼을 클릭하면 매핑 다이얼로그가 나타난다. |
Use Error Mapping |
'Trans Mode'가 에러일 때 사용 가능하며 Error Mapping 화면에서 프로세스 변수와 에러 파라미터 간에 매핑을 설정한다. [Error Mapping] 버튼을 클릭하면 매핑 다이얼로그가 나타난다. |
커스텀 로그 매핑 |
해당 액티비티에 설정된 커스텀 로그와 액티비티 변수를 매핑한다.
|
SubFlow
응답 메시지 액티비티의 경우 Activity Preference 화면에서 다른 플로우를 호출하기 위해 [SubFlow]를 선택해서 정보를 설정한다.
항목 | 설명 |
---|---|
Sub Flow |
사전에 생성한 서브 서비스 플로우(또는 서비스 플로우)를 설정할 수 있다. |
Service id |
설정한 서브 플로우의 Service ID이다. |
Trans Mode |
|
Service Mapping |
아웃바운드 서비스의 변수과 Activity Parameter 사이에 in/out 매핑이 가능하다. 매핑을 만들 때 실제 맵 파일이 생성되도록 하는 'public' 설정과 SFDL 내 서비스 매핑에 정보를 숨겨두는 'private' 설정이 있다. 즉, 'private' 매핑의 경우는 다른 플로우나 액티비티에서 재사용할 수 없다. |
멀티바인딩(MultiBinding) 액티비티
여러 서비스를 하나의 액티비티에서 처리하기 위해 생성하는 액티비티로 멀티바인딩에 설정된 서비스를 호출한다.
5. 이벤트
다음은 이벤트의 종류에 대한 설명이다.
항목 | 설명 |
---|---|
(메시지 이벤트) |
메시지 이벤트로 메시지를 수신하는 이벤트이다. Start와 Intermediate 타입을 지원한다. |
(타이머 이벤트) |
시작, 종료시간, 기간을 설정하여 특정 주기로 프로세스를 시작할 수 있다. Intermediate 타입을 지원한다. |
(에러 이벤트) |
에러가 발생하는 경우 수행되는 이벤트이다. Start, Intermediate, End 세 가지 타입이 모두 지원된다. |
(링크 이벤트) |
동기화나 프로세스 흐름 제어를 위해 사용한다. Start, Intermediate, End 세 가지 타입이 모두 지원된다. |
(정상 종료 이벤트) |
정상 종료를 나타내는 이벤트이다. End 타입만을 지원한다. |
(비정상 종료 이벤트) |
강제 종료 이벤트로서 프로세스 전체를 종료시킨다. 이 이벤트를 통해 종료될 때 WebAdmin에서 비정상 종료로 인식한다. End 타입만을 지원한다. |
5.1. 이벤트 설정
이벤트를 에디터 화면으로 갖고 온 뒤 더블클릭 또는 객체 위로 마우스를 올리면 나타나는 Event Preference 화면에서 이벤트를 설정한다.
Event Preference 화면에서 이벤트의 공통적인 기본 정보 설정을 한다. Event Class를 제외한 나머지 항목은 Activity Preference 화면과 같으므로 생략한다.
항목 | 설명 |
---|---|
Event Class |
이벤트 객체의 역할과 서비스 플로우에서의 위치에 따라 Start, Intermediate, End 타입을 지정할 수 있다. 몇몇 이벤트의 경우 제한이 있기도 하다. |
커스텀 로깅 |
커스텀 로깅을 사용한다.
|
세션 ID 사용 |
플로우 내부에서 세션을 관리하기 위해 아이디를 설정하려면 [New] 버튼을 클릭해서 세션 아이디를 직접 입력이 가능하고, [Search] 버튼을 선택할 때 텍스트박스 옆의 [Search] 버튼을 클릭하면 세션 선택 다이얼로그에서 세션을 아이디를 설정할 수 있다. |
5.2. 타입별 이벤트 설정
-
메시지 이벤트
메시지 이벤트의 경우 파리미터 설정 항목이 있으며, 항목에 대한 설명은 Activity Preference 화면의 파라미터 설정과 같으므로 생략한다.
-
타이머 이벤트
타이머 이벤트의 경우 타이머 정보를 설정한다. Timer 항목에서 시작,종료시간, 기간을 설정하여 특정 주기로 프로세스를 시작할 수 있다.
Event Preference 화면 - Timer항목 설명 Intermediate Event Setting
-
'Start time’만 설정한 경우 : 설정된 시작 시간 이전까지 sleep하고, 만약 이후라면 영원히 sleep한다.
-
'Sleep time’만 설정한 경우 : 설정한 기간 만큼만 sleep한다.
-
'Start time’과 'Sleep time’을 모두 설정한 경우 : 시작 시간 이전까지 sleep하고, 만약 이후라면 start time+n*sleep time까지 sleep한다.
Timer Class Name
유저 클래스를 직접 등록하여 사용이 가능하다.
-
-
에러 이벤트
에러 이벤트의 경우 에러 코드 정보를 설정한다. 에러 코드를 입력해야 한다. AnyLink에서 정의한 특수한 에러코드들은 Error Code 설정 옆의 ? 버튼을 통해 확인할 수 있다.
Error Preference 화면 - 에러 이벤트 -
링크 이벤트
링크 이벤트의 경우 Link ID 정보를 설정한다. 연결할 상대의 아이디를 입력해야 한다.
Event Preference 화면 - 링크 이벤트
6. 게이트웨이
다음은 게이트웨이의 종류에 대한 설명이다.
항목 | 설명 |
---|---|
(XOR Split) (XOR Join) |
XOR Split는 여러 개의 경로 중 하나의 경로나 프로세스 인스턴스가 라우팅되는 게이트웨이이다. XOR Split로 분기된 프로세스는 XOR Join으로 합쳐질 수 있다. XOR Split의 각 트랜지션(Transition)에 조건을 설정해야 하며,이 조건들은 우선순위에 따라 조건을 검사하여 참(True)이면 진행한다. 만약에 만족하는 조건이 존재하지 않는 경우 런타임 예외가 발생하므로 'otherwise' 타입을 하나 지정하는 것이 좋다. |
(XOR Event Split) |
XOR Split와 유사하지만 지연 선택의 경우처럼 다음 수행될 액티비티 트랜지션(Activity Transition)에 의해 결정하지 않고 다음 액티비티들의 자체 발생 여부를 가지고 있는 라우팅되는 게이트웨이이다. XOREvent Split 다음에는 반드시 타이머나 메시지 이벤트 또는 이벤트로 시작하는 블록만 올 수 있다. |
(Or Split) (Or Join) |
Or Split는 부팅할 때의 조건에 맞는 모든 경로로 프로세스 인스턴스가 라우팅되는 게이트웨이이다. Or Split 또한 Or Join으로 다시 합쳐져야 하며 트랜지션의 조건(Condition)을 설정하는 부분은 XOR Split와 동일하다. 다만 여러 개의 트랜지션이 겹쳐지는 조건을 가지도 있더라도 조건에 맞는 트랜지션이면 모두 수행된다는 점만 다르다. |
(And Split) (And Join) |
And Split는 조건 없이 모든 경로로 프로세스 인스턴스가 라우팅되는 게이트웨이이다. And Split는 모든 트랜지션으로 분기되기 때문에 각 부팅할 때의 조건(Condition)은 설정하지 않아야 한다. 비슷한 개념으로 And Join은 모든 경로에서 실행이 완료된 결과가 도착해야 다음 액티비티를 수행한다. |
(Complex Join) |
Complex Join은 Join할 개수를 지정하여 지정된 개수만큼 도착하면 다음으로 진행하는 형태이다. |
다음은 게이트웨이를 설정하는 Gateway Preference 화면에 대한 설명이다.
항목 | 설명 |
---|---|
Gateway Mode |
선택한 게이트웨이의 종류를 표시하고 변경이 가능하다. |
Incoming Condition |
Complex Gateway인 경우 설정할 수 있다. 몇 개의 트랜지션으로 합칠 것인지 설정한다. |
7. 스웜레인 / 블록 / ANNOTATIONS
다음은 스웜레인 / 블록 / ANNOTATIONS 객체에 대한 설명이다.
항목 | 설명 |
---|---|
(스웜레인) |
스웜레인은 서비스 플로우상에 Task를 구분해주는 일종의 선이다. 스윔레인을 사용하여 Task 간의 병렬적으로 이루어지는 우선순위나 행동들을 쉽게 구분할 수 있다. 스웜레인 상단을 더블클릭하여 발생하는 다이얼로그에서 아이디, 이름, 크기 색상을 변경할 수 있다. |
(블록 액티비티) |
블록 내부에서 사용할 수 있는 변수를 설정할 수 있으며, 블록 단위로 Message, Timer, Error 등의 이벤트를 설정할 수 있다. |
(ANNOTATIONS) |
사용자의 편의를 위한 객체로 설명을 기술할 수 있다. 플로우의 메모 기능을 제공한다. |
7.1. 블록 액티비티
특정 구역을 진행하는 도중에 발생하는 사건들이나 예외에 대한 처리를 위해서 특정 구역을 묶어서 표현하는 것을 블록(Block)이라고 한다. Java의 함수와 비슷한 개념으로 서비스 플로우 액티비티의 묶음이다.
블록에서도 액티비티와 마찬가지로 Block Handler, Exception Handler, Activity Loop, Block Variable 설정이 가능하다. [Block Variable] 메뉴에서 블록 내에서만 사용 가능한 변수를 정의할 수 있다.
항목 | 설명 |
---|---|
This is transaction block activity |
블록 액티비티는 트랜잭션이 지원되는 트랙잭션 블록 기능을 제공한다. 트랜잭션 블록을 사용할 경우 블록에 진입할 때 Tx_Begin, 블록을 None 이벤트로 종료할 때 Tx_Commit, 블록을 비정상 종료하거나 Terminate 이벤트로 종료할 경우 Tx_Rollback이 자동으로 호출된다. |
8. Utility
Utility는 서비스 플로우에서 사용되는 유틸리티 모음이다.
다음은 Utility 객체에 대한 설명이다.
항목 | 설명 |
---|---|
(SESSION CLOSE ACTIVITY) |
Session ID를 입력하여 해당하는 세션을 닫는다. |
(SESSION ABORT ACTIVITY) |
Session ID를 입력하여 해당하는 세션을 강제 종료시킨다. |
(NETWORK MANAGEMENT ACTIVITY) |
망의 상태를 변경하거나 망의 상태를 조회한다. |
(MANAGER APPROVAL ACTIVITY) |
단말 로그인/로그아웃이나 단말 사용자나 책임자 정보를 조회한다. |
(HTTP MULTIPART ACTIVITY) |
HTTP 멀티파트로 수신된 파일을 임시경로에 저장한다. 해당 파일들은 플로우가 끝나면 자동 삭제된다. |
(BATCH PROGRESS ACTIVITY) |
배치 진행률을 변경하거나 조회한다. |
(TCP MESSAGE SPLIT ACTIVITY) |
다음 Intermediate Event에서 TCP 메시지를 분할해서 수신받도록 한다. |
(CONTROL SESSION ACTIVITY) |
엔드포인트 ID와 세션키를 입력하여 해당하는 세션을 강제 종료시킨다. |
8.1. SESSION CLOSE ACTIVITY
다음은 SESSION CLOSE ACTIVITY의 Session Close Preference 화면에 대한 설명이다.
서비스 플로우에 추가되어 있는 'Session ID'를 선택한다. [Search] 버튼을 클릭하면 Session ID 선택 다이얼로그가 생성된다.
8.2. NETWORK MANAGEMENT ACTIVITY
다음은 NETWORK MANAGEMENT ACTIVITY의 Network Management Preference 화면에 대한 설명이다.
고정된 망 망을 선택할 경우에는 '망 ID(이름)'을 체크하고 [검색] 버튼을 클릭하여 생성된 망 ID(이름) 검색 다이얼로그에서 WebAdmin에서 추가한 망 ID를 선택한다.
플로우 변수에 코드 값이 있을 경우에는 '망 코드'을 체크하고 [Mapping...] 버튼을 클릭하여 생성된 코드를 매핑한 후 [검색] 버튼을 클릭하여 생성된 망 ID(이름) 검색 다이얼로그에서 WebAdmin에서 추가한 망 ID를 선택한다.
망 상태를 변경할 때는 '변경' 항목을 체크하고 망 상태를 변경한다. 망 상태를 조회할 때는 '조회' 항목을 체크하고 [Mapping...] 버튼을 클릭하여 생성된 망 상태 매핑 다이얼로그에서 망 상태를 플로우 변수에 매핑한다.
8.3. MANAGER APPROVAL ACTIVITY
다음은 MANAGER APPROVAL ACTIVITY의 Manager Approval Preference 화면에 대한 설명이다.
유틸리티 유형에서 수행하려는 액션을 선택한다. 단말을 사용하거나 조회하려는 사용자의 사용자 번호를 필드 선택의 [Search] 버튼을 클릭하여 생성된 변수 필드 선택 다이얼로그에서 매핑한다. 해당 필드 값에 해당하는 값은 WebAdmin의 [운영관리] > [단말관리] > [사용자관리] 메뉴에 존재하는 사용자의 사용자 번호와 일치해야 한다.
유틸리티 유형에 해당하는 액션을 수행한 후의 결과나 정보는 [Mapping...] 버튼을 클릭하여 생성된 단말/사용자 정보 매핑 다이얼로그에서 매핑한다.
8.4. HTTP MULTIPART ACTIVITY
다음은 HTTP MULTIPART ACTIVITY의 HTTP Multipart Preference 화면에 대한 설명이다.
멀티파트로 수신된 파일의 정보는 [매핑 유형]에서 유형을 선택한다. 파일 매핑은 파일의 경로와 파일 이름을 매핑을 통해 얻을 수 있고, 바이트 매핑은 파일의 내용과 파일의 정보를 매핑을 통해 얻을 수 있다.
멀티파트 파일 정보는 [Mapping...] 버튼을 클릭하여 생성된 멀티 파트 매핑 다이얼로그를 통해 매핑한다.
8.5. BATCH PROGRESS ACTIVITY
다음은 BATCH PROGRESS ACTIVITY의 Batch Progress Preference 화면에 대한 설명이다.
배치 진행률을 사용하기 위해서는 플로우에서 사용하는 배치 아웃바운드룰 설정에서 배치 진행률 사용을 true로 설정하여야 한다.
배치 진행률 정보를 변경할 경우에는 '배치 진행률 정보'를 체크하고 [Mapping...] 버튼을 클릭하여 생성된 배치 진행률 정보 매핑 다이얼로그에서 배치 진행률 정보를 매핑한다.
항목 | 설명 |
---|---|
배치 진행률 정보 |
배치 진행률 정보를 매핑하여 변경한다.
|
상태 |
배치의 진행 상태를 완료 또는 실패로 변경한다. |
조회 |
배치 처리 결과를 매핑을 통해 조회한다. |
배치 상태를 변경할 경우에는 '상태'를 체크하고 변경할 상태를 선택한다. 배치 처리 결과를 조회할 경우에는 '조회'를 체크하고 [Mapping...] 버튼을 클릭하여 생성된 배치 처리 결과 조회 매핑 다이얼로그에서 배치 처리 결과를 매핑한다.
8.6. TCP MESSAGE SPLIT ACTIVITY
다음은 TCP MESSAGE SPLIT ACTIVITY의 TCP Message Split Preference 화면에 대한 설명이다. 해당 기능을 사용하기 위해서는 WebAdmin에 [구성관리] > [어댑터] 메뉴에서 Endpoint 설정에 메시지 분할 거래에 거래를 설정해야 한다.
TCP MESSAGE SPLIT ACTIVITY를 설정하면, 해당 Activity 다음 실행되는 Intermediate Event에서 메시지를 수신할 때 TCP MESSAGE SPLIT ACTIVITY 에서 설정한 '총 길이', '분할 길이’를 이용하여 수신한다. '총 길이’는 수신할 메시지의 총 길이이고, '분할 길이’는 분할해서 읽을 메시지 길이이다.
서비스 플로우에 추가되어 있는 'Session ID'를 선택한다. [Search] 버튼을 클릭하면 Session ID 선택 다이얼로그가 생성된다.
수신받을 메시지 길이 정보는 [Mapping...] 버튼을 클릭하여 생성된 메시지 길이 정보 매핑 다이얼로그에서 매핑한다. 이후에 수행되는 Intermediate Event는 메시지 길이 정보 매핑 다이얼로그에서 매핑된 총 길이와 분할 길이를 이용하여 수신한다.