如何在Biztalk 2010中为WCF请求消息构造消息

Zal*_*lan 1 wcf biztalk

我是BizTalk的新手,有没有人可以帮我解决BizTalk 2010中的以下场景?

在BizTalk业务流程中,需要将消息(xml)作为参数发送到WCF服务; 该服务将返回一条消息.如下面的截图所示.

在此输入图像描述

我的问题和问题是如何构造'SimRequest'消息,它是来自WCF的自动生成的消息部分(当我使用'添加生成的项'来消费WCF时),另一个消息部分是'SimResponse'.

这是我对Message Assignment Shape的表达式:

varIncomingMessage = msgPI;

varStringParam = varIncomingMessage.OuterXml;
varOutMessage.LoadXml("I dont know what should be put here. Hard code the data schema of the SimRequest Message?");
msgSimRequest.parameters = varOutMessage;
msgSimRequest.parameters.msg = varStringParam;
Run Code Online (Sandbox Code Playgroud)

如果我的问题不明确或您需要我提供更多信息,请告诉我.提前致谢.

Zalan

tom*_*ern 8

在BizTalk中,您可以构造一个消息实例:

  1. 使用变换(理想方式),这意味着创建地图.在构造形状内执行转换时,它将创建消息的实例,或
  2. 通过在上面的示例中使用类似于您的方式的赋值来构造它,除了使用静态辅助方法执行它可能更容易.如果需要将Biztalk消息作为参数传递给方法,请使用库中的XLANGMessage类型Microsoft.XLANGs.BaseTypes.首先需要生成消息模式的.net表示(使用xsd.exe或svcutil.exe),以便您可以使用反序列化消息XLANGPart.RetrieveAs(typeOf(xxx)).要将消息传递出去,您可以使.net方法返回类型为XmlDocument,只要XML映射到消息模式,BizTalk就会为您完成转换.

希望这可以帮助.

你能告诉我有关如何在作业中构造msg的更多细节吗?

除了使用XmlDocument类型之外,它与您所拥有的类似,BizTalk将为您执行隐式转换.

假设您有一个名为SimRequest.xsd的模式,并且您已创建了一个名为MySimRequestMessage的此类型的编排消息.

您需要定义一个类型的变量System.Xml.XmlDocument来保存XML,我们将其称为xmlDocSimRequest.

然后在你的作业形状:

xmlDocSimRequest = new System.Xml.XmlDocument();
xmlDocSimRequest.LoadXml("<SimRequest xmlns='http://blahblah'>...some data here</SimRequest>");

// Cast to your message - it's as simple as
MySimRequestMessage = xmlDocSimRequest;
Run Code Online (Sandbox Code Playgroud)

要生成XML,您可以右键单击visual studio中的模式文件,然后选择"生成实例",这将生成一个基本的XML文件,可以作为起点.注意:要使用上述方法,您需要将所有双引号替换为您使用的XML中的单引号.