第8回:BPELの課題 (1/3)

SOA/ESB
SOA/ESBの真の姿とは

第8回:BPELの課題

著者:Fiorano Software  青島 茂   2007/12/5
1   2  3  次のページ
BPELの基本フロー

   今回はBPELフローについて解説し、BPELにおけるトランザクション制御のポイントを紹介します。また、BPELの課題について解説します。

   BPELフローでは、invokeアクティビティとreceiveアクティビティによって、Webサービスの呼び出し(invoke)と実行結果の受信(receive)を行います。Webサービスはリクエスト・リプライ方式によって呼び出されます。BEPL 2.0のアクティビティ(他の開発言語における命令文やコマンドに相当します)では、図1に示すリクエスト・リプライ方式の基本的なパターンを作成できます。

   同期型の場合、Webサービスからのリプライを受け取るまで待機し、他の処理を行いませんが、非同期型の場合はリプライを待たずに他のアクティビティを実行できます。これは、処理時間の長いWebサービスを呼び出す場合に効果がありますが、トランザクション管理におけるやり直し(補償)処理が複雑になるため注意してください。

   図1に示した非同期パターンでは、イベントハンドラのonEventによってリプライをイベントとして受信しています。イベントハンドラはメインの処理フローとは独立しており、イベントの受信時にはメインとは別のスレッドによって並列に処理されます。イベントを受信するアクティビティとして、他にpickも用意されています。

   なお、BPEL 1.1のイベントハンドラの中ではonMessageを用いていましたが、BEPL 2.0ではonEventを使用するように変更されています。BEPL 2.0におけるonMessageは、pickによってメッセージイベントを受信する場合にのみ使用するよう規定されています。
リクエスト・リプライの基本パターン
図1:リクエスト・リプライの基本パターン

並列呼び出し
図2:並列呼び出し


並列呼び出し

   flowアクティビティとは、並列処理を行うためのアクティビティです。図2の例では、3つのinvokeが並列に実行されます。なお、図ではreceiveを省略しています。並列処理を行うことの利点は、トータルな処理時間の短縮です。


forEachによる繰り返し呼び出し

   BEPL 2.0では、forEachアクティビティが追加されました。forEachループは、繰り返し回数が受信データなどによって変動する場合に用います。

   forEachでは並列処理をオプション指定することができます。これはループ処理を行うのではなく、受信データの数の分だけスレッドを生成し、flowアクティビティと同じように並列処理を行います。これは、複数レコードを許すパートナーと複数レコードを許さないパートナーとの間のデータスキーマの違いをフロー制御によって吸収するということを示しています。


pickによるデータの分割受信

   pickは複数種類のイベントを指定し、その発生を待機します。その中の1つのイベントが発生するとそれに応じた処理を実行し、pickアクティビティを終了します。1回のpick処理では1つのイベントしか受信できません。


イベントハンドラ

   BPELでは、非同期で発生するイベントを処理するためのイベントハンドラを設定できます。イベントハンドラはBPELフローの全体で1つ、また各スコープごとにも1つずつ設定できます。スコープとはscopeアクティビティによって指定されたフロー内の部分的な範囲を指し、ローカル変数、各種ハンドラ(イベントハンドラなど)、その他の定義の有効範囲として機能します。

   イベントハンドラは指定されたイベントの発生によってインボークされ、メインのスレッドと並列して発生したイベントの処理を行います。イベントハンドラに指定できるイベントの種類には、「onEvent(パートナーからのメッセージであるリクエスト/リプライの受信によるイベント)」と「onAlarm(設定したタイマーのタイムアウトによるイベント)」があります。なおBPELにはイベントハンドラの他に、フォールトハンドラ(例外処理)、コンペンセーションハンドラがあります。

   次に、BPELにおけるトランザクション制御について解説します。

1   2  3  次のページ


Fiorano Software, Inc. 日本オフィス ジャパン オペレーション マネージャ 青島 茂
著者プロフィール
Fiorano Software, Inc.
日本オフィス ジャパン オペレーション マネージャ
青島 茂
SOA/ESBの分野に2003年1月からたずさわる。2005年3月にFiorano Softwareの日本オフィスを開設し、現在SOA/ESB製品の国内市場への普及に専心している。


INDEX
第8回:BPELの課題
BPELの基本フロー
 BPELにおけるトランザクション制御
 BPELにおけるデータハンドリング
SOA/ESBの真の姿とは
第1回ESBの「B(バス)」が意味するものとは
第2回ESBからSOAを理解する
第3回ESBにおけるデータ変換(前編)
第4回ESBにおけるデータ変換(後編)
第5回アプリケーションの連携方式
第6回リクエスト・リプライ方式とイベントドリブン方式の違い
第7回BPEL 2.0とは?
第8回BPELの課題

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30