idempotentプロパティとフォルト処理に関する必知事項

composite.xmlファイルでidempotentデプロイメント・ディスクリプタのプロパティがfalseに設定されている場合、パートナ・リンクの起動が失敗しても、invokeアクティビティからリカバリは開始されません。invokeアクティビティの再試行をidempotentプロパティに依存することはお薦めいたしません。かわりに、BPELプロセス内に設計したフォルト処理(catchAllアクティビティの場合など)によって、リカバリを試みます。ベスト・プラクティスとして、かわりにフォルト・ポリシーを使用してinvokeアクティビティを再試行することをお薦めします。

表12-8は、idempotentプロパティがfalseに設定されていて、パートナ・リンクの起動が成功した場合と失敗した場合の動作を示しています。

表12-8 idempotentプロパティがfalseに設定されている場合のリカバリ動作

パートナ・リンクの起動 結果

成功

invokeアクティビティは実行直後にデハイドレーションされ、デハイドレーション・ストアに記録されます。

不成功、かつBPELプロセスにcatchAllアクティビティなどのフォルト処理が含まれている

リカバリはcatchAllアクティビティから開始され、invokeアクティビティからは開始されません

不成功、かつBPELプロセスにフォルト・ポリシーが含まれている

フォルト・ポリシーが使用されて、invokeアクティビティのリカバリが試みられます。これは、推奨アプローチです。

たとえば、BPELプロセスに次の設計が含まれているとします。

  • invokeアクティビティによってパートナ・リンク(この例では、myPartnerLinkという名前です)が起動されます。

  • composite.xmlファイルで、idempotentデプロイメント・ディスクリプタのプロパティがfalseに設定されています。

    <property name="bpel.partnerLink.myPartnerLink.idempotent">false</property>
    

    この設定により、BPELプロセスはこのアクティビティの実行直後にデハイドレーションされ、デハイドレーション・ストアに記録されます。

    このプロパティは、「パートナ・リンクの編集」ダイアログでfalseに設定することもできます。図12-29に詳細を示します。

    図12-29 「パートナ・リンクの編集」ダイアログの「冪等性」タブ

    図12-29の説明が続きます
    「図12-29 「パートナ・リンクの編集」ダイアログの「冪等性」タブ」の説明

    詳細は、「パートナ・リンク操作レベルでの冪等性の管理」を参照してください。

  • scopeアクティビティのcatchAllアクティビティ・エラー・ハンドラによってフォルトが捕捉され、ロールバック・フォルトがスローされます。

パートナ・リンクに対するinvokeアクティビティによる起動が失敗した場合、リカバリはcatchAllアクティビティ・エラー・ハンドラから開始され、invokeアクティビティからは開始されませんOracle Enterprise Manager Fusion Middleware ControlのBPELプロセスのflowアクティビティで、catchAllアクティビティからのリカバリを監視できます。

これは設計によります。idempotentプロパティの設定は、invokeアクティビティの実行のに確認されます。実行に失敗し、例外が発生した場合、idempotentプロパティの設定には到達しません。BPELプロセス・サービス・エンジンによって、catchAllアクティビティを開いた直後のインスタンスが保存されます。idempotentプロパティがfalseに設定されているため、このインスタンスを保存する必要があります。これが、リカバリがcatchAllアクティビティで再開される理由です。

かわりに、失敗したinvokeアクティビティをフォルト・ポリシーでリカバリすることをお薦めします。フォルト・ポリシーの作成の詳細は、「フォルト管理フレームワークを使用したフォルトの処理」を参照してください。

idempotentプロパティの詳細は、「デプロイメント・ディスクリプタのプロパティの概要」を参照してください。