フラット ファイル アセンブラー パイプライン コンポーネントでの区切り記号の保持
フラット ファイル アセンブラーを使用するカスタム パイプラインを通るメッセージに、レコードが不足している場合、フラット ファイルの出力にレコードの区切り記号が表示されるかどうかは、入力ファイルのどこでレコードが不足しているかによって決まります。
フラット ファイルに特定の区切り記号が保持されるようにするには、マップとカスタム スクリプトを使用できます。これにより、特定の入力レコードがメッセージ内に存在しないときに "空の" レコードが確実に作成されます。 これが機能するためには、フラット ファイル アセンブラーのドキュメント スキーマで空になる可能性があるノードに、次のようにプロパティを設定する必要があります。
プロパティ | 設定 |
---|---|
空のデータの区切り記号を保持する | はい |
末尾の区切り記号の非表示 | いいえ |
空のノードを生成 (ルート ノードに設定) | True |
"空の" レコードを作成するマップを作成するには
BizTalk プロジェクトに新しいマップを追加します。
フラット ファイル アセンブラーによって使用されるドキュメント スキーマを、マップの送信元スキーマと送信先スキーマの両方に指定します。
空にならないソース フィールドを、対応するマップ先フィールドにマップします。
空になる可能性があるフィールドに対しては、ソース フィールドが空であるかどうかを確認して (Nil の代わりに) 空の文字列を返すカスタム スクリプトを使用します。 次のようなスクリプトを使用します。
public string ValOrEmpty(string val) { return (val.Length > 0) ? val : ""; }
Note
空になる可能性があるマップ対象フィールドごとに、一意の関数名を持つスクリプトを作成する必要があります。 たとえば、空のフィールドが 3 つある場合は、、
ValOrEmpty2
ValOrEmpty3
、 という名前ValOrEmpty1
の関数を使用できます。BizTalk Server管理コンソールを使用して、カスタム パイプラインとフラット ファイル アセンブラー コンポーネントを使用して送信ポートを構成し、そのマップを送信マップとして使用します。