메인 컨텐츠로 가기

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

웹 서비스를 구현하는 SOA 프로그래밍 모델, Part 3: 프로세스 구성과 비즈니스 상태 머신

Matthias Kloppmann, Senior Technical Staff Member, IBM Software Group
Author photo
Matthias Kloppmann, Senior Technical Staff Member, IBM Software Group
Author photo
Donald Ferguson, Ph.D., Fellow, IBM
Marcia Stockton, Senior Technical Staff Member and Master Inventor, IBM Software Group
Author photo
Marcia Stockton, Senior Technical Staff Member and Master Inventor, IBM Software Group

요약:  서비스 구성에 대한 접근방식 중에는 Business Process Execution Language(BPEL)을 사용하여 비즈니스 프로세스로서 서비스를 정의하거나 비즈니스 상태 머신으로 나타내는 것이 있다. 그와 같은 일련의 서비스들의 호출을 조정하는 코드는 프로세스 구성 엔진이라고 하는 특별한 컨테이너에서 실행된다. 컨테이너가 제공하는 함수로 장기적인 프로세스를 실행하고 심지어 엔터프라이즈 영역까지 확장시켜 B2B 협업에 까지 이른다.

원문 게재일:  2005 년 7 월 12 일
난이도:  초급
페이지뷰:  2089 회
의견:  


IBM의 서비스 지향 아키텍처(SOA)의 프로그래밍 모델에 대한 세 번째 시리즈이다. 이전 시리즈에서는 SOA 프로그래밍 모델의 개념과 서비스 데이터 객체를 설명했다.

비즈니스 프로세스

비즈니스 프로세스 구성을 통한 서비스 조정(orchestration)의 개념은 1970년대 이후의 FORTRAN 프로그래머들에게는 익숙할 것이다. 이것은 간단히 말해서 큰 프로그램의 부분을 구현한 함수나 서브루틴을 호출하는 메인라인 코드의 개념이다. 이제는 서브루틴은 웹 서비스이다. 메인라인 프로그램의 구현 언어는 BPEL이다.(참고자료) 실행 환경은 IBM WebSphere® Business Integration Server Foundation의 Business Process Choreography 컨테이너이다. 그리고 프로그램은 다중 엔터프라이즈를 확장하여 비즈니스 기능을 구현하는 많은 장기 실행 태스크들을 구성한다.


그림 1. 간단한 비즈니스 프로세스
simple business process

그림 1은 여행 승인과 예약 프로세스용 BPEL 프로세스를 나타낸 것이다. 여기에는 요청 데이터, 관리 승인 작업, 실제 예약을 진행하기 위해 파트너와의 B2B 인터랙션이 포함된다.

여러분이 BPEL에 대한 참고서나 튜토리얼(참고자료)을 복습하지 않도록 하기 위해 WebSphere Business Integration에서의 IBM BPEL 구현에서 제공하는 특징들을 소개하겠다.

  • 여러 파트너들과 인터랙팅 할 수 있는 장기 실행(Long-running) 비즈니스 프로세스. 모든 인터랙션들은 표준의 'STATELESS' 웹 서비스 호출을 통해 수행된다. 코릴레이션(correlation)은 애플리케이션 레벨 데이터를 사용하여 특정 인스턴스에 접근하는데 사용된다. 예를 들면 사원 시리얼 넘버 기반으로 인간의 여행 승인 요청 같은 것이다. 항공 예약이 이미 이루어진 후에 여행 요청이 취소될 때 프로세스 결과를 (부분적으로) 실행 취소하기 위해 보상 기능이 제공된다.
  • 인간과 프로세스의 결합. 어떤 비즈니스 프로세스 단계는 인간이 개입한다. (승인 또는 예외 처리 워크플로우) 네 개의 눈(두 사람) 원리(four eyes principle)처럼 사람들에게도 작업을 할당한다. 제 2의 승인 절차가 첫 번째 승인자를 제외한 다른 승인자에 의해 처리되도록 하는 것이다. 이러한 요구 사항들은 인간의 작업을 프로세스 단계로서 사용함으로서 충족된다. Business Process Choreography 엔진과 IBM WebSphere Studio Application Developer Integration Edition 툴은 인간 태스크를 지원한다.
  • 프로세스를 Java™ 2 Platform, Enterprise Edition(J2EE)에 삽입하고, XPath 외에도(BPEL의 표준이다.) 자바를 프로세스 내의 일급 언어로 사용한다. 자바 기능은 BPEL의 범위를 벗어나지만 IBM과 BEA Systems, Inc.는 BPEL에 대한 자바 확장인 BPELJ로 제안하고 있다. 이런 확장을 통해 프로그래머들은 자바를 이용한 프로세스에서 액티비티를 구현하고, BPEL이 식을 허용한 곳에서 표현 언어(expression language)로 자바를 사용하며, 자바를 사용하는 프로세스 내에서 작업 데이터를 조작할 수 있다.
  • 서비스의 품질 확장은 제품 시스템에 필요하다. 예를 들어, 트랜잭션 영역을 튜닝하거나, 에러 상황을 복구하거나, 감사 기록을 만드는 등의 기능이 있다.
  • WebSphere와 통합 프로세스 구성 엔진은 WebSphere의 트랜잭션 엔진과 Activity Service와 통합된다. 인간이 개입된 프로세스는 WebSphere 사용자 디렉토리와 보안을 사용한다. BPEL 프로세스는 WebSphere 애플리케이션의 일부로서 전개된다. 비즈니스 프로세스의 관리는 WebSphere 관리 콘솔로 통합된다.

