アクションのエラーハンドリング - IM-BloomMaker
IM-BloomMakerアクションでのエラーハンドリングをどのように実装するか、その判断方法と基本的な実装を説明します。
ここでは、マスタメンテナンステンプレートの資材をもとに、実装方法の一例を紹介しています。
入力フォームのバリデーション(入力規則の検証)については、入力フォームの検証の記載を参照してください。
説明
- ハンドリングしたいエラーの分類が「システムエラー」と「業務ロジックエラー」のどちらかに該当するかを判断する
- 参考:「エラーの内容」「エラーのレベル」
- 「エラーハンドリングの方法」にあるリンク先の記載を参考にして実装する
- 通信エラー
- インフラ障害
- アプリケーションエラー
- カスタムスクリプトのコーディングエラー
- 業務ルールとの不整合
- データの不整合
ユーザが通常の操作で対処できない致命的なエラー
ユーザが通常の操作で対処できる業務上のエラー
サンプル資材
このページでは、Accel Studioの業務テンプレートにあるマスタメンテナンステンプレートで作成できる資材を例に説明しています。
上記資材の内容を確認するには以下の手順で操作します。
サイトマップ
>Accel Studio
>アプリケーション作成
>業務テンプレート一覧
の画面で、ベーステンプレート
にあるマスタメンテナンス
から作成すると、Accel Studio
>アプリケーション管理
>アプリケーション一覧
>自動生成されたアプリケーション
に資材が表示されます。
実装イメージ
- 以下のようにすると、どのアクションに対するエラーハンドリング処理なのかを明確にできます。
- ひとつのアクションに複数のアクションアイテムを設定しないようにする
エラーが発生したとき
で設定するアクションに実行条件
を設定する
- プレビュー環境では、以下のような開発者向けのメッセージが表示されます。
- アクションでエラーが発生すると、開発者ツールのコンソールには、以下のようにエラーが発生したアクションの情報が表示される
アクション名:「登録ボタンが押されたとき」の「アクションが呼ばれたとき」に定義されているアクションの1番目のアクション「カスタムスクリプトを実行する」でエラーが発生しました。
- システムエラーの場合、
アクションの実行に失敗しました。ブラウザのコンソールを確認してください。
というエラーダイアログが表示される
- アクションでエラーが発生すると、開発者ツールのコンソールには、以下のようにエラーが発生したアクションの情報が表示される
定型エラーメッセージを表示する
IM-BloomMakerでは、アクションの実行でシステムエラーが発生すると、アクションエディタのエラーが発生したとき
に設定されたアクションが実行される仕組みになっています。
サンプル資材においては、エラーが発生したとき
に設定されたアクションで、多言語変数に定義しているエラーメッセージを表示するようにしています。
以下の手順では、サンプル資材にエラー発生用のカスタムスクリプトを追加することで、エラーが発生したとき
に設定されたアクションが実行されることを体験するまでの流れを説明しています。
- サンプル資材の画面コンテンツから
登録・編集・参照画面
を開く - アクション一覧で
登録ボタンが押されたとき
を編集
する カスタムスクリプトを実行する
をアクションが呼ばれたとき
の先頭に追加する
- カスタムスクリプトの内容は、例外が発生するようなエラーを書きます。例:
throw new Error('test');
- このエラーが捕捉されると、
エラーが発生したとき
に登録されているアクションが実行されます。
決定
をクリックして、アクションエディタを閉じる- 画面コンテンツを
上書き保存
して、プレビュー
を開く 登録
をクリックする
エラーが発生したとき
に登録されているアクションにより、登録処理に失敗しました。
というエラーダイアログが表示されます。
ロジックフローのエラーメッセージを表示する
IM-BloomMakerでは、IM-LogicDesignerのフロールーティングへのリクエストでエラーが発生した場合、以下のいずれかのエラーメッセージを取得できる仕組みがあります。
- (A) エラー終了タスクまでフローが遷移した場合、そのタスクで設定されているエラーメッセージ
- (B) エラーを送出したタスクによって返却されたエラーメッセージ
サンプル資材においては、IM-BloomMakerでフロールーティングとのデータ受け渡しを担う変数構造のendPointをリンク先の記事のように定義しています。ここではこのように変数定義している前提で説明しています。
以下の手順は、上記 (A) を実装する場合の例です。サンプル資材にフロールーティングからのエラーメッセージを表示するアクションを追加することで、エラーハンドリングの流れを体験できます。
(B) を実装する場合もendPoint
の変数構造やエラーハンドリングの方法は同一です。IM-LogicDesigner側でエラーメッセージを設定するタスクが異なるだけです。
- サンプル資材の画面コンテンツから
登録・編集・参照画面
を開く - アクション一覧で
削除ボタンが押されたとき
を編集
する メッセージ〇をエラーダイアログで表示する
をエラーが発生したとき
に追加する決定
をクリックして、アクションエディタを閉じる- 画面コンテンツを
上書き保存
して、プレビュー
を開く 主キー
に任意の文字を入力して、登録
をクリックする- 登録した項目の
編集
アイコンをクリックして、編集画面
を表示する - 別のウィンドウで
テナント管理
>TableMaintenance
>テーブル一覧
で登録したレコードを削除する
- テーブル名は、Accel Studioの
アプリケーション管理
>エンティティ
>データ定義
で確認できます。
編集画面
で削除
をクリックする
エラーが発生したとき
に登録したアクションにより、削除対象が見つかりませんでした。
というエラーダイアログが表示されます。
ロジックフローの出力を検証して、定型エラーメッセージを表示する
IM-BloomMakerでは、IM-LogicDesignerのフロールーティングからのレスポンスデータを利用してエラーハンドリングをすることができます。
サンプル資材においては、IM-BloomMakerでフロールーティングとのデータ受け渡しを担う変数構造のendPointをリンク先の記事のように定義しています。ここではこのように変数定義している前提で説明しています。
以下の手順でエラーハンドリングの流れを体験できます。
- サンプル資材の画面コンテンツから
登録・編集・参照画面
を開く プレビュー
を開く主キー
に登録済みの文字(例:00000001)を入力して、登録
をクリックする
- フロールーティングのアクションのあとに登録されているアクションにより、
既にレコードが存在しています。
というエラーダイアログが表示されます。 - このエラーダイアログ表示の実行条件には、レスポンスデータの内容を評価する処理が含まれています。