KR100825722B1 - Bpel4ws 프로세스를 칼라드 페트리넷으로 변환하는방법 및 그 장치 - Google Patents

Bpel4ws 프로세스를 칼라드 페트리넷으로 변환하는방법 및 그 장치 Download PDF

Info

Publication number
KR100825722B1
KR100825722B1 KR1020060054906A KR20060054906A KR100825722B1 KR 100825722 B1 KR100825722 B1 KR 100825722B1 KR 1020060054906 A KR1020060054906 A KR 1020060054906A KR 20060054906 A KR20060054906 A KR 20060054906A KR 100825722 B1 KR100825722 B1 KR 100825722B1
Authority
KR
South Korea
Prior art keywords
transition
cpn
converting
activity
storage
Prior art date
Application number
KR1020060054906A
Other languages
English (en)
Other versions
KR20070061171A (ko
Inventor
김록원
이대하
문진영
김연준
조영조
조현성
정문영
김경일
송병열
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Publication of KR20070061171A publication Critical patent/KR20070061171A/ko
Application granted granted Critical
Publication of KR100825722B1 publication Critical patent/KR100825722B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 BPEL4WS 프로세스를 칼라드 페트리넷(CPN)으로 변환하는 방법 및 그 장치에 관한 것으로, BPEL4WS 문서를 파싱하여 CPN에 필요한 칼라집합을 생성하는 단계; 칼라 집합을 이용하여 BPEL4WS의 구조 액티비티를 CPN으로 변환하는 단계; 칼라 집합을 이용하여 구조 엑티비티에 포함된 기본 액티비티를 CPN으로 변환하는 단계; 및 구조 액티비티 또는 기본 엑티비티에 사용된 수식 또는 함수를 CPN으로 변환하는 단계를 포함함을 특징으로 한다.

Description

BPEL4WS 프로세스를 칼라드 페트리넷으로 변환하는 방법 및 그 장치{Method and apparatus for transforming BPEL4WS process into Coloured Petri-Nets}
도 1은 본 발명에 따른 BPEL4WS를 CPN으로 변환하는 방법에 대한 흐름도이다.
도 2는 본 발명에 따른 BPEL4WS를 CPN으로 변환하는 장치에 대한 블록도이다.
도 3은 순차문을 CPN으로 표현한 것이다.
도 4는 선택분기문을 CPN으로 표현한 것이다.
도 5는 반복문을 CPN으로 표현한 것이다.
도 6은 선택입력문을 CPN으로 표현한 것이다.
도 7은 플로우(flow)문을 CPN으로 표현한 것이다.
도 8은 수신문을 CPN으로 표현한 것이다.
도 9는 응답문을 CPN으로 변환한 것이다.
도 10은 동기 호출문을 CPN으로 변환한 것이다.
도 11은 비동기식 호출문을 CPN으로 변환한 것이다.
도 12는 <from> 엘리먼트를 CPN으로 표현한 것이다.
도 12는 다른 <from> 엘리먼트를 CPN으로 표현한 것이다.
도 13은 또 다른 <from> 엘리먼트를 CPN으로 표현한 것이다.
도 14는 또 다른 <from> 엘리먼트를 CPN으로 표현한 것이다.
도 15는 또 다른 <from> 엘리먼트를 CPN으로 표현한 것이다.
도 16은 또 다른 <from> 엘리먼트를 CPN으로 표현한 것이다.
도 17은 <to>엘리먼트를 CPN으로 표현한 것이다.
도 18은 다른 <to>엘리먼트를 CPN으로 표현한 것이다.
도 19는 또 다른 <to>엘리먼트를 CPN으로 표현한 것이다.
도 20은 대기문을 CPN으로 표현한 것이다.
도 21은 수식문을 CPN으로 변환한 것이다.
도 22는 getVariableProperty()함수를 CPN으로 변환한 것이다.
도 23은 getVariableData()함수를 CPN으로 변환한 것이다.
본 발명은 웹서비스 기반의 비즈니스 프로세스 정의 언어인 BPEL4WS(Business Process Execution Language for Web Service, 이하 BPEL4WS 이라함)을 칼라드 페트리 넷(Coloured Petri-Nets, 이하 CPN이라 함)으로 변환하는 방법 및 그 장치에 관한 것이다.
BPEL4WS(Business Process Execution Language for Web Services)는 웹 서비 스 기반의 비즈니스 프로세스를 정의하는 스펙(spec)으로, 사용자에게 쉽게 이해될 수 있는 각각의 표현 문법을 가지고 있으며, 이 문법은 XML 표준을 이용하여 정의되었다. 또한 BPEL4WS는 다수의 웹 서비스를 조합하고, 그 호출 순서와 동작을 제어함으로써 새로운 서비스를 정의할 수 있는 언어이다.
CPN은 시스템을 모델링하는 방법이다. CPN은 시스템 설계를 용이하게 하고 정형화된 분석을 가능하게 한다. CPN과 같은 고차원 페트리넷(Petri-Nets) 기술은 워크플로우(workflow)나 비즈니스 프로세스를 모델링하는 좋은 방법으로 많이 응용되었다. 하지만 종래의 기술들은 워크플로우나 비즈니스 프로세스 설계 시점에 페트리넷을 적용하는 방법을 취하고 있다. 하지만 페트리넷은 기업의 업무를 수행하는 일반 사용자들이 이해하고 사용하기에는 어렵고 특히 근래에 등장하는 웹서비스 기술을 응용하는 프로세스 모델링에 페트리넷을 직접 적용할 경우 프로세스 정의가 매우 복잡해지고 사람이 이해하기 힘들다.
단일 타입의 객체를 갖는 페트리넷에 칼라의 개념 즉, 다양한 타입의 객체를 이용하도록 하여 시스템의 구조와 기능을 더욱 명확히 나타내도록 확장한 것이 CPN 이다. 즉, 칼라는 데이트 타입을 의미한다. 그러므로 CPN은 페트리넷 보다 표현력이 풍부하기 때문에 BPEL4WS를 표현하기 위해서는 일반 페트리넷이 아닌 CPN을 이용하여야 한다. 왜냐하면 BPEL4WS는 단순 및 복합 타입의 데이터를 다루기 때문이다.
CPN에 대한 정의는 다음 식 같다.
CPN= (∑, P, T, A, N, C, G, E, I)
여기서, ∑: 데이터 타입의 집합, P: 저장소(place)의 집합, T: 전이(transition)의 집합, A: 간선(edge)의 집합, C: 노드(Node) 함수, G: 가드(guard) 함수, E: 간선식(edge expression), I: 초기화 함수이다.
수학식 1에서 ∑는 칼라의 집합이라고도 한다. 간선은 페트리넷의 그래프 연결을 설정한다. 가드 함수는 전이의 실행여부를 결정한다. 간선식은 간선을 통해 전달되는 칼라를 의미한다.
CPN은 정형화된 모델이기 때문에 프로세스를 설계하고 실행하고 분석할 수 있는 용이한 방법을 제공한다. CPN이 비즈니스 프로세스 모델링에 이용하기에 적합하지만 이것을 직접 모델링 언어로 사용하지는 않는다. 왜냐하면 CPN을 사용자가 직접 모델링하기에는 매우 복잡하기 때문이다. 그러나 비즈니스 프로세스를 실행하는 시스템의 관점에서는 BPEL4WS 언어보다 CPN으로 표현된 모델이 프로세스의 실행, 분석, 최적화를 위한 많은 장점을 가지고 있다. 왜냐하면 CPN 모델이 정형적 개념을 가지고있기 때문이다. 따라서 BPEL4WS의 실행과 분석에 이용하기 적합한 모델을 제공하기 위해 BPEL4WS를 CPN으로 변환하는 것이 요구된다.
본 발명이 이루고자 하는 기술적 과제는 BPEL4WS를 CPN으로 변환하는 방법 및 그 장치를 제공하는 데 있다.
상기 기술적 과제를 이루기 위한, 본 발명의 BPEL4WS를 CPN으로 변환하는 방 법은 BPEL4WS 문서를 파싱하여 CPN에 필요한 칼라집합을 생성하는 단계; 상기 칼라 집합을 이용하여 상기 BPEL4WS의 구조 액티비티를 CPN으로 변환하는 단계; 상기 칼라 집합을 이용하여 상기 구조 엑티비티에 포함된 기본 액티비티를 CPN으로 변환하는 단계; 및 상기 구조 액티비티 또는 상기 기본 엑티비티에 사용된 수식 또는 함수를 CPN으로 변환하는 단계를 포함함을 특징으로 한다.
상기 기술적 과제를 이루기 위한, 본 발명의 BPEL4WS를 CPN으로 변환하는 장치는 BPEL4WS 문서를 파싱하여 CPN에 필요한 칼라집합을 생성하는 칼라 생성기; 상기 칼라 집합을 이용하여 상기 BPEL4WS의 구조 액티비티를 CPN으로 변환하는 구조 액티비티 변환부; 상기 칼라 집합을 이용하여 상기 구조 엑티비티에 포함된 기본 액티비티를 CPN으로 변환하는 기본 액티비티 변환부; 및 상기 구조 액티비티 또는 상기 기본 엑티비티에 사용된 수식 또는 함수를 CPN으로 변환하는 함수 변환부를 포함함을 특징으로 한다.
이하에서 첨부된 도면을 참조하여 본 발명을 상세하게 설명하기로 한다.
도 1은 본 발명에 따른 BPEL4WS를 CPN으로 변환하는 방법에 대한 흐름도이고, 도 2는 본 발명에 따른 BPEL4WS를 CPN으로 변환하는 장치에 대한 블록도이다.
BPEL4WS로 정의된 비즈니스 프로세스를 CPN으로 표현하기 위해서, 파서(parser, 21)는 BPEL4WS 문서를 파싱하고(11단계), 칼라집합 생성부(22)는 BPEL4WS 문서에 포함된 BPEL4WS 데이터 타입을 정의하는 칼라 집합(Color Set)을 생성한다(12단계). 본 실시예에서 생성되는 칼라 집합은 다음의 표와 같다.
Color Variable = Object; Color Value = Object Color PLinkType = String; Color PortType = String; Color Operation = String; Color in = with 'input'; Color out = with 'output'; Color inout = with 'input_output'; Color I_Channel = in × PartnerLink ×PortType ×Operation × Variable; Color O_Channel = out × PartnerLink × PortType × Operation × Variable; Color IO_Channel = inout × PartnerLink × PortType × Operation × Variable Color Name = String; Color PartName = String; Color Query = String ; Color RoleName = String; Color MyRole = String; Color PartnerRole = String; Color PartnerLink = Name × PLinkType × MyRole × PartnerRole; Color Property = Name × Variable × (PartName|Query); Color CorrelationSet = Name × Property; Color ProgressToken = boolean Color Expression = Object; Color TransitionCond = boolean; Color JoinCond = boolean; Color FaultType = String;
표 1에 나타난 칼라 집합은 BPEL4WS을 CPN으로 모델링할 때 CPN에서 사용되는 데이터 타입이 된다. 즉, CPN의 저장소, 전이 그리고 간선에서 사용되는 객체의 타입은 표 1에 정의된 칼라 집합의 원소이어야 한다.
표 1에서 예를 들어, Variable 칼라 집합은 object 형태의 데이터 타입을 갖고, Value 칼라 집합은 string 형태의 데이터 타입을 갖는다. 또한 표 1에서 ×는 집합간의 곱(cartesian product)이다.
구조 액티비티 변환부(23)는 생성된 칼라 집합을 참조하여 BPEL4WS의 구조 액티비티(structured activity)를 CPN으로 변환한다(13단계). 여기서, 구조 액티비티는 비지니스 프로토콜에 포함된 프로세스 인스턴스(instance) 간 메시지 교환의 조정을 표현하는 구조와 이것이 수행하는 기본 액티비티(basic activity)를 결합하여 비지니스 프로세스가 어떻게 만들어지는 지를 설명하는 것으로, 그 종류로는 순차(sequence)문, 선택분기(switch)문, 반복(while)문, 선택입력(pick)문, 플로우(flow)문 등이 있다. 구조 액티비티는 비즈니스 프로세스에 사용되는 기본 액티비티(basic activity)의 실행 순서, 조건, 선택 방법을 기술하기 위해서 사용된다.
순차문은 순차적으로 실행되는 한 개 이상의 액티비티를 포함하며, <sequence> 엘리먼트 내부에 정의되는 서브(Sub) 액티비티들은 먼저 정의된 순서대로 실행된다. 구조 액티비티와 기본 액티비티 모두 서브 액티비티로 사용될 수 있다.
순차문의 BPEL4WS 예는 다음 표와 같다.
<sequence> <receive> ... </receive> <assign> ... </assign> <reply> ... </reply> </sequence>
표 2에서 <receive>, <assign> 및 <reply> 엘리먼트들은 <sequence> 엘리먼트의 서브 액티비티들로 이들의 동작에 대해서는 후술하기로 한다.
표 2에 예시된 순차문을 CPN으로 변환하는 과정은 다음과 같다. 먼저, 순차문의 시작을 나타내는 전이 Seq_S와 ProgressToken 칼라를 저장하는 제1저장소를 생성하고, 생성된 전이 Seq_S에서 제1저장소로 progressToken 칼라 객체를 전달하는 제1간선을 생성한다. <sequence> 엘리먼트에 포함된 기본/구조 엑티비티를 CPN으로 변환한다. 다음으로, 순차문의 종료를 나타내는 전이 Seq_E와 ProgressToken 칼라를 저장하는 제2저장소를 생성하고, 전이 Seq_E에서 제2저장소로 progressToken 칼라 객체를 전달하는 제2간선을 생성한다.
도 3은 상술한 과정에 따라 순차문을 CPN으로 표현한 것이다. 도 3에서, Seq_S(31) 및 Seq_E(32)는 각각 순차문의 시작과 종료를 나타내고, 간선(33) 위에 표시된 pt는 표 1의 칼라 집합에서 정의된 ProgressToken 타입의 변수명이다. pt는 간선을 통해 전달되는 특별한 객체(object)가 존재하지 않을 경우에 사용된다. 일반적으로 간선은 반드시 하나의 객체를 저장소(34)로 전달해야 하며, 객체를 전달하지 않으면 다음 단계로 전이할 수 없다. 전이(35)는 이전 저장소(34)에 저장된 값에 대해 해당 연산 또는 조작을 수행한 후 간선을 통해 다음 저장소(36)에 저장한다.
선택분기문은 조건 분기를 의미하며, 순서가 정해진 한 개 이상의 조건 브랜치(branch) 리스트가 있다. 선택분기문은 <case> 엘리먼트로 정의되며 그 다음이 <otherwise> 엘리먼트이다. 각 <case> 브랜치는 참(true)/거짓(false)을 갖는 불 경로(Boolean XPath) 수식을 지정하고 이 수식은 그들이 나타나는 순서대로 계산된다. Boolean 수식이 참(true)으로 계산한 첫 번째 <case> 엘리먼트는 자식 액티비티가 작동되도록 한다. 어떤 <case> 엘리먼트 조건도 참(true)를 보유하지 않는다면 <otherwise> 엘리먼트의 자식 액티비티가 수행된다. <otherwise> 엘리먼트가 지정되지 않으면 <empty> 액티비티를 포함하고 있는 함축적인 <otherwise>가 있다. 선택된 브랜치가 완료되면 <switch> 액티비티는 완료된다.
다음 표는 선택분기문의 BPEL4WS 예이다.
<switch xmlns:inventory=" http://supply-chain.org/inventory"> <case condition= "bpws:getVariableProperty(stockResult,level) > 100"> <assign> <!-- perform fulfillment work --> </assign> </case> <case condition="bpws:getVariableProperty(stockResult,level) >= 0"> <assign> <!-- perform fulfillment work --> </assign> </case> <otherwise> <assign> <!-- perform fulfillment work --> </assign> </otherwise> </switch>
표 3에 예시된 선택분기문을 CPN으로 변환하는 과정은 다음과 같다. 먼저, 전이 Seq_S와 ProgressToken 칼라를 저장하는 제1저장소를 생성하고 전이 Seq_S에서 제1저장소로 ProgressToken 칼라 객체를 전달하는 제1간선을 생성한다. 선택분기문 내부에 정의된 모든 <case> 엘리먼트에 대해서 전이 expression과 전이 expression의 실행 결과인 불(boolean) 칼라를 저장하는 제2저장소를 생성하고 전이 expression에서 제2저장소로 불 칼라를 전달하는 제2간선을 생성한다. 다음으로, 제2저장소로부터 불 칼라를 입력받아 참인지 거짓인지를 평가하는 전이 Case_True와 전이 Case_False를 생성하고, 제2저장소로부터 전이 Case_True와 전이 Case_False로 불 값을 전달하는 2개의 제3간선을 생성한다. 만일 n개(n>=0)의 <case>문이 존재할 경우, n번째에 대해서 Case_False로부터 n+1번째에 대해서 전이 expression으로 연결하는 제3저장소와 ProgressToken을 전달하는 제4간선을 만들어 연결한다. 또한 전이 Case_True와 연결되는 기본/구조 엑티비티를 변환하고, ProgressToken 칼라를 저장하는 제4저장소를 생성하며 기본 엑티비티중 연결점이 없는 엑티비티들로부터 제4저장소를 연결하는 간선을 생성한다. 마지막으로 전이 Seq_E를 생성하고 제4저장소와 연결하는 제5간선을 생성한다.
도 4는 상술한 과정에 따라 표 4의 선택분기문을 CPN으로 표현한 것이다. 도 4에 따르면, <switch> 엘리먼트의 서브 엘리먼트는 다수의 <case>와 <otherwise> 엘리먼트가 될 수 있다. <case> 엘리먼트는 전이 case(41)와 전이 expression(42) 2개로 표현된다. 전이 expression(42)에 대해서는 후술하기로 한다. 전이 expression(42)의 결과가 참인지 거짓인지에 따라 다음 <case> 엘리먼트의 수행 여부가 결정된다. 전이 case(41)는 내부적으로 가드(guard) 함수를 가진다. 가드 함수는 전이 case의 실행결과에 따라 pt 객체를 연결된 저장소로 전달할 것인지를 결정한다. pt 객체가 전달되지 않으면 연결된 경로의 전이들은 실행되지 않는다.
반복문은 반복 수행을 의미하는 것으로, 지정된 불(Boolean) 조건이 참으로 계산되지 않을 때까지 반복적으로 자식 액티비티를 수행한다. 이 조건은 XPath 수식으로서 계산된다.
다음 표는 while문의 BPEL4WS 예이다.
<while condition="bpws:getVariableData(orderDetails) > 100"> <assign> ... </assign> </while>
표 4에 예시된 반복문을 CPN으로 변환하는 과정은 다음과 같다. 먼저, 전이 While_S를 생성하고 속성 until의 값을 저장할 제1저장소를 만들고 전이 While_S와 제1저장소를 제1간선으로 연결한다. 다음으로, 제1저장소로부터 시간 값을 전달받아 현재 시간이 제1저장소에 저장된 시간보다 크거나 같은지를 검사하는 전이 CurrentTime_1과 현재 시간이 제1저장소에 저장된 시간보다 작은지를 검사하는 전이 CurrentTime_2을 생성한다. 제1저장소로부터 전이 CurrentTime_1과 전이Current_Time2를 각각 연결하는 제2간선 2개를 생성한다. 다음으로, ProcessToken 타입을 저장하는 제2저장소를 만들고, 전이 CurrentTime_1로부터 제2저장소를 연결하는 제3간선을 생성하고 CurrentTime_2로부터 제2저장소로 현재 시간을 전달하는 간선을 생성한다. 끝으로, 전이 While_E를 생성하고 제2저장소로 ProcessToken를 전달하는 제4간선을 생성한다.
도 5는 이러한 과정에 따라 표 4의 반복문을 CPN으로 표현한 것이다. 도시된 바에 따르면, <while> 엘리먼트의 속성 ‘condition'은 전이 expression(51)과 2개의 전이 Cond(52, 53)로 표현된다. 전이 Cond(52, 53)는 내부적으로 가드(guard) 함수를 포함한다.
선택입력문은 어떤 메시지가 입력되기를 대기하는 상태에서 최초로 어떤 메시지 도착하면 도착된 메시지에 대한 처리를 진행하고 나중에 도착한 메시지는 무시한다. 만약 지정된 시간 내에 어떠한 메시지도 도착되지 않을 경우 특정 행위를 취할 수 있는 기능을 제공하기 위해서 지정된 시간을 알람(alarm)으로 표현할 수 있다.
다음 표는 선택입력문의 BPEL4WS 예이다.
<pick> <onMessage partnerLink="buyer" portType="orderEntry" operation="inputLineItem" variable="lineItem"> <!-- activity to add line item to order --> </onMessage> <onMessage partnerLink="buyer" portType="orderEntry" operation="orderComplete" variable="completionDetail"> <!-- activity to perform order completion --> </onMessage> <!-- set an alarm to go after 3 days and 10 hours --> <onAlarm for="'P3DT10H'"> <!-- handle timeout for order completion --> </onAlarm> </pick>
표 5에서 예시된 <pick> 엘리먼트의 서브 엘리먼트로 정의된 2개의 <onMessage> 엘리먼트는 각각 'variable' 속성에 기술된 'lineItem' 메시지와 'completionDetail' 메시지가 외부로부터 입력되기를 기다리고 있다가 먼저 도달하는 메시지를 선택한다. 그리고 먼저 도달된 메시지를 정의한 <onMessage> 엘리먼트의 서브 액티비티들이 실행된다. <onAlarm> 엘리먼트의 ‘for’ 속성에는 메시지의 대기 시간이 기술된다. <onAlram> 엘리먼트는 <onMessage> 엘리먼트와 동시에 시작된다. 즉, <Pick> 엘리먼트내에 정의된 모든 <onMessage> 엘리먼트와 <onAlram> 엘리먼트는 합분기(And-Split)로 갈라지면 경쟁관계를 가지게 된다. <onAlram>의 속성 ‘for'에 정의된 시간 동안 아무 메시지도 도착하지 않으면 <onAlram> 엘리먼트의 서브 엘리먼트들이 실행된다.
표 5에 예시된 선택입력문을 CPN으로 변환하는 과정은 다음과 같다. 먼저, 전이 Pick_S를 생성하고, <pick> 엘리먼트에 포함된 각각의 <onMessage>에 대해서 전이 receive를 생성한다. 다음으로, 전이 receive의 수행 결과인 Variable 칼라 객체를 저장하는 제1저장소를 생성하고 전이 Receive에서 제1저장소로 Variable 칼라 객체를 전달하는 제1간선을 생성한다. 제1저장소의 값이 가지는 타입과 입력된 시간과 시간을 비교하는 기능을 수행하는 전이 TypeTime_Check를 전이 receive의 수만큼 생성하고, <pick>엘리먼트에 포함된 <onAlram>에 대해서 전이 alram을 생성한다. <onAlram>엘리먼트의 속성 for 또는 until에 기술된 시간 값을 저장하는 제2저장소를 만들어 저장한 다음, 전이 alram과 제2저장소를 연결하는 제2간선을 생성한다. 제2저장소에 저장된 시간 값을 비교하는 전이 Time_True와 Time_False를 각각 생성하고 제2저장소에서 전이 Time_True와 Time_False로 Time 칼라 객체를 전달하는 2개의 제3간선을 생성한다. 전이 pick_E를 생성하고 Time_True와 Time_False 전이들과 pick_E 전이를 연결하는 제3저장소를 생성하며 이 2개의 전이들과 제3저장소 사이 그리고 pick_E전이와 제3저장소 사이를 연결하는 제4간선들을 생성한다. 다음으로, Time 칼라를 저장하는 제4저장소에서 각각의 TypeTime_Check 전이로 Time 칼라를 전달하는 제5간선을 생성한다.
도 6은 상술한 과정에 따라 표 5의 선택입력문을 CPN으로 표현한 것이다. 도시된 바에 따르면, <pick> 엘리먼트는 시작이 합분기(And-Split)(61)이고 끝이 선택수렴(Or-Join)(62)의 모양이다. 도 6에서 합분기(61)는 3가지 분기가 전부 실행됨을 의미하고 선택수렴(62)은 3가지 분기 중 하나가 완료되면 전제 Pick문이 끝나게 된다. 도 6에 도시된 2개의 receive 전이(63, 64)를 수행한 뒤 전달된 하나의 ‘Variable 타입의 ‘v1’ 객체가 LineItem'인 경우 또는 'CompletionDetail'인 경우에 따라 선택이 달라진다. 도 6에 나타난 activity 전이(65, 66, 67)는 기본 또는 구조 엑티비티를 추상적으로 activity라는 이름으로 표현한 것이다.
도 6에서 onAlarm 전이(68)는 receive 전이(63, 64)와 동시에 진행되며, 'Time'의 t1내에 'v1'이 전달되면 해당 액티비티 전이(65, 66)를 수행하고, t1을 초과하면 그에 대응하는 액티비티(67)를 수행한다.
플로우문은 병렬적인 실행을 의미한다. 플로우문에 포함된 모든 액티비티들이 전부 수행이 될 때 플로우문의 처리가 끝난다. <flow> 엘리먼트에 포함된 액티비티들은 순서를 가지지 않는다. <flow> 엘리먼트는 <link> 엘리먼트를 포함할 수 있다. <link> 엘리먼트는 <flow> 엘리먼트에 정의된 기본 또는 구조 액티비티들에 대한 전후 관계에 대한 동기화를 기술하는데 이용된다. <link> 엘리먼트의 ' target 속성과 'source' 속성을 가진다. 이것의 의미는 어떤 엘리먼트가 <source> 엘리먼트를 포함하고 또 다른 엘리먼트가 <target> 엘리먼트를 포함한다면 <source> 엘리먼트를 포함하는 액티비티가 수행이 된 이후에 <target> 속성을 포함하는 액티비티가 수행이 됨을 의미한다. 또한 <target> 엘리먼트를 포함하는 엘리먼트가 실행되기 전에 <source> 엘리먼트로부터 전이 조건(transition condition)을 검사한다. 전이 조건의 평가식이 거짓(false)이면 <target> 엘리먼트를 포함하고 있는 엘리먼트는 수행되지 않는다. 만약 전이 조건이 기술되어 있지 않으면 무조건 참(true)이다. 어떤 엑티비티가 다수의 <target> 엘리먼트를 가지는 경우 두 엘리먼트가 전이 조건을 가질 수 있다. 전이 조건의 평가가 거짓(false)이면 <target> 엘리먼트를 포함하는 있는 액티비티는 수행되지 않는다. 전이 조건이 기술되어 있지 않으면 무조건 논리합(OR)연산을 수행한다.
다음 표는 플로우문의 BPEL4WS 예이다.
<flow> <links> <link name="XtoY"/> <link name="CtoD"/> </links> <sequence name="X"> <source linkName="XtoY"/> <invoke name="A" .../> <invoke name="B" .../> </sequence> <sequence name"Y"> <target linkName="XtoY"/> <receive name="C" ...> <source linkName="CtoD"/> </receive> <invoke name="E" .../> </sequence> <invoke partnerLink="D" ...> <target linkName="CtoD"/> </invoke> </flow>
표 6에 예시된 플로우문을 CPN으로 변환하는 과정은 다음과 같다. 먼저, 전이 Flow_S를 생성하고, <source> 엘리먼트에 대해 전이 Transition_cond_eval를 생성하며, 그 수행 결과인 transitionCond 칼라 객체를 저장하는 제1저장소를 만든다. <target> 엘리먼트에 대해서는 전이 Join_cond_eval를 생성하고, 전이 수행 결과인 JoinCond 칼라 객체를 저장하는 제2저장소를 만든다. 다음으로, 제2저장소의 값을 평가하는 전이 JoinCond_True와 JoinCond_False를 생성하고 제2저장소에서 전이 JoinCond_True와 JoinCond_False로 제2저장소의 값을 전달하는 제1간선 2개를 생성한다. <target>과 <source>엘리먼트의 linkName 속성값이 같은 경우 제2저장소와 전이 join_cond_eval를 연결하는 제2간선을 생성한다. 생성된 모든 저장소를 모든 Join_cond_eval 전이들과 연결하는 제3간선들을 생성하며, 전이 flow_E를 생성하고 이를 제2저장소와 제4간선으로 연결한다.
도 7은 이러한 과정에 따라 표 6의 플로우문을 CPN으로 표현한 것이다.
표 6 및 도 7에서 어떤 액티비티가 <link> 엘리먼트를 <source> 엘리먼트로 참조한다면 그 <source> 엘리먼트를 포함하는 바로 상위 액티비티의 마지막 자식 액티비티 다음에 도 7에 참조번호 71이 가리키는 점선 부분에 포함된 ‘transitionCondEvalution’ 전이를 추가하고 그 결과를 참조번호 72에 표현된 것처럼 저장소에 ‘transitionCond' 칼라를 가지도록 표현한다. 그리고 어떤 액티비티가 <link> 엘리먼트를 <target> 엘리먼트로 참조되었다면 그 <target> 엘리먼트를 포함하는 바로 상위 엘리먼트의 첫 번째 자식 엘리먼트 앞에 참조번호 73처럼 'joinCondEvalution'전이를 추가하고 ’transitionCondEvalution' 전이의 결과를 저장하고 있는 저장소를 연결한다.
구조 액티비티에 대한 CPN으로의 변환이 완료되면, 기본 액티비티 변환부(24)는 기본 액티비티를 CPN 모델로 변환한다(14단계).
상술한 구조 액티비티들은 BPEL4WS에서 정의하는 기본 액티비티들의 실행 순서 및 구성을 기술하는 것이다. 기본 액티비티는 연산이나 기능을 실행하여 외부 세계와 상호동작(interaction)한다. 즉, 서비스와 상호동작(interaction)하고, 전송 데이터를 조작하며, 예외를 처리하는 등의 비 순차적(non-sequenced)이고 개별 단계들을 수행한다.
BPEL4WS에서 정의된 기본 액티비티의 종류에는 수신(receive)문, 응답(reply)문, 호출(invoke)문, 할당(assign)문 그리고 대기(wait)문이 있으며, 프로세스(process)는 이들을 사용하여 프로세스 파트너와 상호동작한다. 'PortType', 'Operation', 'PartnerLink' 등을 정의함으로서 이들 각각의 액티비티들은 속해있는 웹 서비스 호출을 지정한다.
수신문은 외부로부터 메시지를 입력받는 기능을 수행한다. 다음 표는 수신문의 BPEL4WS 예이다.
<receive partnerLink="Buyer" portType="SP:PurchasingPT" operation="AsyncPurchase" variable="PO" <correlations> <correlation set="PurchaseOrder" initiate="yes"> </correlations> </receive>
표 7에서 <receive> 엘리먼트는 메시지를 보낸 파트너의 정보를 포함하고 있다. <receive> 엘리먼트에 포함되어 있는 'partnerLink', 'portType', 'operation' 그리고 ‘variable'과 같은 속성은 표 1의 칼라집합에서 Channel 데이터 타입에 포함되도록 정의하였다. ‘PartnerLink'는 BPEL4WS 프로세스와 연결된 파트너의 이름을 기술하고 있다. ’PortType'은 외부의 메시지 서버(미도시)로부터 전달 받을 메시지에 대한 포트명을 기술한다. 'Operation'은 포트에서 제공되는 연산을 식별하기 위해서 사용된다.
표 7에 예시된 수신문을 CPN으로 변환하는 과정은 다음과 같다. 먼저, 전이 Receive_S를 생성하고 전이 GetData를 생성하며, Receive_S와 GetData를 제1간선으로 연결한다. 다음으로, <receive> 엘리먼트로부터 partnerLink, portType, operation을 추출한 값과 I_Channel 칼라를 저장하는 저장소의 객체들과 추출된 값을 비교하여 그 값이 서로 일치하는 제1저장소를 찾아서 GetData와 연결하는 쌍방향의 제2간선을 생성한다. <receive> 엘리먼트가 <correlations> 엘리먼트를 포함하는 경우, <correlations> 엘리먼트에서 참조하는 Property의 이름과 Property 칼라 객체의 이름을 비교하여 그 값이 서로 일치하는 제2저장소를 찾아서 GetData와 연결하는 쌍방향의 제3간선을 생성한다. 다음으로, <receive> 엘리먼트의 Variable 속성 값과 variable 칼라 객체중 이름이 같은 제3저장소를 찾아서 GetData를 시작으로 하고 제3저장소를 끝으로 하는 제4간선을 생성한다. 마지막으로 Receive_E 전이를 생성하고 GetData와 Receive_E를 제5간선으로 연결한다.
도 8은 이러한 과정에 따라 표 7의 수신문을 CPN으로 표현한 것이다.
도 8의 전이 Receive_S(81)와 전이 Receive_E(82)는 수신문의 시작과 끝을 표시한다. 전이 GetData(83)는 외부 입력 데이터를 얻어오는 기능을 한다. 도 8에서 PO는 표 1의 칼라집합에 정의된 Variable 타입의 변수이다. 실제 BPEL4WS 예제를 CPN으로 모델링 하기 위해서는 BPEL4WS에 정의된 Variable문을 name 속성을 이름으로 하는 각각의 칼라 집합에 추가한다.
I_ Channel 타입은 입력 채널을 정의한 변수이다. 즉, I_Channel='in', 'Buyer', 'Purchasing', 'AsyncPurchase', 'PO'로 구성된다. 표 7의 <correlations> 엘리먼트의 CorrelationSet 타입은 메시지 서버로부터 입/출력되는 메시지들에 대한 문맥을 유지하는 역할을 한다. GetData 전이(83)에 의해 얻어진 PO 타입의 객체 po는 저장소(84)에 저장된다.
응답문은 외부로 메시지를 전달하는 연산을 수행한다. 응답문은 요청 행위에 대한 결과이기 때문에 반드시 해당 요청 행위와 동일한 포트를 사용해야 한다. ㅇ응답문은 요청 액티비티와 BPEL4WS에서 하나의 쌍으로 이용되며 BPEL4WS에서 정의된 서비스를 사용하기 원하는 서비스 요청자에게 동기적 서비스를 제공한다.
다음 표는 응답문의 BPEL4WS 예이다.
<reply partnerLink="customer" portType="loanServicePT" operation="request" variable="approval"> </reply>
표 8에 예시된 응답문을 CPN으로 변환하는 과정은 다음과 같다. 먼저, 전이 Reply_S를 생성하고 전이 PutData를 생성하며 Reply_S와 PutData를 제1간선으로 연결한다. <reply> 엘리먼트로 부터 partnerLink, portType, operation을 추출한 값과 O_Channel 칼라를 저장하는 저장소의 객체들과 추출된 값을 비교하여 그 값이 서로 일치하는 제1저장소를 찾아서 PutData와 쌍방향의 제2간선으로 연결한다. <reply> 엘리먼트가 <correlations> 엘리먼트를 포함하는 경우, <correlations> 엘리먼트에서 참조하는 Property의 이름과 Property 칼라 객체의 이름을 비교하여 그 값이 서로 일치하는 제2저장소를 찾아서 PutData와 쌍방향의 제3간선으로 연결한다. 다음으로, <reply> 엘리먼트의 variable 속성값과 Variable 칼라 객체중 이름이 같은 제3저장소를 찾아서 PutData와 제3저장소를 제4간선으로 연결한다. 끝으로, Reply_E 전이를 생성하고 PutData와 Reply_E를 제5간선으로 연결한다.
도 9는 상술한 과정에 따라 표 8에서 예시된 응답문을 CPN으로 변환한 것이다. 도 9에서, O_ Channel 타입의 데이터를 사용하여 외부로 전달될 파트너를 식별한다. reply문은 출력 채널을 정의한 변수 O_ Channel을 필요로 한다. 도 9의 경우 전이 PutData(91)는 Variable의 서브 타입인 approval 타입의 인스턴스 ‘ap’를 외부로 전달하는 역할을 한다.
호출문은 외부 파트너의 웹서비스를 정의된 BPEL4WS 프로세스 내부에서 호출하는 개념이다. portType, partnerLink, Operation 이외에도 이 호출은 호출되는 작동의 입력(input)과 출력(output)에 대해 입력과 출력을 지정한다. 호출은 동기식(synchronous, 요청/응답) 또는 비동기식(asynchronous, 일방)이 될 수 있다. 비동기식의 경우 입력 저장소만 요청된다.
동기식 invoke문은 파트너가 제공하는 웹서비스가 필요로 하는 변수 값을 입력하여 서비스를 호출하고 그 결과를 리턴(return)받는다. 이때 입력 변수 값의 이름은 'inputVariable' 속성에 기술하고 리턴되는 값은 'outputVariable' 속성에 명시한다.
다음 표는 동기식 invoke문의 BPEL4WS 예이다.
<invoke id="BpInv0" inputVariable="crInput" name="invokeCR" operation="process" outputVariable="crOutput" partnerLink="creditRatingService" portType="services:CreditRatingService" />
다음 표는 비동기식 invoke문의 BPEL4WS 예이다. 비동기 invoke문은 파트너의 웹서비스를 호출한다는 면에서는 동기적 invoke문과 같지만 파트너로부터 웹서비스 호출에 대한 리턴값이 없다는 점이 다르다. 파트너부터의 리턴 값은 receive문을 통해서 들어올 수도 있고 리턴값이 없는 경우도 있다. 즉, receive문을 통한 파트너의 요청에 대한 응답을 하는 경우에는 리턴값이 없고, 파트너가 제공하는 서비스를 비동기적으로 요청하는 경우에는 receive문을 통해서 리턴값을 전달 받는다.
<invoke id="BpInv0" inputVariable="crInput" name="invokeCR" operation="process" outputVariable="crOutput" partnerLink="creditRatingService" portType="services:CreditRatingService" />
표 9 또는 표 10에 예시된 호출문을 CPN으로 변환하는 과정은 다음과 같다. 먼저, 호출문의 시작을 나타내는 전이 Invoke_S를 생성하고, <invoke> 엘리먼트의 속성중 InputVariable만 존재할 경우 비동기식 호출문에 해당하는 전이 AsynCall를 생성한다. <invoke> 엘리먼트의 속성중 InputVariable속성과 outputVariable 속성이 모두 존재할 경우 동기식 호출문에 해당하는 전이 SynCall을 생성하고, Invoke_S와 AysnCall 또는 SynCall을 제1간선으로 각각 연결한다. 다음으로, <invoke> 엘리먼트로부터 partnerLink, portType, operation을 추출한 값과 여러 저장소에 저장된 O_Channel 와 IO_Channel 객체의 값을 각각 비교하여 그 값이 서로 일치하는 제1저장소를 찾고 제1저장소와 AsynCall 전이 또는 SynCall 전이를 각각 쌍방향의 제2간선으로 연결한다. <invoke> 엘리먼트가 <correlations> 엘리먼트를 포함하는 경우, <correlations> 엘리먼트에서 참조하는 Property의 이름과 Property 칼라 객체의 이름을 비교하여 그 값이 서로 일치하는 제2저장소를 찾고, 제2저장소와 전이 AsynCal 또는 SynCall을 쌍방향의 제3간선으로 연결한다. 다음으로, <invoke> 엘리먼트의 inputVariable 속성값 또는 OutputVariable 속성값과 Variable 객체중 이름이 같은 제3저장소를 찾고, 제3저장소와 전이 SynCall 또는 AsynCall을 제4간선으로 연결한다. 끝으로, Invoke_E 전이를 생성하고 SynCall 또는 Asyncall로부터 Invoke_E를 제5간선으로 연결한다.
도 10은 상술한 과정에 따라 표 9에 예시된 동기 호출문을 CPN으로 변환한 것이다. 도 10에서 전이 synCall(101)은 O_ Channel 타입의 객체 ivk1로부터 PartnerLink, PortType, Operation에 대한 정보와 입출력 변수 이름 crIn과 crOut을 추출한 뒤에 CrInput 타입의 객체 crIn을 입력변수로 하는 파트너의 웹서비스를 호출하고 그 결과인 CrOutput 타입의 객체 crOut을 저장한다.
도 11은 상술한 과정에 따라 표 10에서 예시된 비동기식 호출문을 CPN으로 변환한 것이다. 도시된 바에 따르면, 전이 asynCall(111)은 O_ Channel 타입의 객체 ivk1로부터 PartnerLink, PortType, Operation에 대한 정보와 입력 변수 이름 crIn을 추출한 뒤에 CrInput 타입의 객체 crIn을 저장소로부터 가져와서 파트너의 웹서비스를 호출한다.
할당문은 하나의 저장소에서 다른 저장소로 데이터를 복사하는데 사용되는 것으로, 어떤 Variable이나 PartnerLink로부터 원하는 값을 얻어서 다른 Variable이나 PartnerLink에 그 값을 대입하는 연산을 수행한다.
뿐만 아니라 수식(Expression)을 사용하여 데이터를 만들고 삽입할 수 있다. 비지니스 프로토콜 작동을 설명해야하는 간단한 연산을 수행할 때 기본적으로 수식이 사용된다. 수식은 메시지 선택, 속성, 리터럴 상수에 대해 작동하여 컨테이너 속성이나 선택에 대해 새로운 값을 만들어낸다.
각 assign문에는 한 개 이상의 <copy> 엘리먼트가 포함되어있다. <copy> 엘리먼트에는 정확히 한 개의 <from> 엘리먼트와 <to> 엘리먼트가 있다. <from>과 <to> 엘리먼트에는 다양한 형식이 있다. 중요한 것은 소스(<from>)에서 목적지(<to>)로 복사된 값이 반드시 타입 호환가능(type-compatible)해야 한다는 점이다.
다음 표는 assign문의 BPEL4WS 예이다.
<assign> <copy> <from variable="c1"/> <to variable="c2"/> </copy> </assign>
<assign>엘리먼트는 <from>엘리먼트와 <to>엘리먼트를 서브 엘리먼트로 포함한다. 이것은 <from> 엘리먼트에서 정의된 변수로부터 <to> 엘리먼트에 지정된 변수로 값을 복사하는 기능을 수행한다. <from> 엘리먼트에 5가지 종류가 있고 <to>엘리먼트에는 2가지 종류가 있다.
다음 표는 <from> 엘리먼트의 5가지 종류에 대한 BPEL4WS 예들이다.
(1) <from variable="Company" part="address"/> (2) <from partnerLink="Buyer" endpointReference="myRole"/> (3) <from variable="Shipping" property="props:itemcount"/> (4) <from expression="bpws:getVariableData('item') + bpws:getVariableproperty('shipNotice','itemsCount')"/> (5) <from>"Hello"</from>
표 12에서 <from> 엘리먼트의 속성으로 사용된 variable, partnerLink, property 들은 각각 이미 정의되어 있는 <variable>, <partnerLink>, <property> 엘리먼트의 이름을 의미한다. <partnerLink> 엘리먼트는 BPEL4WS에서 서비스를 호출하는 파트너를 추상화하기 위해서 사용된다. <property> 엘리먼트는 어떤 메시지 타입이 가지고 있는 특정 데이터를 지정하기 위해서 사용된다.
표 12의 (1)번과 같이 variable과 part의 두 가지 속성이 존재하는 <from> 엘리먼트를 CPN으로 변환하는 과정은 다음과 같다. 먼저, 전이 From_S를 생성하고 전이 From_S로부터 part 값을 저장하는 제1저장소를 만들며 From_S로부터 제1저장소로 part를 전달하는 제1간선을 생성한다. 다음으로, 전이 GetValue 생성하고 <from> 엘리먼트의 variable 속성값과 여러 저장소를 검색하여 variable 칼라의 이름이 같은 제2저장소를 찾고, 제2저장소와 전이 GetValue를 제2간선으로 연결한다. 전이 GetValue가 수행한 결과를 저장할 제3저장소를 만들고, 제3저장소와 GetValue전이를 제3간선으로 연결하며, From_E 전이를 생성하여 제3저장소와 제4간선으로 연결한다.
도 12는 이러한 과정에 따라 표 12에 예시된 (1)번 <from> 엘리먼트를 CPN으로 표현한 것이다. 도 12에서, 전이 getValue(121)는 Company 타입의 변수 c를 얻어오고 이것이 포함하는 멤버 데이터의 이름에 대한 정보를 가진 PartName 타입의 변수 part를 가지고 와서 c로부터 part의 이름이 가지고 있는 값을 추출하여 v(122)에 저장한다.
표 12의 (2)번과 같이 partnerLink와 endpointReference의 두 가지 속성이 존재하는 <from> 엘리먼트를 CPN으로 변환하는 과정은 다음과 같다. 먼저, 전이 From_S를 생성하고 전이 From_S로부터 endpointReference 값을 저장하는 제1저장소를 만들며, From_S로부터 제1저장소로 endpointReference의 값를 전달하는 제1간선을 생성한다. 다음으로, 전이 GetPort를 생성하고 여러 저장소중에서 <from>엘리먼트의 partnerLink 속성과 같은 이름의 제2저장소를 찾고 제2저장소와 전이 GetPort를 제2간선으로 연결한다. 전이 GetPort의 실행 결과인 PortType 객체를 저장하는 제3저장소를 생성하고 GetPort로부터 제3저장소까지 제3간선으로 연결하고, From_E 전이를 생성하여 제3저장소와 제4간선으로 연결한다.
도 13은 이러한 과정에 따라 표 12에 예시된 (2)번 <from> 엘리먼트를 CPN으로 변환한 것이다. 도 13에서, 전이 getPort(131)는 RoleName 타입의 변수 role을 얻어서 PartnerLink 타입의 변수 pLink에 저장된 <portType> 엘리먼트에 대한 정보를 추출하여 저장한다.
표 12의 (3)번과 같이 variable과 property의 두 가지 속성이 존재하는 <from> 엘리먼트를 CPN으로 변환하는 과정은 다음과 같다. 먼저, 전이 From_S를 생성하고 전이 GetValue를 생성하며 From_S에서 GetValue로 제1간선을 연결한다. <from> 엘리먼트의 속성중 variable 값과 같은 이름을 갖는 제1저장소를 찾아서 전이 GetValue과 쌍방향의 제2간선으로 연결한다. <from> 엘리먼트의 속성중 property 값과 같은 이름을 갖는 제2저장소를 찾고, 전이 GetVaule에서 제2저장소로 제3간선을 연결한다. 전이 GetValue의 실행 결과인 xsd:type 객체를 저장하는 제3저장소를 생성하고 GetValue에서 제3저장소를 제4간선으로 연결한다. 끝으로, From_E 전이를 생성하고 제3저장소와 제5간선으로 연결한다.
도 14는 이러한 과정에 따라 표 13에서 예시된 (3)번 <from> 엘리먼트를 CPN으로 표현한 것이다. 도 14에서, 전이 getValue(141)는 Property 타입의 변수 prop로부터 Shipping 타입의 변수 s에 저장된 어떤 정보를 추출하는 질의 방법을 이용하여 s로부터 값을 추출한 뒤에 v(142)에 저장한다.
표 12의 (4)번과 같이 expression 한 가지 속성이 존재하는 <from> 엘리먼트를 CPN으로 변환하는 과정은 다음과 같다. 먼저, 전이 From_S를 생성하고 전이 From_S로부터 expression 값을 저장하는 제1저장소를 만들고 From_S로부터 제1저장소로 Expression의 값을 전달하는 제1간선을 생성한다. 다음으로, 전이 EvalExp를 만들고 전이 EvalExp의 실행 결과를 저장하는 제2저장소를 만들고, 전이 EvalExp로부터 제2저장소로 제2간선을 연결한다. 마지막으로, From_E 전이를 생성하고 제2저장소와 제3간선으로 연결한다.
도 15는 이러한 과정에 따라 표 13에서 예시된 (4)번 <from> 엘리먼트를 CPN으로 표현한 것이다. 도 15에서, 전이 evalExp(151)는 Expression 타입의 일반식을 읽어와서 평가한 뒤에 그 결과를 v(152)에 저장한다.
표 12의 (5)번과 같이 아무 속성이 존재하지 않는 <from> 엘리먼트를 CPN으로 변환하는 과정은 다음과 같다. 먼저, 전이 From_S를 생성하고 전이 From_S로부터 Literal 값을 저장하는 제1저장소를 만들며 From_S에서 제1저장소를 연결하는 제1간선을 생성한다. 다음으로, 전이 From_E를 생성하고 이를 제1저장소로 연결하는 제2간선을 생성한다.
도 16은 이러한 과정에 따라 표 13에서 예시된 (5)번 <from> 엘리먼트를 CPN으로 표현한 것이다. 도 16에서는 <from> 엘리먼트에 포함되어 있는 문자열(Literal)을 그대로 저장한다.
다음 표는 <to> 엘리먼트의 3가지 종류에 대한 BPEL4WS 예이다.
(1) <to variable="approval" property="props:name"/> (2) <to variable="answer" part="accept"/> (3) <to partnerLink="auctionService"/>
<to> 엘리먼트에서 사용된 속성의 의미는 <from> 엘리먼트에서 사용된 속성의 의미와 같고, 다만 값을 추출하는데 사용되는 것이 아니라 값을 저장하는데 사용된다는 것이 다르다.
표 13의 (1)번과 같이 variable 및 property의 두 가지 속성이 존재하는 <to> 엘리먼트를 CPN으로 변환하는 과정은 다음과 같다. 먼저, 전이 To_S와 전이 SetValue를 생성하고 전이 To_S에서 전이 SetValue로 전달할 값을 저장할 제1저장소를 생성한다. 다음으로, 전이 To_S에서 제1저장소로 연결되는 제1간선과 제1저장소에서 전이 SetValue로 연결되는 제2간선을 생성한다. <to> 엘리먼트의 속성중 variable 값과 같은 이름을 갖는 제2저장소를 찾고, 제2저장소와 전이 SetValue를 쌍방향의 제3간선으로 연결한다. <to> 엘리먼트의 속성중 property 값과 같은 이름을 갖는 제3저장소를 찾고, 전이 SetVaule에서 제3저장소로 연결되는 제4간선을 생성한다. 끝으로, 제4저장소를 만들어 전이 SetValue에서 제4저장소를 연결하는 제5간선과 제4저장소에서 To_E를 연결하는 제6간선을 생성한다.
도 17은 이러한 과정에 따라 표 13에서 (1)번의 <to>엘리먼트를 CPN으로 표현한 것이다. 도 17에서, 전이 setValue(171)는 저장소(172)에 저장된 값을 Approval 타입의 변수 s에 저장하기 위해서 s에 접근할 수 있는 정보를 Property 타입의 변수 prop로부터 얻어와서 s의 어떤 위치에 값을 할당한다.
표 13의 (2)번과 같이 variable 및 part의 두 가지 속성이 존재하는 <to> 엘리먼트를 CPN으로 변환하는 과정은 다음과 같다. 먼저, 전이 To_S를 생성하고 전이 To_S로부터 part 값과 데이터값을 저장하는 제1저장소를 만들고 To_S로부터 제1저장소로 part를 전달하는 제1간선을 생성한다. 다음으로, 전이 SetValue 생성하고 <to> 엘리먼트의 variable 속성값과 여러 저장소를 검색하여 variable 칼라의 이름이 같은 제2저장소를 찾아서 전이 SetValue와 제2간선으로 연결한다. 전이 SetValue와 연결될 제3저장소를 만들고 SetValue전이와 연결하는 제3간선을 생성한다. 끝으로, To_E 전이를 생성하고 제3저장소와 제4간선으로 연결한다.
도 18은 이러한 과정에 따라 표 13에서 (2)번의 <to>엘리먼트를 CPN으로 표현한 것이다. 도 18에서, 전이 setValue(181)는 Answer 타입의 변수 ans에 입력할 값을 value변수로부터 전달받고, 입력할 데이터 멤버의 이름을 part 변수로부터 얻어온 뒤에 part에 해당하는 값을 할당한다.
표 13의 (3)번과 같이 partnerLink의 한 가지 속성이 존재하는 <to> 엘리먼트를 CPN으로 변환하는 과정은 다음과 같다. 먼저, 전이 To_S를 생성하고 전이 To_S로부터 URL 칼라 객체를 저장하는 제1저장소를 만들고, To_S로부터 제1저장소로 URL 칼라 객체를 전달하는 제1간선을 생성한다. 다음으로, 전이 SetAddress 생성하고 <to> 엘리먼트의 variable 속성값과 PartnerLink 칼라의 이름이 같은 제2저장소를 찾아서 전이 SetValue와 제2간선으로 연결한다. 전이 SetValue와 연결될 제3저장소를 만들고 SetValue전이와 연결하는 제3간선을 생성한다. 끝으로, To_E 전이를 생성하고 제3저장소와 제4간선으로 연결한다.
도 19는 이러한 과정에 따라 표 13에서 (3)번의 <to>엘리먼트를 CPN으로 표현한 것이다. 도 19에서, 전이 setAddress(191)는 URL 타입을 저장하는 저장소(192)로부터 변수 addr에 저장된 물리적인 주소값을 얻어와서 PartnerLink 타입의 변수 pLink에 저장한다.
wait문은 특정 시간동안 대기 상태로 유기하기 위해서 사용된다. <Wait>엘리먼트는 속성 for와 속성 until중 하나로 설정될 수 있다. for 속성이 사용된 경우 정해진 시간동안 대기 상태가 되고, until 속성이 사용된 경우 정해진 시간까지 대기 상태가 된다.
다음 표는 대기(wait)문의 BPEL4WS 예이다.
<wait until="'2002-12-24T18:00+01:00'" />
도 20은 표 14에 예시된 대기문을 CPN으로 표현한 것이다. 도 20에서, Time 타입이 저장되는 저장소(201)에 초기값으로 ‘2002-12-24T18:00 +01:00’이 설정되고, 이값은 변수 t로 2개의 전이(202, 203)로 전달되어 비교를 거쳐 루프를 돌거나 끝나게 된다.
이와 같이, 기본 액티비티 변환이 완료되면 함수 변환부(25)는 수식 또는 함수(function)를 CPN으로 변환한다(15단계).
수식(expression)문은 <from> 엘리먼트와 <to>의 속성 'Expression', <source> 엘리먼트의 속성 'TransitionCondition', <while> 엘리먼트의 속성 'Condition', <case> 엘리먼트의 속성 'Condition'에 사용된다.
수식문을 CPN으로 변환하는 과정은 다음과 같다. 먼저, 전이 Expression_S와 Expression 타입의 객체를 저장하는 제1저장소를 생성하고, 전이 Expression_S에서 제1저장소로 Expression 타입의 객체를 전달하는 제1간선을 생성한다. 다음으로, 전이 EvalExp를 생성하고 제1간선에서 전이 EvalExp로 Expression 타입의 객체를 전달하는 제2간선을 생성한다. Value 타입의 객체를 저장하는 제2저장소를 만들고 전이 EvalExp에서 제2저장소로 Value 타입의 객체를 전달하는 제3간선을 생성한다. 끝으로, 전이 Expression_E를 생성하고 제2저장소에서 전이 Expression_E로 Value 타입의 객체를 전달하는 제4간선을 생성한다.
도 21은 이러한 과정에 따라 수식문을 CPN으로 변환한 것이다. 도 21에서 전이 EvalExp(211)는 저장소(212)로부터 expression을 가져와서 평가한 후 Value 형태로 v(213)에 저장한다.
수식문 내에는 getVariableProperty()함수 및 getVariableData()함수가 사용될 수 있다.
다음 표는 getVariableProperty()함수에 대한 BPEL4WS의 예이다.
getVariableProperty('Shipping', 'props:itemcount')
표 15에서 예시된 getVariableProperty()함수를 CPN으로 변환하는 과정은 다음과 같다. 먼저, 전이 GetVarProp_S과 ProcessToken 타입의 객체를 저장하는 제1저장소를 만들고 전이 GetVarProp_S에서 제1저장소로 ProgressToken 타입객체를 전달하는 제1간선을 생성한다. 전이 getValue를 생성하고 제1저장소와 전이 getValue로 ProgressToken 타입 객체를 전달하는 제2간선을 생성한다. Variable 타입의 객체를 저장하는 제2저장소를 만들고 제2저장소와 전이 getValue를 쌍방향으로 Variable 타입의 객체를 전달하는 제3간선을 생성한다. 다음으로, Property 타입의 객체를 저장하는 제3저장소를 만들고 제3저장소와 전이 getValue로 Property 타입의 객체를 전달하는 제4간선을 생성한다. Value 타입의 객체를 저장하는 제4저장소를 만들고 전이 getValue에서 제4저장소로 Value 타입의 객체를 전달하는 제5간선을 생성한다. 전이 GetVarProp_E를 생성하고 제4저장소에서 생성된 전이 GetVarProp_E로 Value 타입의 객체를 전달하는 제6간선을 생성한다.
도 22는 이러한 과정에 따라 표 15에서 예시된 getVariableProperty()함수를 CPN으로 변환한 것이다. 도 22에서, 전이 getValue(221)는 Property 타입의 변수 prop로부터 Shipping 타입의 변수 s에 저장된 어떤 정보를 추출하는 질의 방법을 이용하여 s로부터 값을 추출한 뒤에 v(142)에 저장한다.
다음 표는 getVariableData()함수에 대한 BPEL4WS의 예이다.
getVariableData('Shipping')
도 23은 표 16에서 예시된 getVariableData()함수를 CPN으로 변환한 것이다.
도 23에서, 전이 getVariable(231)은 shipping 타입의 변수 s에 저장된 어떤 정보를 추출하는 질의 방법을 이용하여 s로부터 값을 추출한 뒤에 v(142)에 저장한다.
본 발명은 또한 컴퓨터로 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD_ROM, 자기 테이프, 플로피 디스크 및 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브, 예를 들어 인터넷을 통한 전송의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드로 저장되고 실행될 수 있다.
본 발명에 따르면, BPEL4WS로 기술된 웹서비스 프로세스를 CPN으로 변환함으로써 웹서비스 프로세스의 실행 및 분석이 용이하게 될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서, 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사 용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (16)

  1. BPEL4WS 문서를 파싱하여 CPN에 필요한 칼라집합을 생성하는 단계;
    상기 칼라 집합을 이용하여 상기 BPEL4WS의 구조 액티비티를 CPN으로 변환하는 단계;
    상기 칼라 집합을 이용하여 상기 구조 엑티비티에 포함된 기본 액티비티를 CPN으로 변환하는 단계; 및
    상기 구조 액티비티 또는 상기 기본 엑티비티에 사용된 수식 또는 함수를 CPN으로 변환하는 단계를 포함함을 특징으로 하는 변환 방법.
  2. 제1항에 있어서, 상기 칼라집합을 생성하는 단계는
    상기 BPEL4WS 문서에 포함된 엘리먼트들에 대해 상기 엘리먼트들이 갖는 속성을 이용하여 칼라 객체를 각각 생성하는 것을 특징으로 하는 변환 방법.
  3. 제1항에 있어서, 상기 구조 액티비티를 상기 CPN으로 변환하는 단계는
    상기 구조 액티비티가 순차문이면, 상기 순차문에 포함된 엘리먼트들에 대해 순차적으로 전이들을 생성하고, 상기 전이들 사이에 저장소를 각각 구비하며, 상기 저장소들 및 전이들 사이를 간선으로 연결하여 변환하는 것을 특징으로 하는 변환 방법.
  4. 제1항에 있어서, 상기 구조 액티비티를 상기 CPN으로 변환하는 단계는
    상기 구조 액티비티가 선택분기문이면, 상기 선택분기문에 포함된 수식의 불리언 판정 결과에 따라 해당 기본 액티비티들에 해당하는 전이들을 생성하고, 상기 전이들 사이에 저장소를 각각 구비하며 상기 저장소들 및 상기 전이들 사이를 간선으로 연결하여 변환하는 것을 특징으로 하는 변환 방법.
  5. 제1항에 있어서, 상기 구조 액티비티를 상기 CPN으로 변환하는 단계는
    상기 구조 액티비티가 반복문이면, 상기 반복문에 포함된 수식의 불 판정 결과에 따라 해당 엘리먼트에 해당하는 전이를 생성하고 상기 수식이 불 판정의 조건을 만족하는 동안 상기 전이를 반복 수행하며, 상기 전이의 수행 결과를 저장하는 저장소를 구비하여 상기 전이 및 저장소를 간선으로 연결하여 변환하는 것을 특징으로 하는 변환 방법.
  6. 제1항에 있어서, 상기 구조 액티비티를 상기 CPN으로 변환하는 단계는
    상기 구조 액티비티가 선택입력문이면, 시작점에서 나누어진 분기들에 각각 해당하는 제1전이들이 모두 실행되고 상기 분기들중 어느 하나가 완료되면 전체가 완료되도록 제2전이들이 배치되고, 상기 제1 및 제2전이들 사이에는 저장소를 각각 구비하며 상기 저장소들, 상기 제1 및 제2전이들 사이를 간선으로 각각 연결하여 변환하는 것을 특징으로 하는 변환 방법.
  7. 제1항에 있어서, 상기 구조 액티비티를 상기 CPN으로 변환하는 단계는
    상기 구조 액티비티가 플로우문이면, 상기 플로우문에 포함된 엘리먼트에 해당하는 전이들 및 저장소들을 생성하며, 상기 엘리먼트들의 속성값에 따라 상기 저장소들과 전이들을 간선으로 연결하여 변환하는 것을 특징으로 하는 변환 방법.
  8. 제1항에 있어서, 상기 기본 액티비티를 상기 CPN으로 변환하는 단계는
    상기 기본 액티비티가 수신문이면, 상기 수신문에 해당하는 속성을 이용하여 데이터를 입력받는 전이 및 상기 전이의 수행결과를 저장하는 저장소를 생성하고, 상기 전이 및 저장소를 간선으로 연결하여 변환하는 것을 특징으로 하는 변환 방법.
  9. 제1항에 있어서, 상기 기본 액티비티를 상기 CPN으로 변환하는 단계는
    상기 기본 액티비티가 응답문이면, 상기 응답문에 해당하는 복수의 속성들을 이용하여 데이터를 전달하는 전이를 생성하여 변환하는 것을 특징으로 하는 변환 방법.
  10. 제1항에 있어서, 상기 기본 액티비티를 상기 CPN으로 변환하는 단계는
    상기 기본 액티비티가 호출문이면, 상기 호출문에 속하는 속성들중 제1속성의 존재여부에 따라 동기 호출 전이 또는 비동기 호출 전이를 생성하고, 복수의 입출력 값들을 각각 저장하는 복수의 저장소들을 생성하며, 상기 속성들중 상기 제1 속성이 아닌 복수의 속성과 동일한 칼라 이름을 갖는 저장소를 상기 저장소들중에서 찾아서 상기 동기 호출 전이 또는 비동기 호출 전이에 간선으로 연결하여 변환하는 것을 특징으로 하는 변환 방법.
  11. 제1항에 있어서, 상기 기본 액티비티를 상기 CPN으로 변환하는 단계는
    상기 기본 액티비티가 할당문이면, 상기 할당문에 포함된 제1엘리먼트의 속성을 제2엘리먼트의 속성으로 복사하는 제1전이를 생성하고, 상기 제1엘리먼트의 속성에 대응하는 제1저장소를 생성하고, 상기 제1전이의 수행 결과를 저장하는 제2저장소를 생성하며, 상기 제1저장소, 상기 제1전이 및 상기 제2저장소를 간선으로 연결하여 변환하는 것을 특징으로 하는 변환 방법.
  12. 제11항에 있어서,
    상기 제2엘리먼트의 속성에 대응하는 제3저장소, 데이터 전달을 위한 제2전이 및 상기 제2전이를 수행 결과를 저장하는 제4저장소를 생성하며, 상기 제3저장소, 제2전이 및 제4저장소를 간선으로 연결하는 과정을 더 포함하여 변환하는 것을 특징으로 하는 변환 방법.
  13. 제1항에 있어서, 상기 수식을 CPN으로 변환하는 단계는
    상기 수식의 타입을 저장하는 제1저장소, 상기 수식을 평가하는 전이 및 상기 평가 결과를 저장하는 제2저장소를 생성하고, 상기 제1저장소, 전이 및 제2저장소를 간선으로 연결하여 변환하는 것을 특징으로 하는 변환 방법.
  14. 제1항에 있어서, 상기 함수를 CPN으로 변환하는 단계는
    상기 함수에 필요한 속성들을 각각 저장하는 복수의 제1저장소들을 생성하고, 상기 함수의 기능을 수행하는 전이를 생성하며, 상기 전이의 수행 결과를 저장하는 제2저장소를 생성하며, 상기 제1저장소들, 전이 및 제2저장소를 간선으로 연결하여 변환하는 것을 특징으로 하는 변환 방법.
  15. BPEL4WS 문서를 파싱하여 CPN에 필요한 칼라집합을 생성하는 칼라 생성기;
    상기 칼라 집합을 이용하여 상기 BPEL4WS의 구조 액티비티를 CPN으로 변환하는 구조 액티비티 변환부;
    상기 칼라 집합을 이용하여 상기 구조 엑티비티에 포함된 기본 액티비티를 CPN으로 변환하는 기본 액티비티 변환부; 및
    상기 구조 액티비티 또는 상기 기본 엑티비티에 사용된 수식 또는 함수를 CPN으로 변환하는 함수 변환부를 포함함을 특징으로 하는 변환 장치.
  16. 삭제
KR1020060054906A 2005-12-08 2006-06-19 Bpel4ws 프로세스를 칼라드 페트리넷으로 변환하는방법 및 그 장치 KR100825722B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020050119276 2005-12-08
KR20050119276 2005-12-08

Publications (2)

Publication Number Publication Date
KR20070061171A KR20070061171A (ko) 2007-06-13
KR100825722B1 true KR100825722B1 (ko) 2008-04-29

Family

ID=38357107

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060054906A KR100825722B1 (ko) 2005-12-08 2006-06-19 Bpel4ws 프로세스를 칼라드 페트리넷으로 변환하는방법 및 그 장치

Country Status (1)

Country Link
KR (1) KR100825722B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107729620A (zh) * 2017-09-20 2018-02-23 昆明理工大学 一种基于层次着色Petri网的嵌入式软件能耗预测方法

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06324852A (ja) * 1993-05-11 1994-11-25 Sanyo Electric Co Ltd プログラム言語変換装置
JPH10217969A (ja) * 1997-01-31 1998-08-18 Railway Technical Res Inst 列車ダイヤシミュレーション装置および列車ダイヤ作成装置
US6219831B1 (en) * 1992-08-12 2001-04-17 International Business Machines Corporation Device and method for converting computer programming languages
KR20020054239A (ko) * 2000-12-27 2002-07-06 오길록 에스디엘로 기술된 프로토콜을 자료 흐름과 셀프루프를처리하여 칼라드 페트리 넷으로 변환하는 방법
US6698014B1 (en) * 1999-10-14 2004-02-24 Convert Systems Inc. System for automatically converting source code from one programming language to another
KR20040057037A (ko) * 2002-12-24 2004-07-01 한국전자통신연구원 에스디엘에서 c언어로의 변환 시스템 및 방법, 그프로그램이 구현된 기록매체
US20050131667A1 (en) * 2003-12-12 2005-06-16 John Woodring Complex process modeling and simulation system and method
KR20050064800A (ko) * 2003-12-24 2005-06-29 한국전자통신연구원 비피이엘에서 더블유에스씨아이로의 변환 방법 및 그 변환기
KR20050064799A (ko) * 2003-12-24 2005-06-29 한국전자통신연구원 더블유에스씨아이에서 비피이엘의 변환 방법 및 그 변환기
KR20050117438A (ko) * 2004-06-10 2005-12-14 한국전자통신연구원 Bpel에서 bpml로의 변환 방법
KR20060087998A (ko) * 2004-10-01 2006-08-03 마이크로소프트 코포레이션 작업 흐름 모델을 표현하기 위한 컴퓨터 구현 시스템
US20060242002A1 (en) * 2005-04-26 2006-10-26 Xerox Corporation Validation and analysis of JDF workflows using colored Petri nets

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6219831B1 (en) * 1992-08-12 2001-04-17 International Business Machines Corporation Device and method for converting computer programming languages
JPH06324852A (ja) * 1993-05-11 1994-11-25 Sanyo Electric Co Ltd プログラム言語変換装置
JPH10217969A (ja) * 1997-01-31 1998-08-18 Railway Technical Res Inst 列車ダイヤシミュレーション装置および列車ダイヤ作成装置
US6698014B1 (en) * 1999-10-14 2004-02-24 Convert Systems Inc. System for automatically converting source code from one programming language to another
KR20020054239A (ko) * 2000-12-27 2002-07-06 오길록 에스디엘로 기술된 프로토콜을 자료 흐름과 셀프루프를처리하여 칼라드 페트리 넷으로 변환하는 방법
KR20040057037A (ko) * 2002-12-24 2004-07-01 한국전자통신연구원 에스디엘에서 c언어로의 변환 시스템 및 방법, 그프로그램이 구현된 기록매체
US20050131667A1 (en) * 2003-12-12 2005-06-16 John Woodring Complex process modeling and simulation system and method
KR20050064800A (ko) * 2003-12-24 2005-06-29 한국전자통신연구원 비피이엘에서 더블유에스씨아이로의 변환 방법 및 그 변환기
KR20050064799A (ko) * 2003-12-24 2005-06-29 한국전자통신연구원 더블유에스씨아이에서 비피이엘의 변환 방법 및 그 변환기
KR20050117438A (ko) * 2004-06-10 2005-12-14 한국전자통신연구원 Bpel에서 bpml로의 변환 방법
KR20060087998A (ko) * 2004-10-01 2006-08-03 마이크로소프트 코포레이션 작업 흐름 모델을 표현하기 위한 컴퓨터 구현 시스템
US20060242002A1 (en) * 2005-04-26 2006-10-26 Xerox Corporation Validation and analysis of JDF workflows using colored Petri nets

Also Published As

Publication number Publication date
KR20070061171A (ko) 2007-06-13

Similar Documents

Publication Publication Date Title
Lee et al. The process interchange format and framework
Tikka et al. Identifying causal effects with the R package causaleffect
US5930512A (en) Method and apparatus for building and running workflow process models using a hypertext markup language
US7499906B2 (en) Method and apparatus for optimization in workflow management systems
US20080002218A1 (en) Method and system for an xml-driven document conversion service
US20070266377A1 (en) Systems and methods for transforming modeled business processes into executable processes
Aquilani et al. Performance analysis at the software architectural design level
Dechsupa et al. Transformation of the BPMN design model into a colored Petri net using the partitioning approach
CN111104106A (zh) 集成业务流程与通讯报文的可视化开发方法、系统及介质
CN102681878A (zh) 无需修改现有代码即可增加新软件特征的方法
US7930678B2 (en) Visualizing and modeling interaction relationships among entities
KR20080104303A (ko) 데이터 구조를 갖는 하나 이상의 컴퓨터 판독가능 매체, 서비스가 데이터를 처리하는 방법 및 이 방법을 수행하게 하는 컴퓨터 실행가능 명령어가 있는 하나 이상의 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품
Aslam et al. Expressing business process models as OWL-S ontologies
Han et al. A ubiquitous workflow service framework
US20040167915A1 (en) Systems and methods for declaratively transforming data objects between disparate representations
US20060053106A1 (en) Use of generated SQL for evaluation of decision point rules in a workflow system
KR100825722B1 (ko) Bpel4ws 프로세스를 칼라드 페트리넷으로 변환하는방법 및 그 장치
Demey et al. A Conceptual Markup Language that supports interoperability between Business Rule modeling systems
Di Lorenzo et al. Towards Semantics Driven Generation of Executable Web Services Compositions.
Reiff-Marganiec et al. Feature interactions in telecommunications and software systems VIII
CN116521643A (zh) 基于孪生平台支持多执行引擎的数据处理方法及设备
Petriu et al. Software performance models from system scenarios
Lahoud et al. OCEAN: A semantic web service to extract knowledge in E-Groupwares
Elstermann et al. The combined use of the web ontology language (OWL) and abstract state machines (ASM) for the definition of a specification language for business processes
Ayala et al. A goal-oriented strategy for supporting commercial off-the-shelf components selection

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20110411

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee