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