この場所から BPEL の例を入手しましたhttps://svn.wso2.org/repos/wso2/carbon/platform/trunk/products/bps/modules/samples/product/src/main/resources/bpel/2.0 /SampleCompensationHandlers/FlightReservationProcess/
この例では、特定のスコープを実行するときに特定の変数を設定します。最後のスコープはエラーをスローするため、フォールトはそのスコープに関連するハンドラーをトリガーし、フォールトを再スローします。このようにして、プロセスの障害ハンドラーがトリガーされ、正常に完了したすべてのスコープに対して補正が行われます。
Eclipse で BPEL プロジェクトを作成し、そこにサンプルを配置してから、いくつかのテストを開始しました。しかし、私は非常に奇妙な動作を発見しました:
数回だけ正しい結果が得られました: CarReservationActivity: 1 CarReservationCompensated: 1 HotelReservationActivity: 1 HotelReservationCompensated: 1 FlightReservatoinActivity: 1
他のすべての場合、私は間違った結果を得ました:
A)
CarReservationActivity: 1 CarReservationCompensated: 0 HotelReservationActivity: 1 HotelReservationCompensated: 1 FlightReservatoinActivity: 1
B)
CarReservationActivity: 1 CarReservationCompensated: 1 HotelReservationActivity: 1 HotelReservationCompensated: 0 FlightReservatoinActivity: 1
結果が正しくない場合は、ケース A) が優先されます。
どこに問題があるのか わかりません。すべてがうまく見えます。
誰かが問題を解決するのを手伝ってくれますか?
使用ソフトウェア : - Windows 7 Enterprise, SP1, 32bit - Apache Tomcat v.6.0.18 - Apache ODE v.1.3.5 - Eclipse Indigo v.3.7.2 SR2 - BPEL Designer v.1.0.1 - Java 7 (v. 1.7.0_07)