【问题标题】:BRE Policy - Where to Store Connection Strings for Db FactsBRE 策略 - 在哪里存储 Db Facts 的连接字符串
【发布时间】:2018-11-07 18:16:01
【问题描述】:

使用 BizTalk 2016 FP3 CU5。

我有一个 BRE 规则,它接受 4 个类型化的 xml 文档和一个数据连接。 我已经设置了一个编排来使用调用规则形状来执行它。

我正在使用 BizTalk 部署框架 (BTDF) 进行部署,这可以很好地部署 BRE 策略。我的问题是,在策略的导出 xml(名为 NotificationService.xml)中有一个对规则中使用的数据库的硬编码引用 - 如下:

 <datarow ref="db_32" server="SDEIDBTI04\CrossRef" dataset="CrossRef" table="Lookups"

这引用了我的开发虚拟机,但随着解决方案通过测试推广并投入生产,服务器名称需要相应更改。

我目前对这个问题的解决方案是使用 BTDF 预处理 xml 文件的能力,并用取自 SSO 的 EnvironmentSettings excel 文件中的值替换。因此,我创建了一个“NotificationService.Dynamic.xml”,其中我将上一行更改为:

<!-- ifdef ${_xml_preprocess} -->
  <datarow ref="db_32" server="${Common.Components.CrossRefDbServer}\CrossRef" dataset="CrossRef" table="Lookups" instances="16" selectivity="1" isdataconnection="true" instance="0" />
  <!-- endif -->

(*我必须保留 ifdef 是有充分理由的!)

在我的 deployment.btdfproj 文件中,我添加了以下内容以确保已部署的预处理策略是:

<FilesToXmlPreprocess Include="NotificationService.Dynamic.xml" 
Condition="'$(Configuration)' == 'Server'">
  <LocationPath>..\</LocationPath>
  <OutputFilename>NotificationService.Dynamic_Processed.xml</OutputFilename>
</FilesToXmlPreprocess>

<FilesToXmlPreprocess Include="NotificationService.Dynamic.xml" Condition="'$(Configuration)' != 'Server'">
  <LocationPath>..\NotificationService\NotificationService.BRE</LocationPath>
  <OutputFilename>NotificationService.Dynamic_Processed.xml</OutputFilename>
</FilesToXmlPreprocess>

<RulePolicies Include="NotificationService.Dynamic_Processed.xml">
  <LocationPath>..\NotificationService\NotificationService.BRE</LocationPath>
</RulePolicies>

这是可行的,但我不禁认为我的解决方案过于复杂。每次我导出新版本的策略时,我现在都必须经历从导出的 NotificationService.xml 文件创建 NotificationService.Dynamic.xml 文件的麻烦。在不使用 BTDF 的情况下,人们如何解决同样的问题?

如果事实证明我走的是最好的道路,那么希望这个问题将来对其他人有所帮助 - 我无法从谷歌那里找到答案!

【问题讨论】:

  • 您使用数据库连接到底是为了什么?在极少数情况下,我的数据库连接不是通过发送端口或接收位置配置的。从外观上看,您正在使用它来查找某些交叉引用数据的 functoid?您是否知道使用 BizTalk 数据库表的开箱即用的外部参照 functoid? cdijkgraaf.wordpress.com/2014/03/26/… 对于这样的环境设置,SSO 配置总是一个不错的选择
  • 感谢您的回复@Dijkgraaf。我以前使用过“标准”BizTalk Cross Ref 数据库,但在这种情况下它们过于矫枉过正。 BRE 策略需要 db 连接字符串,因为它从 xml 文档中获取源值的交叉引用值,我从编排调用规则形状将其声明到策略中。我目前将连接字符串存储在 SSO 中,BTDF 在创建部署时从它们那里获取它。也许这里没有改进的余地,但我认为 Johann 的做法不同,我希望有更标准的 BRE 方式!

标签: biztalk business-rules biztalk-2016 btdf


【解决方案1】:

我会创建一个静态方法,您可以在其中创建所有逻辑来获取查找值。

因此,在此方法中,您将使用 SSOSettingsFileReader.dll 获取 SSO CrossRefDbServer 设置,然后执行一些 c# 代码来调用您的查找表并返回值。

如果您将注册表设置 StaticSupport 设置为 1,则可以在 BRE 中调用此方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 2014-05-22
    • 2022-11-06
    • 2011-08-13
    • 1970-01-01
    相关资源
    最近更新 更多