将BizTalkMessage转换为XLANGMessage

将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

是否可以将Microsoft.BizTalk.Operations.BizTalkMessage实例转换为Microsoft.XLANGs.BaseTypes.XLANGMessage实例,而不丢失BizTalkMessage的上下文

原因是我希望检索所有构造的业务流程消息实例,然后将这些消息添加到ESB Toolkit方法:

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块中对不同的消息集进行硬编码,以避免错误地使用未构造的消息。