IBM Rational®과 WebSphere 툴 슈트에 있는 비즈니스 프로세스 비주얼 에디터를 사용하여 BPEL 프로세스를 구현할 수 있다. 서비스 인터페이스를 반입하면 BPEL 프로세스에서 외부 서비스들을 호출할 수 있다. 이 툴 슈트에는 비주얼 디버거도 있어서 프로세스를 디버깅 할 뿐만 아니라 장기 실행 프로세스의 디버깅과 사용자 인터페이스를 통해 인간이 개입한 작동과의 인터랙팅도 한다. 이 툴 슈트로 BPEL 프로세스를 디버깅 하고 이들을 서비스로서 전개할 수도 있다.


비즈니스 상태 머신

워크플로우 프로세스는 액션 또는 동사와 비슷하다. 예를 들어, CreatePurchaseOrder 또는 BookTravel은 많은 웹 서비스, 자바 클래스, Enterprise JavaBeans(EJB)을 호출할 때 여러 가지 경로를 취한다.

워크플로우 프로세스가 동사이면 비즈니스 상태 머신은 구매 주문, 장애 티켓(trouble ticket), 보험 정책 애플리케이션 같은 현상(thing)을 나타내는 명사이다. 여기에서, CreatePurchaseOrder 또는 BookTravel 같은 동사는 현상에 대한 연산이다. 비즈니스 상태 머신에 대해 연산을 수행하면 BPEL 프로세스나 자바 코드 같은 서비스의 호출로 이어진다.

접근 방식-프로세스나 상태 머신-은 우위를 가릴 수 없다. 오히려 두개 다 서비스 추상화와 기능적으로는 같다. 어떤 것을 선택하든 추상화에는 문제가 없다.

비즈니스 상태 머신은 상태 이동 다이어그램을 통해 그래픽으로 지정된다. 상태, 상태들 간 트랜잭션, 결과 작동 등을 나타낸다. 그림 2는 PurchaseOrder에 대한 간단한 상태 머신을 보여주는 플로우 차트이다.


그림 2. 구매 주문을 나타내는 비즈니스 상태 머신
business state machine

노드(직사각형)는 PurchaseOrder의 상태를 나타내고 종류는 Created, Ready, InApproval, Purchased, Canceled, Shipped, Delivered, Archived 등이 있다. 화살표는 이벤트 발생을 나타낸다. PurchaseOrder를 한 상태에서 다른 상태로 이동시킨다.

비즈니스 상태 머신은 BPEL 프로세스에 의해 구현될 수 있다. 이 경우, 이벤트는 Web Services Description Language(WSDL)에서 설명하는 프로세스의 portType에 대한 연산일 뿐이다. (변수로 저장된)현재 상태는 어떤 이벤트(연산)을 실행할 지를 결정한다. 호출자가 무효 연산을 호출하면 런타임은 예외를 던진다. 상태 머신의 현재 상태를 쿼리하여 연산의 유효성을 결정할 수도 있다.

