IBM®
메인 컨텐츠로 가기
    Korea [국가변경]    이용약관
 
 
   
        제품    서비스 & 솔루션    고객지원 & 다운로드    회원 서비스    
메인 컨텐츠로 가기

한국 developerWorks  >  오픈 소스  >

이클립스로 비즈니스 프로세스 실행하기

STP BPMN Modeler, 이클립스 ATL, 아파치 ODE

developerWorks
Go to the previous page10 페이지 중 4 페이지Go to the next page

문서 옵션

샘플 코드


제안 및 의견
피드백

튜토리얼 평가

이 컨텐츠를 개선하기 위한 도움을 주십시오.


이클립스 STP BPMN Modeler 사용하기

STP BPMN Modeler는 사용하기 쉽다. 본 절에서 다루겠지만 간단한 끌어넣기만으로도 원하는 것을 설계할 수 있다. 먼저 웹 사이트에서 방문자가 장난감을 구매하는 BPMN 다이어그램을 설계하는 방법을 설명한다. 그리고 나서 이 모델에서 사용될 몇 가지 활동 유형에 대해 다룬다. BPMN Modeler를 사용해 최적의 비즈니스 프로세스를 설계하는 방법을 배울 수 있다.

첫 번째 BPMN 다이어그램

이클립스 STP를 시작해보자. BPMN Modeler가 프로젝트 기반이 아니기 때문에 일반 프로젝트에서 시작하면 된다.

새 프로젝트를 만들려면 File > New > Project를 클릭한다. 그리고 나서 General 폴더를 열어 Project를 선택한다.


그림 2. 일반적인 프로젝트 만들기
일반적인 프로젝트 만들기

Next를 클릭하고 프로젝트 이름을 STPbpmn이라 넣는다.


그림 3. 프로젝트 이름 붙이기
프로젝트 이름 붙이기

패키지 익스플로러(Package Explorer) 창에서 새 프로젝트가 보여야 한다. 이를 선택하고 File > New > Other을 선택한다. SOA 도구 폴더를 열어 Bpmn Diagram을 선택한다.


그림 4. 새 BPMN 다이어그램 만들기
새 BPMN 다이어그램 만들기

Next를 클릭하고 파일 이름 공간에 파일 이름을 mybiz_flow라 넣는다.


그림 5. BPMN 다이어그램 이름 만들기
BPMN 다이어그램 이름 만들기

Finish를 클릭하여 BPMN 다이어그램을 만든다. 이제 프로젝트는 아래 그림처럼 설정돼야 한다.


그림 6. 프로젝트 창
프로젝트 창

이제 오른쪽 팔레트에서 보이는 것처럼 몇 가지 활동 유형과 요소에 대해 배워보자.




위로


활동 유형 소개하기

비즈니스 프로세스를 설계하는데 사용할 수 있는 다양한 활동 유형이 있다. 여기서는 다섯가지를 소개하겠다. Start Events 하의 Start를 비우자.


그림 7. Start event 비우기
Start event 비우기

이 활동은 그림 1의 좌측에 있는 빈 원인 흐름 프로세스를 시작한다. 다음은 아래 그림에서처럼 하나의 태스크이다.


그림 8. 태스크
태스크

태스크는 웹 서비스를 부르는 것과 같은 명령이다. 다음의 두 태스크는 게이트웨이의 한 쌍으로 프로세스가 독점 또는 동시적으로 다른 방향으로 나눠지도록 한다. 첫 번째 게이트웨이는 독점적 데이터 기반의 통로다.


그림 9. 독점적인 데이터 기반의 게이트웨이
독점적인 데이터 기반의 게이트웨이

이에 대한 소개는 나중에 하겠다. 간단히 말하면 비즈니스 프로세스를 두 개의 경로(하나는 주문이 실패했을 때, 다른 하나는 주문이 성공했을 때)로 나누는데 사용된다. 다음은 동시적 게이트웨이다.


그림 10. 병렬 게이트웨이
병렬 게이트웨이

이 게이트웨이를 사용해 송장을 고객에게 보내거나 주문이 성공적으로 처리됐을 때 주문을 배송부서로 대기시키는 것 같은 동시 실행을 가능케 하는 두 가지 태스크를 정의한다. 확인해야 할 마지막 활동은 Empty End 이벤트로 비즈니스 프로세스를 마무리하는 이벤트다.


그림 11. Empty End 이벤트
Empty End 이벤트

이는 그림 1의 오른쪽에 있는 빈 원으로 비즈니스 프로세스 흐름을 마무리한다.




