BPELとは、ネットワーク上で複数のアプリケーションの機能を順に呼び出してタスクを実行する手順を一連のビジネスプロセスとして記述するための言語。Business Process Execution Language。
目次 |
BPELの概要
| 抽象プロセスとは |
|---|
| メッセージの流れなどビジネスプロセス間の相互作用を表現する。ビジネスプロセスの詳細部分は表示しない。 |
BPELとは、ネットワーク上の複数のアプリケーションの機能を自動的に順々に利用してタスクを処理し実行していくプロセスを記述するための言語であり、その役割は
- 抽象プロセスの記述
- 実行エンジンへの実装
の二つである。BPELで記述されるビジネスプロセスは「BPELプロセス」または「BPELフロー」と呼ばれる。
BPELで記述されたプロセスでは自動的にアクティビティが処理され、一連のフローをあたかも1つのサービスとして呼び出せる形になっている。このような、サービスを「コンポジットアプリケーション(Composite Application)」と呼ぶ。
また、アプリケーションの機能をネットワーク経由で利用できるようにしたものを「webサービス」と言い、www(World Wide Web)関連の技術が利用されている。webサービスは、命令を送信すれば、webを通じて自動的に期待するアクションを返してくれる。BPELは、このWebサービスを利用してプロセスを実行していくための言語である。
BPELの特徴
XMLベース
BPELは、XML(Extended Markup Language)に基づいている言語である。ネットワークを利用してアプリケーションの機能を利用するので、XMLベースになっている。
webサービスの利用
BPELでビジネスプロセスを定義する際は、
- invoke(アプリケーションの機能を呼び出す)
- receive(要求を受信する)
- reply(結果を返信する)
といったアクティビティを組み合わせ、「リクエストメッセージをreceiveすることで実行が開始され、実行結果をreplyすることで終了する」というプロセスを作成するのが基本となる。これらは、webサービスを利用して自動的に実行される。
BPMN・BPEL・XPDLの比較
BPELは、ビジネスプロセスのグラフィカルな表現方法の定義や特定の設計手法を提供するものではない。ビジネスプロセスのグラフィカルな表現方法を規定するのは、BPMNである。| BPMN | BPEL | XPDL | |
|---|---|---|---|
| 性格 | 描画記法 | 手続き保存フォーマット | 画像保存フォーマット |
| 主目的 | 可視化 | 他システムの制御 | BPMN図のXML化 |
| ダイアグラム情報 | ◎ | × | 〇 |
| データ形式 | 画像 | XML | XML |
BPELは、Webサービスを使ったプロセスをデザインするための実行言語であって、アプリケーションを統合しプロセスを自動的に実行するのに向いている。BPELで書かれたデータの形式は、テキストファイルになる。それに対して、BPMNはビジネスプロセス図の描写法を規定するものであり、ビジネスプロセスをグラフィカルに表現するのに向いている。BPMNに従って書かれたデータは、画像ファイルになる。XPDLはBPMNで表記されたビジネスプロセス図をテキスト化し保存するための言語である。
BPMNからBPELへの変換
BPMNではBPELへのマッピングが示されているが、すべてがBPMNからBPELへの変換できるわけではなく、多くは複雑化したり変換できなかったりする。
変換例
ある業務の一部分において、条件によって次に行う作業が異なり、「Xが10以上」なら「A」というタスクを行い「Xが10未満」ならBを行うとする。
BPEL
このような業務をBPEL記述すると以下のようになる。後半部分のswitch以降が、下図の色付け部分を表す。
<process
name="processX"
targetNamespace="http://www.questetra.com"
xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/">
・
・
<partnerLinks>
<partnerlink partnerLinktype="ns1:RiskAssessmentPT"
name="assessor"/ partnerRoles="assessor">
・
・
<variables>
<variables messagetype=“ns1:CreditInformationMessage” name="request"・
・
・
<switch name="sub_DeicideRisk">
<case condition="bpws:getVariableData('request','X')">=10
<sequence name="DecideRisk_seq1">
<invoke operation="check" inputVariable="request"
name="A""outputVariable="risk"
portType="ns1:RiskAssessmentPT" partnerLink="assessor"/>
</sequence>
</case>
・
・
BPMN
このような業務をBPMNに従ってプロセス図として表記すると右図のようになる。色付けされたところが分岐個所である。
BPELの仕様
BPEL4WS 1.0
2002年にIBM、BEA、Microsoftが、IBMが仕様開発を行っていたWSFLとMicrosoftが開発していたXLANGを基に合同提案。BPEL4WSは、Business Process Execution Language for Web Servicesの略。
BPEL4WS 1.1
2003年にIBM、BEA、Microsoft、SAP、Siebelが標準化団体OASISに提出。
WS-BPEL 2.0
2007年にOASISによって発表。WS-BPELは、Web Service Business Process Execution Languageの略。
WS-BPEL Extension for People1.0(WS-BPEL4People)
2007年にOracle、IBM、BEA、SAP、Adobe、Active Endpointsの6社によって発表されたWS-BPELの拡張版。 複数のアプリケーションを順に利用して実行するビジネスプロセスの記述に向いているWS-BPELに対して、レビュー、認証、データ入力などヒューマンタスクを管理するワークフローの記述向け。
BPELとSOAの関係
| ESBとは |
|---|
| Enterprise Service Busの略で、各ソフトウェアを個々に結び付けるのではなく、バスを介して結び付けようとする設計手法。
この場合、個別のインターフェースは必要なくなるという考え方。 |
SOAとは、Service-Oriented Architectureの略で、ビジネスの構成単位に合わせて構築・整理されたソフトウェア部品や機能をネットワークで相互に連携させることによりシステムを構築しようとするシステムアーキテクチャのことである。 SOAによりサービス化されたアプリケーションがそろえば、それらを組み合わせたビジネスプロセスが構築される。そのようなビジネスプロセスの定義を行うのが、BPELである。そして、「各アプリケーションをどのように結び付けるか」という問題を扱っているのが、ESBに基づく。
BPELのタグ
| 同期とは |
|---|
| 次の処理に影響がある場合などに、他の作業が終わってデータが更新されるまで待機すること。 |
BPELの基本的なタグ定義は次の通り。
- Webサービスの呼び出し <invoke>
- 待機状態(リクエストの受信)<receive>
- 同期オペレーションのレスポンスの生成 <reply>
- データ操作 <assign>
- 失敗、例外を示す <throw>
- 明示的な一定時間の待機状態 <wait>
- プロセス全体の停止 <terminate>
- アクティビティの連続したセットを表す <sequence>
- 並列に呼び出されるアクティビティのセットを表す <flow>
- ブランチのCase-switch表現(条件分岐) <switch>
- ループの定義を表す<while>
- いくつかのアクティビティから選択することを表す <pick>







