Biztalk 脚本 Functoid 和文档
Biztalk Scripting Functoid and Documents
我在地图上有一个脚本 functoid。我需要将消息传递给方法的参数,并 return 关联文档。我认为可行的方法是:
public XLANGMessage Map(XLANGMessage src);
但是,我找不到确认;我可以通过映射工具传递整条消息,将其视为文档,然后 return 回复吗?我的做法正确吗?
脚本 functoid 只能接受字符串和 return 字符串。您必须在 Orchestration 或帮助程序库中执行您想执行的操作,或者使用内联 XSLT(可以 select 节点集并基于该节点集生成输出)。
在编排中,我会在 MessageAssignment 形状中做这样的事情:
msg_NewMsg = new System.Xml.XmlDocument();
UtilityClass.Map(msg_OldMsg, msg_NewMsg);
msg_MapOutput.FieldToAssign = msg_NewMsg.OuterXml();
其中 FieldToAssign 是消息中的区分字段。在实用程序 class 中,您将执行如下操作:
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
}
我在地图上有一个脚本 functoid。我需要将消息传递给方法的参数,并 return 关联文档。我认为可行的方法是:
public XLANGMessage Map(XLANGMessage src);
但是,我找不到确认;我可以通过映射工具传递整条消息,将其视为文档,然后 return 回复吗?我的做法正确吗?
脚本 functoid 只能接受字符串和 return 字符串。您必须在 Orchestration 或帮助程序库中执行您想执行的操作,或者使用内联 XSLT(可以 select 节点集并基于该节点集生成输出)。
在编排中,我会在 MessageAssignment 形状中做这样的事情:
msg_NewMsg = new System.Xml.XmlDocument();
UtilityClass.Map(msg_OldMsg, msg_NewMsg);
msg_MapOutput.FieldToAssign = msg_NewMsg.OuterXml();
其中 FieldToAssign 是消息中的区分字段。在实用程序 class 中,您将执行如下操作:
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
}