위로


비즈니스 프로세스 설계하기

비즈니스 프로세스를 설계할 차례다. Empty Start 활동을 클릭하고 파란 흐름 창의 점을 클릭하는 것으로 시작하자. 그리고 나서 이를 더블클릭하고 start라 명명하자.


그림 12. start 활동 명명하기
start 활동 명명하기

태스크 활동 유형을 클릭하고 이를 시작 원 오른쪽에 놓은 후 더블클릭하고 addToyToCart라 명명한다.


그림 13. 태스크 명명하기
태스크 명명하기

이제 시작 원에서 addToyToCart 태스크까지 새 호(arc)를 만들 것이다. 그림 14처럼 굵은 화살표가 오른쪽에 나타날 때까지 시작 원의 오른쪽 경계를 당긴다. 굵은 화살표 오른쪽의 작은 정사각형 박스를 클릭하고 이를 addToyToCart 태스크까지 끌어당긴다.


그림 14. 새 호 만들기
새 호 만들기

addToyToCart 태스크에서 마우스 버튼을 놓으면 두 개를 함께 연결하는 새 호가 나타날 것이다.


그림 15. 만들어진 새 호
만들어진 새 호

첫 번째 호를 만들었다. 비즈니스 프로세스가 모아질 것이다. 계속 비즈니스 프로세스를 설계하자.


그림 16. 비즈니스 프로세스 설계 계속하기
비즈니스 프로세스 설계 계속하기

위의 그림처럼 viewCart라는 새 태스크와 viewCart while 루프를 가지는 두 개의 독점적 데이터 기반 게이트웨이를 만들 수 있어야 한다. 또한 while2라 명명된 게이트웨이에서 나오는 두 개의 호에서 보이는 것처럼 호를 명명할 수 있어야 한다. 이들을 더블클릭하고 원하는 이름을 명명한 후 Enter을 클릭한다. 그리고 나서 라벨을 원하는 곳에 끌어놓는다. 아래 그림에서처럼 계속 설계한다.


그림 17. 설계 계속하기
설계 계속하기

여기서 그림처럼 만들고 이어갈 수 있는 결제와 shippingEstimator 태스크를 볼 수 있다. shippingEstimator에서 while1이라 명명된 게이트웨이로 돌아가는 엣지가 있음에 주목하자. 이것이 결국 Listing 2에서 본 while 루프가 된다. 결제 태스크 후에 if-else문과 같은 if-else orderCheck라 명명된 게이트웨이를 볼 수 있다. 주문이 실패하면 흐름은 orderFailed 태스크로 옮겨지고 성공하면 orderTasks라 명명된 동시 게이트웨이로 옮겨질 것이다. 비즈니스 프로세스의 마지막을 계속 설계하자.


그림 18. 비즈니스 프로세스 모델 마무리하기
비즈니스 프로세스 모델 마무리하기

emailInvoiceshippingQueue라는 두 태스크가 동시 게이트웨이 내에 있음에 주목하자. 이들의 흐름은 서로 관여되지 않으므로 동시에 실행될 것이다. 그렇게 되면 병렬 흐름은 orderTasks2orderCheck2에서 백업을 만나 Empty End 이벤트에서 비즈니스 프로세스가 완료된다.

이제 패키지 익스플로러 파일의 mybiz_flow.bpmn 파일을 더블클릭하여 다이어그램과 같은 결과 BPMN을 검사할 수 있다. 여기서 방금 설계한 비즈니스 프로세스를 설명하는 모든 버텍스와 sequenceEdges를 볼 수 있다.

축하한다! BPMN Modeler를 사용해 비즈니스 프로세스를 성공적으로 설계했다. 이제 BPMN을 BPEL로 전환하는 변형을 시작할 것이다.




위로


이클립스 STP의 BPMN을 BPEL로 변형하기

BPMN이 있으면 BPEL로 전환할 준비가 된 것이다. 이를 위해 이클립스 ATL 프로젝트와 BABEL 도구의 힘을 빌릴 것이다. 이 전환 프로세스에서 필요하다면 아파치 ODE에 배치하기 전에 실행기(BPEL)를 작업에 쓸 수 있다. 이클립스 ATL의 역할은 BABLE 도구를 사용해 BPMN 상의 변형에서 BPMN 포맷을 읽을 수 있게 만드는 것으로, 최종적으론 BPMN을 BPEL로 전환하는 것이다. 첫 이클립스 ATL 프로젝트를 만드는 것으로 시작해보자.




위로


첫 이클립스 ATL 프로젝트

