BPEL

BPEL(ビジネスプロセス実行言語)とは



BPEL(Business Process Execution Language)は、実行可能なビジネスプロセスをモデル化するためのXMLベースの言語です。大規模プログラミングの概念を導入していますが、特定のセマンティックやプロセス構造の要素が不足しているため、単独で全てのビジネスプロセスをモデル化することはできません。そのため、Javaのようなプログラミング言語や、ワークフロー統合ブローカーエンジンのスクリプト言語などと組み合わせて利用されることが一般的です。

概要



BPELのルーツはWSFLとXLANGに遡ります。XMLで記述でき、大規模プログラミングを実現する概念を基盤としています。大規模プログラミングと小規模プログラミングという2つの側面は、ビジネスプロセスに見られる長時間継続する非同期プロセスを記述する際に区別されます。

BPELはIBMとマイクロソフトによって開発されました。これは、BPMI.orgが開発した初期の言語BPMLに対抗するものでした。この背景には、詳細な仕様に対する合意形成の難しさがあったとされています。ワークフロー理論に影響を受けたBPELに対し、BPMLはPi calculusに着想を得ており、完全で形式化された文法を持つため、市場には強力なBPML製品が存在していました。そのため、アプリケーションサーバ開発の標準を統一したいIBMとマイクロソフトは、BPMLの存在を懸念しました。

今日では、BPELとBPMLの違いはほぼ学術的なものとなっています。BPELの文法が広く受け入れられ、BPMLのセマンティクスが一部採用されるという形で、両者の長所が統合されました。BPELの名前が残ったのは、IBMとマイクロソフトの力が大きかったためです。BPELは徐々にBPMLに近づく方向に進化しており、BPMLが形式的に完全であるため、この流れは必然的と言えるでしょう。

目的



大規模プログラミングは、抽象度の高いプロセスを扱うもので、BPELでは「抽象プロセス」と呼ばれます。抽象プロセスは、メッセージの待機、送信、トランザクションの補償などの処理を、規格化された方法で表現します。一方、小規模プログラミングは、1つのトランザクションで完結するような、短期間で終わる処理を扱います。BPELは、これらの異なるプログラミングスタイルを区別し、それぞれに適した言語が必要であるという考えから生まれました。

BPELの設計目標



BPELには、以下の10個の設計目標があります。

1. 外部の実体とWSDL 1.1で定義されたWebサービスの操作を介してやり取りし、自身もWSDL 1.1で定義されたWebサービスとして宣言するビジネスプロセスを定義すること。
2. XMLベースの言語でビジネスプロセスを定義すること。グラフィカルな表現方法や特定の設計手法を提供するものではないこと。
3. ビジネスプロセスの外部(抽象的)ビューと内部(実行可能)ビューの両方に使用できる、Webサービスを組織化する概念を定義すること。
4. 階層的かつグラフ的な制御方式を提供し、両方のビューをシームレスに融合させること。
5. プロセスのデータと制御フローを定義するために必要な、単純なデータ操作機能をサポートすること。
6. プロセスインスタンスの識別メカニズムをサポートし、インスタンス識別子をアプリケーションレベルやメッセージレベルで定義できるようにすること。
7. 暗黙的なプロセスインスタンスの生成と消滅を基本的なライフサイクル機構としてサポートすること。
8. トランザクションモデルを定義し、長期にわたるビジネスプロセスの一部において、エラー回復や補償アクションをサポートすること。
9. Webサービスプロセスの分解と結合のモデルとして用いること。
10. 可能な限りWebサービスの標準に基づいて構築すること。

BPEL言語



BPELは、オーケストレーション言語であり、コレオグラフィ言語ではありません。オーケストレーションは、すべての関係者と相互作用を含むシステムの全体的なビューを提供します。一方、コレオグラフィは、ピアツーピアモデルのように、特定の参加者からのビューに焦点を当てます。BPELは、外部通信メカニズムとしてWebサービスを採用しています。そのため、メッセージング機能は、入出力されるメッセージを記述するためのWSDL1.1の使用に依存します。

BPELプログラミング言語は、メッセージの送受信の他に、以下の機能をサポートします。

プロパティに基づくメッセージ間の関連付け
XMLとWSDLの型に基づく変数
XPath1.0をデフォルトでサポートし、他の言語も使用できる拡張可能な言語プラグインモデル
連接、分岐、反復、並列などの構造化プログラミング要素
ローカル変数、障害ハンドラー、補償ハンドラー、イベントハンドラーを使用したロジックのカプセル化
変数への並行アクセスを制限するシリアライズされたスコープ

WS-BPEL 2.0での変更点


新しいアクティビティ型: `repeatUntil`, `validate`, `forEach` (並列/直列), `rethrow`, `extensionActivity`, `compensateScope`
名称変更されたアクティビティ: `switch/case` が `if/else` に、 `terminate` が `exit` に変更
明示的な終了アクティビティに適用するためのターミネーションハンドラーの追加
変数の初期化
変数変換のためのXSLT(新しいXPath拡張関数 `bpws:doXslTransform`)
変数のデータへのXPathアクセス(XPath変数の文法 `$variable[.part]/location`)
WebサービスアクティビティにおけるXMLスキーマ変数
ローカルに定義された `messageExchange` (受信アクティビティと返信アクティビティの内部的な対応)
抽象プロセスの明文化
各アクティビティにおいて記述言語の変更を可能にする機能
BPELへの「小規模プログラミング」のサポートの追加

