将BizTalkMessage转换为XLANGMessage
是否可以将Microsoft.BizTalk.Operations.BizTalkMessage实例转换为Microsoft.XLANGs.BaseTypes.XLANGMessage实例,而不丢失BizTalkMessage的上下文 原因是我希望检索所有构造的业务流程消息实例,然后将这些消息添加到ESB Toolkit方法:将BizTalkMessage转换为XLANGMessage,biztalk,esb,biztalk-2013,esb-toolkit-2.0,Biztalk,Esb,Biztalk 2013,Esb Toolkit 2.0,是否可以将Microsoft.BizTalk.Operations.BizTalkMessage实例转换为Microsoft.XLANGs.BaseTypes.XLANGMessage实例,而不丢失BizTalkMessage的上下文 原因是我希望检索所有构造的业务流程消息实例,然后将这些消息添加到ESB Toolkit方法: private List<BizTalkMessage> GetOrchestrationMessages() { List<BizTalkMe
private List<BizTalkMessage> GetOrchestrationMessages()
{
List<BizTalkMessage> messages = new List<BizTalkMessage>();
MessageBoxServiceInstance serviceInstance = GetServiceInstance();
foreach (object item in serviceInstance.Messages)
{
BizTalkMessage bizTalkMessage = (BizTalkMessage)item;
messages.Add(bizTalkMessage);
}
return messages;
}
public void HelperMethod(XLANGMessage faultMessage)
{
foreach(BizTalkMessage biztalkMessage in GetOrchestrationMessages)
{
XLANGMessage xlangMessage = ConvertToXLANGMessage(biztalkMessage);
Microsoft.Practices.ESB.ExceptionHandling.ExceptionMgmt.AddMessage(faultMessage, xlangMessage);
}
}
所以,主要的问题是如何实现convertoxlangmessage方法
谢谢大家! 在任何BizTalk消息类型、XLANGMessage、IBaseMessage、WMI等之间都没有直接强制转换 你能做到吗?当然可以,但实际上您需要手动重新创建消息 另外,我非常确定您的代码只会将消息路由到编排,而不会路由到任何内部/持久化实例
我不得不问,你为什么要这样做?最好只使用常规异常处理技术处理业务流程中的错误消息。上述方法从最后一个持久性点检索所有消息实例。我没有使用常规的异常处理技术,因为在这种情况下,我需要为构建新消息的所有业务流程形状放置try/catch块,因为在每个位置都有不同的消息实例可用。所以我需要在每个catch块中对不同的消息集进行硬编码,以避免错误地使用未构造的消息。