【问题标题】:Convert BizTalkMessage to XLANGMessage将 BizTalkMessage 转换为 XLANGMessage
【发布时间】:2014-08-07 13:26:27
【问题描述】:

是否可以将 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);
     }
}

那么,主要问题是如何实现ConvertToXLANGMessage方法?

谢谢!

【问题讨论】:

    标签: biztalk esb biztalk-2013 esb-toolkit-2.0


    【解决方案1】:

    在任何 BizTalk 消息类型、XLANGMessage、IBaseMessage、WMI 等之间没有直接转换。

    你能做到吗?当然可以,但您实际上是在手动重新创建消息。

    另外,我很确定您的代码只会将消息路由到编排,而不是任何内部/持久实例。

    我不得不问,你为什么要这样做?最好使用常规异常处理技术在 Orchestration 中处理您的故障消息。

    【讨论】:

    • 上述方法从最后一个持久点检索所有消息实例。我没有使用常规的异常处理技术,因为在这种情况下,我实际上需要为所有构建新消息的编排形状放置 try/catch 块,因为在每个地方都有不同的消息实例可用。所以我需要在每个 catch 块中硬编码不同的消息集,以避免错误“使用未构造的消息”。
    • 但我想避免硬编码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    • 2014-07-20
    • 2017-01-27
    • 2013-05-10
    • 2020-09-28
    • 2013-07-26
    相关资源
    最近更新 更多