前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AssemblyExecuteAdapter

AssemblyExecuteAdapter

作者头像
阿新
发布2018-04-12 10:07:08
5350
发布2018-04-12 10:07:08
举报
文章被收录于专栏:c#开发者c#开发者

BizTalk custom adapter

AssemblyExecuteAdapter

功能

更为方便的扩展BizTalk custom adapter 的交互方式,只需要实现IAssemblyExecute 接口就可以让BizTalk AssemblyExecuteAdapter 执行需要的业务逻辑。

代码

AssemblyExecuteAdapterTransmitterEndpoint.cs

通过配置需要加载的dll 文件来执行dll 内部处理逻辑

代码语言:javascript
复制
private Stream SendAssemblyExecuteAdapterRequest(IBaseMessage msg, AssemblyExecuteAdapterTransmitProperties config) 
 { 
 VirtualStream responseStream = null; 
 string charset = string.Empty; 
 IBaseMessagePart bodyPart = msg.BodyPart; 
 Stream btsStream; 
 string messageid = msg.MessageID.ToString("D"); 
 if (null != bodyPart && (null != (btsStream = bodyPart.GetOriginalDataStream()))) 
            { 
 try 
 { 
 Type assemblyExecuteType = Type.GetType(config.AssemblyName); 
 IAssemblyExecute assemblyexecute = (IAssemblyExecute)Activator.CreateInstance(assemblyExecuteType); 
 object inputparameters = null; 
 if (!string.IsNullOrEmpty(config.InputParameterXml)) 
 { 
 XmlDocument inputXml = new XmlDocument(); 
 inputXml.LoadXml(config.InputParameterXml); 
 inputparameters = assemblyexecute.GetInputParameter(inputXml); 
 } 
 Stream stream = assemblyexecute.ExecuteResponse(btsStream, inputparameters); 
 #region saveresponsemessage 
 string responsefilename = string.Empty; 
 if (config.SaveResponseMessagePath != string.Empty && config.SaveResponseMessagePath != "N") 
 { 
 if (!Directory.Exists(config.SaveResponseMessagePath)) 
 Directory.CreateDirectory(config.SaveResponseMessagePath); 
 responsefilename = Path.Combine(config.SaveResponseMessagePath, "res_" + messageid + ".txt"); 
 SaveFile(responsefilename, stream); 
 stream.Seek(0, SeekOrigin.Begin); 
 } 
 #endregion 
 if (config.IsTwoWay) 
 { 
 responseStream = new VirtualStream(stream); 
 } 
 } 
 catch(Exception e) 
 { 
 #region saveerrormessage 
 string errorfilename = string.Empty; 
 if (config.SaveErrorMessagePath != string.Empty && config.SaveErrorMessagePath != "N") { 
 if (!Directory.Exists(config.SaveErrorMessagePath)) 
 Directory.CreateDirectory(config.SaveErrorMessagePath); 
 errorfilename = Path.Combine(config.SaveErrorMessagePath ,messageid + ".txt"); 
 SaveFile(errorfilename, btsStream); 
 } 
 #endregion 
 string Source = "AssemblyExecuteAdapter"; 
 string Log = "Application"; 
 string Event = e.Message + "\r\n request message saved :" + errorfilename; 
 if (!EventLog.SourceExists(Source)) 
 EventLog.CreateEventSource(Source, Log); 
 EventLog.WriteEntry(Source, Event, EventLogEntryType.Error); 
 throw; 
 } 
            } 
 return responseStream; 
 } 

配置

配置发送端口

配置参数

Assembly qualified name:实现了IAssemblyExecute接口的dll文件

Function Name: 这个adapter的功能名称,确保唯一

Input Parameter Xml: 执行ExecuteResponse需要的参数以XML的形式提供

Save Error Message Path:保存错误报文的路径

Save Response Message Path:保存执行ExecuteResponse方法返回的结果

选择实现了IAssemblyExecute 接口的dll文件

编辑输入参数

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-11-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • BizTalk custom adapter
    • 功能
      • 代码
        • 配置
          • 配置参数
          • 选择实现了IAssemblyExecute 接口的dll文件
          • 编辑输入参数
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档