STP BPMN에서 BABEL BPMN으로 변환하기 위해 이클립스 ATL 프로젝트를 만들려면 이클립스 ATL 내에 새 프로젝트를 만들어야 한다. ATL(ATL_project/eclipse.exe)을 시작하자. Families2Persons와 Tree2List라는 두 개의 이미 존재하는 프로젝트가 있음에 주의하자. 이들은 사용하지 않을 것이므로 무시하거나 지워버리자.

이제 설정할 변형 규칙을 마련할 새 프로젝트를 만들 것이다. File > New > ATL Project를 클릭하자.


그림 19. ATL 프로젝트 만들기
ATL 프로젝트 만들기

이름을 묻는 팝업 창이 뜰 것이다. 아래 그림처럼 프로젝트 이름을 STPbpmnTObabelBPMN라 명명하고 Finish를 클릭하자.


그림 20. ATL 프로젝트 명명하기
ATL 프로젝트 명명하기

ATL 프로젝트가 만들어졌지만 아직 할 일이 남았다. 다운로드 절의 튜토리얼 다운로드에서 가져와야 할 몇 가지 파일이 있다. 다운로드를 마치면 세 개의 파일을 열고 이를 ATL 프로젝트에 복사하자.

ATL_project\STPbpmnTObabelBPMN\metamodels\bpmn.ecore
BABEL BPMN 파일의 구조를 정의하는 EMF 파일
ATL_project\STPbpmnTObabelBPMN\metamodels\stpmodel.ecore
STP BPMN 파일의 구조를 정의하는 EMF 파일
ATL_project\STPbpmnTObabelBPMN\transformation\bpmn2babel.atl
STP BPMN에서 BABEL BPMN으로의 변환을 정의하는 ATL 파일

또한 이클립스 STP 프로젝트에서 이클립스 ATL 프로젝트로 생성된 mybiz_flow.bpmn 파일을 복사하자. ATL 프로젝트의 패키지 익스플로러는 이제 그림 21처럼 보여야 한다.


그림 21. 복사된 파일과 ATL 프로젝트의 패키지 익스플로러 뷰
복사된 파일과 ATL 프로젝트의 패키지 익스플로러 뷰

bpmn2babel.asm 파일은 bpmn2babel.atl 파일을 컴파일할 때 이클립스 ATL에 의해 자동 생성됨에 주의하자.

여기까지 ATL 프로젝트를 만들었다. 이제 변형할 차례다.

STP BPMN에서 BABEL BPMN으로 변형하기

이제 BPMN 출력을 BABEL 도구를 사용해 이클립스 STP BPMN Modeler에서 읽을 수 있는 BPMN 포맷으로 변환할 시간이다. 하지만 변형 전에 마지막으로 해야할 일이 또 하나 있다. 이클립스 STP의 현재 버전에는 BPMN 출력에 버그가 있다(stpmodel.ecore와 동일하지 않다). 이를 수정하려면 패키지 익스플로러 창에서 mybiz_flow.bpmn 파일을 더블클릭해 연다(그림 21을 보자).

다음처럼 모든 인스턴스를 바꾼다.

  • Parallel GatewayGatewayParallel
  • Exclusive Data-based GatewayGatewayDataBasedExclusive
  • Empty Start EventEventStartEmpty
  • Empty End EventEventEndEmpty

BPMN을 변환할 준비가 됐다. 이를 위해 Run > Open Run Dialog를 클릭하자. 왼쪽 행에서 ATL Transformation을 오른쪽 클릭하고 New를 클릭한다. 그림 22처럼 시작 구성(launch configuration)을 STPbpmnTObabelBPMN라 명명하고 프로젝트 창에서 이 이름(STPbpmnTObabelBPMN)에 있는 프로젝트와 프로젝트 내의 bpmn2babel.atl 파일을 선택한다. 그리고 나면 각 Ecore 파일에 경로를 넣거나 적절한 작업공간 버튼을 선택하고 이를 찾아 metamodels 창에서 BPMN와 BABEL Ecore 메타모델을 선택할 수 있다.


그림 22. ATL 시작 구성하기
ATL 시작 구성하기

그리고 나면 앞서 언급했듯 그림 22에서처럼 직접 넣거나 Workspace를 클릭하고 프로젝트의 해당 파일을 찾아 소스 모델(mybiz_flow.bpmn)을 선택해야 한다. 아직 표적 모델이 존재하지 않으므로(이 파일은 이클립스 ATL로 생성되는 파일이다) 소스 모델 파일을 표적 모델 파일에 복사하고 여기에 접두사로 BABEL_를 넣을 것이다(그림 22의 소스 모델과 표적 모델 창을 보자).

