Biztalk Scripting Functoid和Documents

时间:2015-02-26 13:39:40

标签: biztalk biztalk-2013r2

我在地图上有一个脚本functoid。我需要将消息传递给方法的参数,并返回关联的文档。我认为可行的方法是:

public XLANGMessage Map(XLANGMessage src);

然而,我找不到确认;我可以通过映射工具传递整个消息,将其视为文档,并返回响应吗?我的方法是否正确?

1 个答案:

答案 0 :(得分:1)

脚本functoid只能接受字符串并返回字符串。您必须在Orchestration或帮助程序库中执行您尝试执行的操作,或使用内联XSLT(可以选择节点集并根据该输出生成输出)。

在编排中,我在MessageAssignment形状中执行类似的操作:

msg_NewMsg = new System.Xml.XmlDocument();
UtilityClass.Map(msg_OldMsg, msg_NewMsg);
msg_MapOutput.FieldToAssign = msg_NewMsg.OuterXml();

其中FieldToAssign是消息中的区分字段。在实用程序类中,您可以执行以下操作:

public static void Map(XLANGMessage from, XLANGMessage to)
{
  using(MemoryStream ms = from[0].RetreiveAs(typeof(Stream)))
  {
    using (StreamReader reader = new StreamReader(ms))
    {
      string x = reader.ReadToEnd();
      // do stuff with x; alternative,  XDocument xd = XDocument.Parse(reader.ReadToEnd());
    }
  }
  to[0].LoadFrom(new StringReader(x));
  // alt: save the XDocument to a memory stream and call LoadFrom on the memory stream
}