EDIFACT サンプルの実行
このトピックでは、テスト・メッセージを EDIFACT メッセージ・フローに入れる方法を説明します。
入力メッセージ
EDIFACT サンプルには、次に示す 5 個のテスト・メッセージが含まれています。
- D.96A_INVOIC_1.enqueue
- D.96A_INVOIC_2.enqueue
- D.96A_INVOIC_3.enqueue
- D.96A_INVOIC_4.enqueue
- D.96A_INVOIC_missing_BGM.enqueue
これらの 5 個の入力メッセージは、すべて INVOIC メッセージです。
最初の 4 個の入力メッセージは有効なものです。
5 番目の入力メッセージは、BGM フィールドが欠落しており、無効なメッセージです。
サンプルの実行
サンプルを実行するには、入力キューにメッセージを入れ、出力キューからメッセージを取得することが必要です。
以下の指示に従ってください。
- 入力メッセージのいずれかを EDIFACT_TO_XML_IN キューに入れます。
EDIFACT_TO_XML_IN キューにメッセージを入れると、最初のメッセージ・フロー (VALIDATINGEDIFACT2XML.msgflow) の EDIFACT_TO_XML_IN MQInput ノードによりそのメッセージが解析され、メッセージ・セットと照らし合わせて検証されます。
- そのメッセージが有効な EDIFACT メッセージなら、それは Compute ノードに渡されます。このノードは、EDIFACT メッセージを XML メッセージに変換します。
次に Compute ノードは、そのメッセージを EDIFACT_TO_XML_OUT MQOutput ノードに渡します。そこでメッセージは EDIFACT_TO_XML_OUT キューに入れられます。
- メッセージが有効な EDIFACT メッセージでないなら、そのメッセージは EDIFACT_FAIL ノードに渡され、それによって EDIFACT_FAIL キューに入れられます。
- EDIFACT_TO_XML_OUT キューから変換後のメッセージを取り出し、それを保管します。
メッセージは XML フォーマットになっています。
- 保管されたメッセージを XML_TO_EDIFACT_IN キューに入れます。
メッセージを XML_TO_EDIFACT_IN キューに入れると、第 2 のメッセージ・フロー (VALIDATINGXML2EDIFACT.msgflow) の XML_TO_EDIFACT_IN MQInput ノードによりそのメッセージが解析され、メッセージ・セットと照らし合わせて検証されます。
- そのメッセージが有効な XML メッセージなら、それは Compute ノードに渡されます。このノードは、XML メッセージを EDIFACT メッセージに変換します。
次に Compute ノードは、そのメッセージを XML_TO_EDIFACT_OUT MQOutput ノードに渡します。そこでメッセージは XML_TO_EDIFACT_OUT キューに入れられます。
- メッセージが有効な XML メッセージでないなら、そのメッセージは EDIFACT_FAIL ノードに渡され、それによって EDIFACT_FAIL キューに入れられます。
- メッセージを XML_TO_EDIFACT_OUT キューから取り出します。
これでメッセージは EDIFACT メッセージになりました。
EDIFACT_TO XML_OUT または XML_TO_EDIFACT_OUT キューにメッセージがない場合には、問題の診断を参照してください。
メッセージはまだ入力キューにあるか、あるいは EDIFACT_FAIL キュー上か、またはいずれかのシステム・キューにある可能性があります。
D.96A_INVOIC_missing_BGM.txt メッセージ
D.96A_INVOIC_missing_BGM.txt メッセージを最初のメッセージ・フローに入れると、EDIFACT_TO_XML_IN MQInput ノードでの検証に失敗します。
このメッセージの BGM フィールドが欠落しているため、MQInput ノードはエラーを生成します。
Windows イベント・ビューアーのアプリケーション・ログでエラーを表示することができます。
エラー・テキストは次のようなものです。
メッセージ検証に失敗しました。完成しているとみなされている 1 つのエレメントが、minOccurs 制約を満たしていません。
論理ツリー上のエレメント BGM のインスタンスは 0 個ですが、インデックス 1 のその親タイプ/エレメント INVOIC の中で、minOccurs 制約が 1 として定義または限定されています。minOccurs 制約を調整し、下方修正してからブローカーに再デプロイするか、またはメッセージ自体の中のエレメントのインスタンス数を増やしてください。
サンプルのホームに戻る