너무 많은 것을 배우고 있는가? 이제 하나만 더 짚어보면 된다. 라이브러리를 추가하는 것이 그것이다. 이를 위해 Add library(그림 22의 좌측 하단에서 볼 수 있다)를 클릭하면 이름을 묻는 창이 뜰 것이다. 기본에 동의하고 OK를 클릭하자. 그리고 나면 라이브러리 창(그림 22의 표적 모델 창 오른쪽에 보인다)에 라이브러리가 나타날 것이다. 아래 그림처럼 Workspace를 클릭한다.


그림 23. ATL 시작 구성에 라이브러리 파일 넣기
ATL 시작 구성에 라이브러리 파일 넣기

프로젝트 변형 디렉터리에서 파일을 찾자.


그림 24. 라이브러리 넣기
라이브러리 넣기

OK를 클릭한다. 시작 구성이 완성됐다. 창 오른쪽 하단에 있는 Apply를 클릭하여 변경사항을 저장해야 한다.

구성을 내보내고 변형을 수행하기 위해 창 오른쪽 하단의 Run을 클릭한다. 이제 그림 25처럼 ATL 프로젝트의 모델 폴더에서 새 파일이 나타날 것이다. 이것이 BABEL BPMN 중간 포맷이다.


그림 25. BABEL BPMN 생성하기
BABEL BPMN 생성하기




위로


BABEL BPMN에서 BPEL로 변형하기

변형을 위해 BABEL 도구를 설치할 때 이클립스 ATL 프로젝트에서 앞서 만든 babelBPMNtoBPEL 디렉터리로 BABEL_mybiz_flow.bpmn을 복사한다.

남은 변형을 처리하기 전에 BABEL_mybiz_flow.bpmn 파일을 마지막으로 한 번 더 편집해야 한다. 먼저 두 개의 <babelBpmn:DocumentRoot> 자식 요소가 있다는 것에 주의하자. 이들 중 하나를 제거하자(다운로드 절에서 다운받은 코드의 디렉터리에서 이것과 파일을 비교할 수 있다).

콘솔을 열고 디렉터리를 BPMN2BPEL.jar 파일과 막 만든(BABEL_mybiz_flow.bpmn) BABEL BPMN 파일을 포함하는 babelBPMNtoBPEL로 변경하자. BPEL을 만들기 위해 다음을 넣자: java -jar BPMN2BPEL.jar BABEL_mybiz_flow.bpmn.

위의 도구들을 작동시키는 마지막 몇 개의 행은 BPEL_BABEL_mybiz_flow.bpmn.bpel이라는 새 파일을 만들어 Listing 3에서 보여준 다음의 출력을 만든다.


Listing 3. BABEL BPMN에서 BPEL로 변형하기
                    
328  [main] DEBUG controller.BPMN2BPEL  - Step 5: Build the BPEL-Tree.
328  [main] DEBUG controller.BPMN2BPEL  - Output the BPEL-XML into a File.
343  [main] DEBUG model.backEnd.EmitterBPEL4BPMN  - ChildLIST:1
343  [main] DEBUG controller.BPMN2BPEL  - Directory :
343  [main] DEBUG controller.BPMN2BPEL  - File : 
BPEL_BABEL_mybiz_flow.bpmn.bpel

BPEL_BABEL_mybiz_flow.bpmn.bpel을 mybiz_flow.bpel로 이름을 바꾸고 이를 다른 디렉터리인 apacheODE_process/mybiz_flow/에 복사한다. BPEL 파일을 열고 아래에서 보이는 것처럼 while 루프를 찾자.


Listing 4. 만들어진 while 루프
                    
    <while condition="while_ok">
      <invoke name="shippingEstimator"
              partnerLink="local" 
              portType="localPT" 
              operation="shippingEstimator" 
              inputVariable="shippingEstimator_data_in" 
              outputVariable="shippingEstimator_data_out" />
    </while>
	

여기서 만들어진 while 루프를 Listing 2에서 만든 것과 비교할 수 있다. 두 개의 신택스가 다름에 주의하자. 자동 생성된 버전이 BPEL 개발에 필요한 시작 장소를 만들고 스크래치에서 BPEL을 만들었기 때문이다.

다음 절에서는 아파치 ODE에 비즈니스 프로세스를 배치하는 법을 다루겠다.




위로



Go to the previous page10 페이지 중 4 페이지Go to the next page
    IBM 소개 개인정보 보호정책 문의