フォールト処理
アプリケーションをProcess Designerと統合すると、エラー状態を次のように処理できます。
- •境界イベントを使用してプロセスのフォールトをキャッチする。
- •出力フィールドを使用するか、フォールトをスローするためにプロセスにスローステップを追加して、プロセスからフォールトを返す。
フォールト処理と境界イベント
境界イベントは、特定のステップの境界、つまりイベントが定義されているステップのスコープ内で発生するエラーをキャッチするイベントです。プロセス内のステップのフォールト処理を有効にした場合、境界イベントを定義していることになります。フォールトハンドラは、プロセスが実行されると、そのステップ上のフォールトをリスンします。フォールトがキャッチされるとステップは中断され、プロセスは、フォールト処理用に定義されたパスに従います。フォールトパスで行える処理の例としては、電子メール通知を送信してプロセスを終了する、指定された間隔を待機した後再試行する、プロセスを中断する、別のパスを使用してプロセスを完了する、などがあります。
例えば、ホストシステムにアクセスできない、または無効なデータがプロセスで提供されたなどの理由で、RESTサービスがプロセスにエラーコードを返す場合に発生するフォールトをキャッチできます。
注: ステップのフォールトハンドラは、中断する境界イベントです。これは、フォールトが発生したときに、プロセスはフォールトパスに従い、ステップのメインパスは実行されないことを意味します。
フォールトハンドリングのガイドラインのデザイン
フォールトハンドラを定義するときに、次のポイントに注意する必要があります。
フォールトは、次のものによってトリガされる可能性があります。
- •サービスステップ(サービスコネクタまたはプロセスで作成された自動ステップを使用)。
- •作成ステップ(Process Designerで使用できる特別な種類のサービスステップ)。
- •ホストシステムのインタラクション。
- •プロセスで定義されたスローステップ。
- •その他のフォールト。
サービスコネクタによってトリガされたフォールト
フォールトがサービスコネクタによってトリガされた場合、faultInfoプロセスオブジェクトにエラーの説明が含められ、これがプロセスに返されます。
Process Designerでフォールト処理を有効にすると、SOAコネクタが生成した可能性のある明示的なruntimeErrorフォールトもキャッチする可能性があります。以下に例を示します。
<wsdl:operation name="read">
<wsdl:input message="tns:readRequest"></wsdl:input>
<wsdl:output message="tns:readResponse"></wsdl:output>
<wsdl:fault name="runtimeError" message="tns:faultResponse"/>
</wsdl:operation>
フォールト処理をサポートするステップのタイプ
次のステップタイプでフォールト処理を有効にできます。
有効にすると、フォールトハンドラは個別のステップ上のすべてのフォールトをキャッチします。これにより中断が発生するため、プロセス内に個別の実行パスを作成します。フォールト名フィールドを指定すると、プロセスオブジェクトのすべてのフォールトの詳細を取得できます。
これらの各ステップタイプの[フォールト処理]タブで、これらのプロパティを設定できます。
プロパティ | 説明 |
---|
フォールトの取得 | 必須。このステップでフォールト処理を有効にする場合に選択します。 デフォルトで、このオプションは無効に設定されています。 |
フォールトフィールド名: | [フォールトの取得]が有効な場合は必須。 フォールト名を表します。デフォルトはfaultInfoです。 |
次の図は、フォールト処理が有効なサービスステップを示します。
スローステップで、特定のフォールトタイプ、理由、および説明を設定することもできます。フォールト情報を渡すために出力フィールドを使用する代わりに、パターンまたはプロセスによってキャッチされたときに、他のプロセスからスローステップを呼び出すことができます。
プロセスからフォールトを返す方法
- 1出力の使用。これは、エラーが発生する可能性があることがわかっており、データ決定ステップを使用して通常のプロセスフローに基づいてプロセスを分岐する場合に適しています。
- 2フォールトのスロー。これは、エラーへの適切な応答が、エラーを呼び出し元に渡すか、エラーをログに記録してプロセスを中断することのみである場合に適しています。例えば、HTTPステータスコード403 Forbiddenで応答するWebサービスへのアクセスを試みた場合、これは、アクセスが拒否されたことが理由で、サービスは要求を理解したがアクションの実行は拒否していることを示します。多くの場合、このエラーは通常のプロセスフローでは解決しない可能性が高いため、フォールトをスローすることが、これを処理する最良の方法です。
ステップの使用状況のスロー
プロセスにスローステップを追加すると、スローステップによって、エラー情報がプロパゲートされます。これにより、例えばサブプロセスステップなどを介して、プロセスの呼び出し時にフォールトを捕捉できます。
以下の点に注意してください。
- 1名前は文字列値である必要があります。
- 2スローは終了ステップであるため、送信リンクはサポートしません。
- 3スローステップは、フォールトハンドラを使用して捕捉された情報を再スローするために使用できます。その場合、ステップのペイロードは、サービス、サービスコネクタ、またはSOAコネクタによって返されるパラメータを格納したfaultInfo要素です。
- 4スローステップを使用して、プロセスの一部として使用する特定のフォールト情報を構成することもできます。