我是BizTalk的新手,有没有人可以帮我解决BizTalk 2010中的以下场景?
在BizTalk业务流程中,需要将消息(xml)作为参数发送到WCF服务;该服务将返回一条消息。如下面的屏幕截图所示。
我的问题和问题是如何构造'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
答案 0 :(得分:8)
在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;
要生成XML,您可以右键单击visual studio中的模式文件,然后选择“生成实例”,这将生成一个基本的XML文件,可以作为起点。注意:要使用上述方法,您需要将所有双引号替换为您使用的XML中的单引号。