Webサービスビジネスプロセス実行言語(WS-BPEL)は、一般にBPEL(ビジネスプロセス実行言語)として知られており、 Webサービスを使用したビジネスプロセス内のアクションを指定するためのOASIS [ 1 ]標準実行言語です。BPELのプロセスは、Webサービスインターフェースのみを使用して情報をエクスポートおよびインポートします。
ウェブサービスの相互作用は、実行可能なビジネスプロセスとして、また抽象的なビジネスプロセスとして、2つの方法で記述できる。
WS-BPELは、実行可能ビジネスプロセスと抽象ビジネスプロセスの両方を仕様化するための言語を介して、プロセスの動作をモデル化することを目的としています[ 2 ]。そうすることで、Webサービス相互作用モデルを拡張し、ビジネストランザクションをサポートできるようにします。また、企業内および企業間での自動化されたプロセス統合の拡張を容易にする相互運用可能な統合モデルも定義します。その開発は、大規模なプログラミングと小規模なプログラミングには異なるタイプの言語が必要であるという考え[ 3 ]から生まれました。
そのため、XML形式でシリアル化され、大規模なプログラミングを可能にすることを目指しています。
大規模プログラミングと小規模プログラミングという概念は、ビジネスプロセスでよく見られるような長時間実行される非同期処理を記述する際の2つの側面を区別するものです。
WS-BPEL の起源は、Web Services Flow Language (WSFL) とXlangに遡ります。
2001年、IBMとMicrosoftはそれぞれ、かなり似た「大規模プログラミング」言語であるWSFL [ 4 ](Webサービスフロー言語)とXlang [ 5 ]を定義しました。Microsoftはさらに、XLANG/sと呼ばれるスクリプト言語の派生版を作成し、後にBizTalk Server内のオーケストレーションサービスの基盤として使用しました。彼らは、この言語が「独自仕様であり、完全には文書化されていない」と明記しました。[ 6 ]
BPMLの登場と普及、そしてJBossと Intalio Inc. が主導するBPMI.orgとオープン BPMS ムーブメントの成功に伴い、IBM と Microsoft はこれらの言語を統合して新しい言語 BPEL4WS を作成することを決定しました。2003 年 4 月、BEA Systems、IBM、Microsoft、SAP、およびSiebel Systems は、 Web サービス BPEL 技術委員会を通じて標準化のために OASIS に BPEL4WS 1.1 を提出しました。[ 7 ] BPEL4WS は1.0 と 1.1 の両方のバージョンで登場しましたが、OASIS WS-BPEL 技術委員会は2004 年 9 月 14 日に[ 8 ]仕様を「WS-BPEL 2.0」と命名することを決定しました。 (この名称変更により、BPEL は「WS-」で始まる他の Web サービス標準命名規則 (WS-Security と同様) に合わせられ、BPEL4WS 1.1 と WS-BPEL 2.0 の間の重要な機能強化が考慮されました。) 特定のバージョンについて議論していない場合は、BPEL という名称が一般的に使用されます。
2007年6月、Active Endpoints、Adobe Systems、BEA、IBM、Oracle、およびSAPは、 BPELプロセスにおける人間とのインタラクションをどのように実装できるかを記述したBPEL4PeopleおよびWS-HumanTask仕様を公開しました。
BPELには当初、10の設計目標がありました。
BPELはオーケストレーション言語であり、コレオグラフィー言語ではありません。オーケストレーションとコレオグラフィーの主な違いは、実行可能性と制御です。オーケストレーションは、他のシステムとのメッセージ交換を伴う実行可能なプロセスを指定し、メッセージ交換のシーケンスはオーケストレーション設計者によって制御されます。コレオグラフィーは、ピアツーピアの相互作用のためのプロトコルを指定し、相互運用性を保証するために交換されるメッセージの正当なシーケンスなどを定義します。このようなプロトコルは、多くの異なる実装(それに準拠するプロセス)を可能にするため、直接実行することはできません。コレオグラフィーは、関与する各ピアに対してオーケストレーション(BPELプロセスの形式など)を作成することによって実現できます。オーケストレーションとコレオグラフィーの区別は類推に基づいています。オーケストレーションは、分散システム(多くの演奏者で構成されるオーケストラ)の動作を(指揮者によって)中央で制御することを指し、コレオグラフィーは、中央制御なしでルール(コレオグラフィー)に従って動作する分散システム(ダンスチーム)を指します。
BPELは、最新のビジネスプロセスに重点を置いていることに加え、WSFLとXLANGの歴史を踏まえ、外部通信メカニズムとしてWebサービスを採用しました。そのため、BPELのメッセージング機能は、送受信メッセージの記述にWebサービス記述言語(WSDL)1.1を使用することに依存しています。
BPELプログラミング言語は、メッセージの送受信を可能にする機能を提供するだけでなく、以下の機能もサポートしています。
OASIS技術委員会がWS-BPELの範囲外と判断したため、WS-BPELには標準的なグラフィカル表記法はありません。一部のベンダーは独自の表記法を考案しています。これらの表記法は、BPELのほとんどの構成要素がブロック構造(シーケンス、while、pick、scopeなど)であるという事実を利用しています。この機能により、 Nassi–Shneiderman図を彷彿とさせるスタイルで、 BPELプロセス記述を構造図の形で直接視覚的に表現できます。
BPEL プロセス記述をキャプチャするためのグラフィカル フロントエンドとして、実質的に異なるビジネス プロセス モデリング言語、すなわちビジネス プロセス モデル表記法(BPMN) を使用することを提案する人もいます。このアプローチの実現可能性を示す例として、BPMN 仕様には BPMN から BPEL 1.1 への非公式かつ部分的なマッピングが含まれています[ 10 ]。BPMN から BPEL へのより詳細なマッピングは、BPMN2BPEL として知られるオープンソース ツールを含む多くのツールで実装されています。[ 11 ]しかし、これらのツールの開発により、BPMN と BPEL の間に根本的な違いがあることが明らかになり、BPMN モデルから人間が読めるBPEL コードを生成することが非常に困難、場合によっては不可能になっています。さらに難しいのは、BPMN から BPEL への往復エンジニアリングの問題です。これは、BPMN ダイアグラムから BPEL コードを生成し、元の BPMN モデルと生成された BPEL コードを同期させ、一方への変更が他方に伝播されるように維持することです。
BPEL の制御構造である「if-then-elseif-else」や「while」、および変数操作機能は、ロジックを提供するために「小さなプログラミング」言語を使用することに依存しています。すべての BPEL 実装は、デフォルト言語として XPath 1.0 をサポートする必要があります。しかし、BPEL の設計では拡張性を想定しているため、システム構築者は他の言語も使用できます。BPELJ [ 12 ]は、Java が BPEL 内で「小さなプログラミング」言語として機能することを可能にする JSR 207 [ 13 ]に関連する取り組みです。
分散型ビジネスアプリケーションにおいてWebサービスが広く受け入れられているにもかかわらず、人間とのやり取りが欠如していることは、多くの現実世界のビジネスプロセスにとって大きな課題であった。
このギャップを埋めるため、BPEL4PeopleはBPELをWebサービスのオーケストレーションだけでなく、役割に基づいた人間の活動のオーケストレーションにも拡張しました。
ビジネスプロセスBPEL4Peopleのコンテキスト内で
BPELに独立した構文と意味論を追加することで拡張する。
WS -HumanTask仕様では、人間のタスクと通知の定義、それらの特性、動作、および人間のタスクを操作するために使用される一連の操作について説明しています。また、サービス対応の人間のタスクの自律性とライフサイクルを相互運用可能な方法で制御するための調整プロトコルも導入されています。
BPEL4People仕様は、 WS-BPELにおける人間とのインタラクションを第一級の要素として扱うためのWS-BPEL拡張機能を導入しています。この仕様では、人間のタスクを実装として使用する新しいタイプの基本アクティビティを定義し、プロセスにローカルなタスクを指定したり、プロセス定義の外で定義されたタスクを使用したりすることを可能にします。この拡張機能は、WS-HumanTask仕様に基づいています。
バージョン2.0では、いくつかの変更点と新機能が導入されました。
bpws:doXslTransform)$variable[.part]/location