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

时间:2011-09-07 15:39:11

标签: wcf biztalk

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

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

enter image description here

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

这是我对消息分配形状的表达式:

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;

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

Zalan

1 个答案:

答案 0 :(得分:8)

在BizTalk中,您构建了一个消息实例:

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

      

    你能告诉我更多关于如何构建一个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;
    

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