动态调用 Restful 服务

Calling Restful Services Dynamically

我有一个现有的编排调用具有以下配置的服务。

System.Diagnostics.EventLog.WriteEntry("ABC", Message_Datasheets(FILE.ReceivedFileName));
varNewSearchDataLoadURL = System.Configuration.ConfigurationManager.AppSettings["NewSearchDataLoadURL"];
varNewXmlMsg = new System.Xml.XmlDocument(); 
varNewXmlMsg.LoadXml(@"<path>" + Message_Datasheets(FILE.ReceivedFileName) + @"</path>");
Message_NewUnZip = varNewXmlMsg;
Message_NewUnZip(HTTP.RequestTimeout) = 3600;
Port_NewJaxMiceSearch_API(Microsoft.XLANGs.BaseTypes.Address) = varNewSearchDataLoadURL + "?path=" + Message_Datasheets(FILE.ReceivedFileName);
Port_NewJaxMiceSearch_API(Microsoft.XLANGs.BaseTypes.TransportType) = "HTTP"

这里NewSearchDataLoadURL保存的是配置中需要调用的webservice的地址file.And路径保存的是接收到的文件name.So调用的URI会是“http://new.abc.org/AbcSearchWebApi/api/search/loaddatafeed?path=\share01\BizTalk\data\out150723"

现在我必须将其更改为使用 WebHttp 适配器的 Restful 服务。我正在尝试按照此处

但我不了解 BtsVariablePropertyMapping,因为我没有具有提升价值的架构。我该如何解决这个问题。 任何帮助将不胜感激。

因此您的目标是使用动态端口调用 Rest WebService,为此您需要
1 - 指定您的操作类型

 <BtsHttpUrlMapping>
  <Operation Name=’MyRestGET’ Method=’GET’ Url=’/XXXX/{EmpId}’ />
</BtsHttpUrlMapping>

2 - 创建并映射您的变量:
"BtsVariablePropertyMapping" 是一种强大的 BizTalk 技术,使您能够在 url 中定义 自定义变量并将其映射到任何 上下文 属性 使用其名称和命名空间 因此,除非它是 BizTalk 上下文 属性,否则您绝对必须拥有 属性 架构,因此其架构已存在于 BizTalk

3 - 使用网络服务初始化您的动态端口 url
在此步骤中,您将在动态请求响应端口

中分配网络服务 url 和传输类型
Microsoft.XLangs.BaseTypes.Adress = /XXXX/{EmpId}
Microsoft.XLangs.Basetypes.TransportType = "WCF-WebHTTP"

你可以接受这个

下面的代码可以工作,无需使用 BtsVariablePropertyMapping

System.Diagnostics.EventLog.WriteEntry("ABC",   Message_Datasheets(FILE.ReceivedFileName));
varNewSearchDataLoadURL = System.Configuration.ConfigurationManager.AppSettings["NewSearchDataLoadURL"];
varNewXmlMsg = new System.Xml.XmlDocument(); 
varNewXmlMsg.LoadXml(@"<path>" +     Message_Datasheets(FILE.ReceivedFileName) + @"</path>");
Message_NewUnZip = varNewXmlMsg;
Message_NewUnZip(WCF.HttpMethodAndUrl) = @"<BtsHttpUrlMapping><Operation Name = 'RESTGet' Method ='GET'/></BtsHttpUrlMapping>";
Port_NewSearch_API(Microsoft.XLANGs.BaseTypes.Address) = varNewSearchDataLoadURL + "?path=" +      Message_Datasheets(FILE.ReceivedFileName);
Port_NewSearch_API(Microsoft.XLANGs.BaseTypes.TransportType) = "WCF-WebHttp";
Message_NewUnZip(WCF.SuppressMessageBodyForHttpVerbs) = "GET";