BPELと小規模プログラミング



BPELの分岐や反復などの制御構造、変数操作の機能は、ロジックを提供するための「小規模プログラミング」言語に依存しています。すべてのBPEL実装はXPath 1.0をデフォルトの言語としてサポートする必要がありますが、システム構築者が他の言語も使用できるように設計されています。BPELJは、JavaをBPEL内の「小規模プログラミング」として機能させるためのJSR 207に関連する試みです。

歴史



IBMとマイクロソフトは、それぞれWSFLとXLANGという類似した「大規模プログラミング」言語を持っていました。BPMLの台頭とBPMI.orgの成功により、IBMとマイクロソフトは、それぞれの言語を統合してBPEL4WSを開発しました。2003年4月、BEAシステムズIBM、マイクロソフト、SAP、Siebel Systemsは、OASISにBPEL4WS 1.1を提出しました。OASIS WS-BPEL技術委員会は、2004年9月14日に仕様をWS-BPEL 2.0と改名しました。これは、BPELを他のWebサービス標準の命名規則に合わせるため、またBPEL4WS 1.1とWS-BPEL 2.0間の大幅な機能強化を表すためでした。2007年6月、Active Endpoints、アドビBEAシステムズIBM、オラクル、SAPは、BPELプロセスに人間の活動を取り込む方法を記述するBPEL4PeopleとWS-HumanTask仕様をリリースしました。

BPELの開発方向については、議論も存在します。WS-HumanTaskの形態でセマンティクスを追加するなどの要求は、BPELが完全な言語ではないという事実を強調しています。実用的なアプリケーションでは、BPELを他のプログラミングツールで拡張する必要がほぼ常にあります。BPMLは完全な言語であるため、BPELを拡張する際に必要なXMLに新しいタグを追加するのではなく、新しいセマンティクスをプロセスとして実現することができます。BPELに準拠した製品を使用する際には、どのバージョンのBPELをベンダーが主張しているのかに注意する必要があります。BPEL準拠製品は、BPELだけではビジネスプロセスを実現できない場合があるため、現場での検証が必要です。

BPELのBPMNとの関係



OASIS技術委員会は、WS-BPELのグラフィカルな記法をスコープ外としたため、標準の記法は存在しません。いくつかのベンダーは、独自のグラフィカルな記法を開発しています。これらの記法は、BPELの要素(例:`sequence`, `while`, `pick`, `scope`など)がブロック構造であることを利用しています。これにより、BPEL記述をNassi-Shneiderman図のような形式で表現できます。

ビジネスプロセスモデリング言語であるBPMNを、BPELプロセス記述を表現するグラフィカルなフロントエンドとして使用することも提案されています。BPMN仕様には、非公式ながらBPMNからBPEL 1.1へのマッピングが含まれています。BPMNからBPELへのより詳細なマッピングは、オープンソースツールなどで実現されていますが、BPMNとBPELの根本的な違いから、BPMNモデルから人間が理解できるBPELコードを生成するのは非常に困難、あるいは不可能な場合もあります。さらに、BPMNとBPEL間のラウンドトリップ技術(一方の変更を他方に反映させる)は、さらに難しい課題です。

脚注



関連項目


プロセスモデル
XML Process Definition Language(XPDL)
YAWL
BPEL4People
Business Process Management
Business Process Modeling Notation
Web Services Conversation Language
WS-CDL
Workflow

外部リンク


標準規格
WS-BPEL 2.0 specification (OASIS standard)
OASIS WSBPEL TC Webpage
OASIS WSBPEL TC Issues List
Latest editor's copies of OASIS WSBPEL TC Specs
The BPEL4WS 1.1 specification
BPELおよびビジネスプロセスのサイト
The Eclipse STP BPMN Diagram Editor
Orchestra, Open source BPEL Engine, designer, admin and real time monitoring tool
ActiveBPEL, Open source BPEL server and BPEL samples
Business Process Management Initiative Web Site
Business Modeling Forum
BPEL Resource Guide
Service Interaction Patterns (with BPEL code samples)
Service Interaction Patterns (with BPMN diagrams that match BPEL code samples)
The Open Source BPMS (Eclipse and Apache-based)
Apache ODE, Open source BPEL server
NetBeans Enterprise Pack
BPEL for Windows Workflow Foundation
BPEL関連の記事
BPEL BluePrints: Web Services Orchestration Using BPEL - presented by the Java BluePrints Solutions Catalog
SOA Best Practices: The BPEL Cookbook - BPEL howto's from Oracle
Pattern-based Evaluation of Oracle BPEL
What is BPEL and Why is it so important to my business? - BPEL Primer from SoftCare
Description of the upcoming changes from BPEL 1.1 to BPEL 2.0
Oracle Article: Weaving Web Services Together
BPEL for Programmers and Architects (slides)
The Promise of Portable Business Processes
BPEL and Java
Process-centric realization of SOA: BPEL moves into the limelight
Validating BPEL Specifications using OCL
IBM Article: Business Process Choreography in WebSphere: Combining the Power of BPEL and J2EE
BPEL Primer
WS-BPEL Extension for Sub-processes, BPEL-SPE
Analysis of Web Services Composition Languages: The Case of BPEL4WS
BPEL Begone - How useful is this Standard?
IBM_WebSphere_BPEL'>Pattern-based Evaluation of IBM WebSphere BPEL
A Close Look at BPEL 2.0 @ SYS-CON Media
* BPEL in SCA assembly model

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。