1. IBM BPMV8 ロングランニング BPEL から WS

1. IBM BPMV8 ロングランニング BPEL から WS-AT で呼び出した
Web サービスでロールバックできない
1.1. 概要
IBM Business Process Manager(以下 IBM BPM) V8.x 以降でロングランニング BPEL から WS-AT で Web サービ
スを呼び出した際、Web サービスから RuntimeException が発生しても、Web サービス内で実行された処理がロー
ルバックできないことがあります。修正が修正番号 JR47431 として提供されています。現時点で未公開ですので、必
要に応じてパスポート・アドバンテージ経由で修正を入手お願いします。
1.2. 対象製品
IBM WebSphere Process Server V7.x 以降
IBM Business Process Manager V8.x 以降 (Advanced のみ)

JR47431 は IBM Business Process Manager V8.0.1 用に作成されています。IBM Business Process
Manager V8.5 等、他のバージョンの場合はパスポート・アドバンテージにて修正作成のリクエストが必要です。
1.3. 発生する現象について
数のフローにて、Web サービスから RuntimeException が発生した際、Web サービス内で実行された処理がロール
バックできないことがあります
問題はロングランニング BPEL 内の Invoke アクティビティーから WS-AT で Web サービスを呼び出す処理にて発生
します。
BPC エクスプローラーではアクティビティーは「停止」していますが、Web サービスで実行した処理(例. DB への更新
し処理)はロールバックされず、コミットされています。
-1-
(参考)
BPC エクスプローラー(http://<hostname>:9080/bpc )から、
[プロセス・インスタンス]>[ユーザーが開始]>[プロセス・インスタンス名]>[アクティビティー]>[UpdateOrderWS]
>[エラーの詳細]
1.4. 開発ツール上の設定
前述の現象は、以下の設定をしている場合に発生します。
(この設定は、WebSphere Process Server V6.1.2 の環境では、あるいは同環境から実行環境ごと製品のマイグレ
ーション機能で移行されたモジュールに関しては正しくロールバックされていた正しい設定です。)
下図の「UpdateOrder」アクティビティーが UpdateOrder インターフェースを介し、Web サービスを呼び出します。
-2-


BPEL の Invoke アクティビティー(「UpdateOrder」アクティビティー)の呼び出しと BPEL 側での呼び出し状態を
1 つ の ト ラ ン ザ ク シ ョ ン で 呼 び す た め 、 ア セ ン ブ リ ー ・ ダ イ ア グ ラ ム で
joinTransaction=true,suspendTransaction=false に設定します([1])。
Invoke アクティビティーの呼び出しが失敗したとき、アクティビティー状態を「停止」できるように、「未処理のフォ
ールトの処理を続行」を「いいえ」にします。(上図のキャプチャーでは「プロセス」レベルで「いいえ」に設定しして
あるため、「プロセスと同じ」で「いいえ」にしたときと同じ設定となります。)
1.5. 発生原因
本事象は、WebSphere Process Server V7 以降、BPEL のモジュールから EJB を含まなくなった SCA のアーキテ
クチャー変更に起因するものです。WebSphere Process Server V6 以前の EJB を含むモジュールではロールバッ
クがされていましたが、V7 以降の SCA では Web サービス・インポートにてロールバック処理がされなくなっていたた
めです。
1.6. 解決方法
修正番号 JR47431 をダウンロードし、同梱の適用方法に従って IBM BPM の実行環境に適用します。
下記の「iFix 適用後の作業」の手順に従い、WebSphere 環境変数を設定します。
WebSphere Process Server V7、V8 を使用中のお客様への影響を考慮し、デフォルトは「ロールバックしない」設定
となっているため、前述の設定でのロールバックが必要な場合は明示的に、WebSphere 環境変数を設定する必要
があります。
1.6.1. iFix 適用後の作業
1.
管理コンソールにログインし、[Environment]>[WebSphere variables]に移動する。
Scope をセルレベルに設定し[New…]をクリック
2.
Name: SCA_ROLLBACK_TRANSACTION_IMPORT、Value: true を設定し[OK]
-3-
3.
保存して再起動
4.
WebSphere 変数が設定されていることを確認
1.7. 参考情報
[1] 長期実行 BPEL Process のトランザクション動作
http://pic.dhe.ibm.com/infocenter/dmndhelp/v8r0m1/topic/com.ibm.wbpm.bpc.doc/topics/cprocess_transactio
n_macro.html
-4-
-5-