이벤트가 발생하면(연산이 호출되거나 시간이 초과되면) 상태 머신은 새로운 상태로 이동하여 새로운 액션을 수행한다. (연산 또는 메소드를 호출하는 행위.) 그림 2에서 이동은 화살표로 표시되고 이벤트, 연산 조건, 수행되는 액션에 대한 주석이 달린다. 관련 조건이 true일 경우에만 이동이 될 수 있다. 추가 액션들이 상태 시작과 종료 시 수행된다. 그림 2를 보면 Ready 상태에서의 상태 머신은 두 개의 이벤트 purchaseCancel을 갖고있다.

호출자가 구매 작동을 호출하면 비즈니스 상태 머신 프레임웍에서는 다음과 같은 일이 진행된다.

  1. 연산이 현재 상태에 유효한 것인지를 파악한다.
  2. 한 상태가 종료하면 그 상태에 대한 종료 액션을 실행한다.
  3. 이벤트와 관련된 모든 트랜잭션의 조건들을 검토한다. 구매하는데 있어 승인이 필요하다고 간주되면 InApproval 상태로 이동하고 Purchased로의 이동은 무시된다.
  4. 이동과 관련한 액션을 수행한다. 이 경우 doApprovalAction()이다. 예를 들어, 이메일을 판매 담당자에게 보내거나 또 다른 SOA 컴포넌트에 대한 연산(BPEL 플로우)을 호출한다.
  5. 새로운 InApproval 상태가 된다.
  6. 새로운 상태의 시작 액션을 실행한다.

Rational/WebSphere 툴 슈트의 비주얼 에디터를 사용하여 비즈니스 상태 머신을 만든다. 이 툴은 비즈니스 상태 머신과 비즈니스 프로세스를 비슷하게 취급한다. 이들은 외부 서비스에 대해 같은 관계를 갖고 있고 테스트와 전개 환경도 동일하다.


요약

IBM의 SOA 프로그래밍 모델은 새로운 서비스 중심의 애플리케이션을 구현하고 기존 애플리케이션들을 서비스 프레임웍으로 구성할 때 다양한 접근 방식을 제공한다. 이 글에서는 Business Process Execution Language를 사용한 비즈니스 구성 방식에 초점을 맞춰 설명했다. 이는 전통적인 절차 프로그래밍에서 서브루틴을 호출하는 것과 비슷하다. 장기 실행 작업과 병렬성을 지원한다. 비즈니스 상태 머신은 또 다른 프로그래밍 모델이다. 다음 글에서는 SOA 개발자를 위한 컴포넌트 유형을 소개하겠다.


참고자료

필자소개

Author photo

Matthias Kloppmann, Senior Technical Staff Member, IBM Software Group

Author photo

Donald Ferguson, Ph.D., Fellow, IBM

Author photo

Marcia Stockton, Senior Technical Staff Member and Master Inventor, IBM Software Group

잘못된 도움말 신고

부정사용 신고

감사합니다. 이 항목은 운영자가 관심을 표시했습니다.


잘못된 도움말 신고

부정사용 신고

제출실패 신고. 나중에 다시 실행해주세요.


디벨로퍼웍스 로그인


IBM ID가 필요하세요?
IBM ID를 잊으셨습니까?


비밀번호를 잊으셨습니까?
비밀번호 변경

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

화면상에 보여지는 닉네임을 정하세요.

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

3개의 &이나 대쉬를 포함해주시고 31글자내로 제한해주세요.


developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


아티클 순위

의견

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=20
Zone=SOA와 웹서비스
ArticleID=107234
ArticleTitle=웹 서비스를 구현하는 SOA 프로그래밍 모델, Part 3: 프로세스 구성과 비즈니스 상태 머신
publish-date=07122005
author1-email=Matthias-Kloppmann@de.ibm.com
author1-email-cc=flanders@us.ibm.com
author2-email=dff@us.ibm.com
author2-email-cc=flanders@us.ibm.com
author3-email=mls@us.ibm.com
author3-email-cc=flanders@us.ibm.com

태그

Help
검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오.

태그를 더 많이 보거나 적게 보기 위해 슬라이더 막대를 사용하십시오.

인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다.

내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.

검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오. 인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다. 내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.