
ラボ 4: (オプション) エラーハンドリング
概要
ラボ 2では、新規ユーザーを登録するフローを作成しました。 Salesforceでエラーが発生した場合は、Bad Requestの応答を受け取ります。 このエラーメッセージでは、何が問題だったのかよくわかりません。 このラボではエラーハンドリングの方法を学習します。
ステップ 1: Tryスコープの追加
Tryスコープを使用すると、Tryスコープ内で試行したコンポーネントの実行で発生しうるエラーを処理することができます。
-
パレットで Try コンポーネントを検索してください。
-
Try コンポーネントを、Salesforce コネクターの後ろに追加します。
-
Validation のアイコンを Try コンポーネント内部に移動してください。
ステップ 2: エラーのキャッチ
エラーハンドリングには2つの方法があります。
-
On Error Continue: エラーをキャッチした後、フローの実行を継続
-
On Error Propagate: エラーをキャッチすると、エラー発生を伝播しその後のフローを実行しない
エラーの種類に応じて、最終的にどちらか一方を使用できます。
このケースでは、エラーの伝播 (Propagate) を使用します。
そのためエラー・ハンドリング部分に、 On Error Propagate のハンドラーを追加します。
-
パレットから、On Error Propagate を検索してください。コンポーネントを、エラー・ハンドリング部分にドラッグ&ドロップします。
-
コンポーネントをクリックしてください。
-
Type セクションで、右にある虫眼鏡マークをクリックします。
-
VALIDATION:INVALID_BOOLEAN を選択してください。
ステップ 3: Salesforceからの応答のログ
このステップでは、Salesforceからの応答をログに出力します。
-
レスポンスをログ出力するために、Logger コンポーネントを追加してください。
-
Logger コンポーネントに `output application/json --- payload`と設定します。
f(x) ボタンを押すと、フィールド内に
#[]
が追加されます。 これはSalesforceのレスポンスをログ出力するために dataweave 表現を使用することを意味しています。
ステップ 4: 新規エラーの発生
レスポンスをログ出力した後、新しいエラーを発生させます。
-
パレットで Raise Error コンポーネントを検索し、Loggerの後に挿入してください。
-
以下の値をコンポーネントに設定します:
-
Type:
APP:CONFLICT
-
Description:
#[error.description]
最後のステップでは、APP:CONFLICT という新規エラーを発生させ、Salesforceのエラーメッセージを使用して詳細情報をユーザーに戻します。
-
ステップ 5: 新規エラーのハンドリング
この例外に対するレスポンスを設定しましょう。
-
APIKit のエラーハンドリング部分を表示します。一番下に、On Error Propagate コンポーネントを追加してください。
-
コンポーネントをクリックして、 Type の値に `APP:CONFLICT`と入力します。
-
On Error Propagateの中にTransformコンポーネントを追加してください。
-
以下のスクリプトを追加します。
%dw 2.0 output application/json --- {message: error.description}
Raise Errorコンポーネントで設定した詳細メッセージをマッピングしています。完全なエラーオブジェクトを確認したい場合は、Transformの前にLoggerを追加できます。
HTTPステータスコードも設定する必要があります。そのために、Transformコンポーネント内部に変数を追加します。
-
Transformコンポーネント内の
をクリックしてください。
新しいウィンドウが表示されます。
-
コンボボックスから
Variable
を選択し、変数名にhttpStatus
と入力してください。 -
OK をクリックします。
-
スクリプトを削除し、
409
と追加してください。全ての変更を保存してからプロジェクトを再実行し、同じユーザーを2回作成してみてください。409 応答を受け取るはずです。
まとめ
このラボでは、以下を実施しました。
-
Try スコープの追加
-
エラーのキャッチ
-
Salesforceからのレスポンスのログ出力
-
新規エラーの発生
-
新規エラーのハンドリング
さらに学習するには:
-
Try Scope についての詳細は、ドキュメントを確認して下さい。
-
Raise Error Component についての詳細は、ドキュメントを確認して下さい。
-
Error Handling についての詳細は、ドキュメントを確認して下さい。
おめでとうございます! ラボ4が完了しました。
モジュール 4 に進んでください。