是否可以将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消息类型,XLANGMessage, IBaseMessage, WMI等之间都没有直接转换。
你能做吗?当然,但是您实际上是在手动重新创建消息。
而且,我很确定您的代码将只获得路由到业务流程的消息,而不是任何内部/持久化实例。
我不得不问,你为什么要这样做?使用常规异常处理技术在业务流程内处理Fault消息会更好。