前回に引き続きエラー検知の話です。前回と同じユースケースを使います。
ユースケース
インプットとしては以下のようなTransactionと、
以下のようなProductマスターを考えてみましょう。
Transactionの集計を行うにはマスターをProductIDで結合し、Unit PriceとQtyを掛け算して集計を行う必要があります。
また、ワークフロー内でのチェックポイントは結合ツールのL出力です。Product Masterに登録されていないデータがあると、結合ツールのL側に出てきます。
メッセージツールによるエラー検知
今回はメッセージツールを使ってエラー検知を実施します。メッセージツールもまた開発者カテゴリにあります。
メッセージツールの設定は以下のような画面構成となっています。
今回のケースであれば、以下のように設定します。
メッセージツールではデフォルト設定では単にメッセージを出すだけですが、メッセージタイプを「エラー」にすることでエラーを発生させることができます。また、メッセージ式を自由に構築することができるため、データの内容をメッセージに含めることができます。
ここでは、マスターに登録されていないProductIDをエラーとして出すようにすることで、何が不足しているか、というのをワークフロー実行後に知ることができます。また、メッセージの送信タイミングを「式がTrueとなる行の前」にしているため、全レコードに対してそれぞれ判断し、メッセージを送信するような設定にしています。
実際にマスター不足のデータを処理してみると、以下のようになります。
これにより、ProductIDの4と5がマスターに登録されていないことがわかります。
メッセージツールのエラー検知ロジック
メッセージツールでは、テストツールのように複数のデータストリームの値を比較してエラー通知を行う、などといったことには対応していません。ただし、ツールを組み合わせてメッセージツールに入力するデータを工夫すれば可能です。テストツールより柔軟にエラーを検知することができますが、検知ロジックをワークフローとして組んでおく必要があります。テストツールに組み込まれている内容で事足りる場合はそちらを使えばよいですし、そうでない場合はメッセージツールで対応することになります。
特に、テストツールで対応できないユースケースとしては、フィールドの値をメッセージとして表示できることが大きなポイントです。これにより、エラーメッセージから対応しなければならないことを推測しやすくできます。
「メッセージを送信する時」オプション
このオプションの「最初のレコードの前」「最後のレコードの後」「すべての下流のツールの実行完了後」は、1度だけメッセージを出力するオプションとなり、どのタイミングでメッセージを出すか、というタイミングが異なるだけです。レコードが0の場合はメッセージは出力しません。そのため、エラー検知の際にレコードが一つでもあればエラーとみなす、といった場合はこれらのオプションが利用可能です(その場合はどのオプションでも使えますが、エラー表示が早いのは「最初のレコードの前」です。)。なお、それぞれのレコードに対してエラーなのかどうかを判断するような場合はこのオプションは使えません。
一方、「式がTrueとなる行の前」は、各レコードに対してメッセージを出力するかどうかの判断を行います。つまり、何かしら条件を決めておけばその条件に合致したタイミングでメッセージを出力します。すべてのレコードでメッセージを出力したい場合は、「”True”」などを入力しておけばよいです。このオプションの場合はそれぞれのレコードに対してエラーかどうかの検知ができるのが特長です。
まとめ
- メッセージツールを使ってエラー検知を行う方法を紹介しました
- メッセージツールではテストツール以上に柔軟な設定を行うことができる一方、複数のエラー検知設定を簡単に行うことはできません
- 以下のようなテストが可能です
- レコードが一つでもあればエラーとみなす
- 各レコードに対してエラー条件を設定してエラー検知を行う
- テストツールの紹介の際にも述べましたが、このようなエラーの自動検知は、ワークフロー実行後に各ツールの出力のチェックなど余計な気を回さなくても自動的にやってくれるのでぜひ活用したい手法です
- より簡単にエラー検知を行いたい、といった場合はテストツールの利用をおすすめします
- エラー検知以外にも、ワークフローで何が起きているかを検知できるツールです
サンプルワークフローダウンロード
次回
次回もエラー検知の話です。
コメント