2 つの異なるシステム (SystemA と SystemB) から 2 つの相関する受信メッセージがあり、基本的に SystemA メッセージから SystemB メッセージにいくつかのフィールドをコピーしたいだけです。
したがって、私の Construct Message シェイプは次のようになります。
メッセージの割り当て図形には、次のコードが含まれています。
xmlIncomingNoAttachHolder = new System.Xml.XmlDocument();
xmlIncomingNoAttachHolder = msgMultiPartInNoAttachment.BodySegments;
// assigning the SsytemB version (no attachment) first.
// Also, since we are only copying a couple fields, this can serve as the base.
msgComboWithAttach = xmlIncomingNoAttachHolder;
msgComboWithAttach(XMLNORM.TargetCharset) = "UTF-8";
マップには、左側に 2 つの入力 (SystemA スキーマと SystemB スキーマ) ORU メッセージがあり、右側に出力 ORU メッセージがあります。これも SystemB 入力メッセージと同じスキーマを共有します。
上記のメッセージ割り当てコードを使用して出力msgComboWithAttach
メッセージを割り当ててから、マッパーを使用して必要ないくつかのフィールドを SystemA メッセージから SystemB メッセージにマップするだけでよかったと思っています。
しかし、マップを適用するとすぐに、変換を実行する前にプリロードされたmsgComboWithAttach
メッセージがクリアされ、マップが適用されるようです。結果のメッセージには、マップでコピーされたフィールドのみが含まれ、メッセージ割り当てpre-loadで割り当てられた他のセグメント/フィールドは含まれません。
これは予想される動作ですか? その場合、マップ内のすべてのセグメントに対して一括コピーを実行する必要がありますか? または、メッセージをプリロード/コピーして、いくつかのフィールドのみをマップする方法はありますか?