Biztalk 在不重新部署业务流程的情况下更改FunctionID值?

Biztalk 在不重新部署业务流程的情况下更改FunctionID值?,biztalk,biztalk-2013,Biztalk,Biztalk 2013,我有一个简单的值映射functoid,在Biztalk转换中有一个硬编码的字符串值,我需要更改它。我不希望仅仅为了这一个值而重新部署和回归测试整个业务流程。是否有任何方法可以在不重新部署业务流程的情况下在生产环境中更改此设置?您应该将地图放在单独的程序集中,并且在安装时只需要GAC地图程序集。根据您使用的部署模型,它可以改变GAC BizTalk程序集的使用方式。但是,如果您只是以这种方式分离程序集,则可以隔离更改。您应该将地图放在单独的程序集中,并且在安装时只需要GAC地图程序集。根据您使用的

我有一个简单的值映射functoid,在Biztalk转换中有一个硬编码的字符串值,我需要更改它。我不希望仅仅为了这一个值而重新部署和回归测试整个业务流程。是否有任何方法可以在不重新部署业务流程的情况下在生产环境中更改此设置?

您应该将地图放在单独的程序集中,并且在安装时只需要GAC地图程序集。根据您使用的部署模型,它可以改变GAC BizTalk程序集的使用方式。但是,如果您只是以这种方式分离程序集,则可以隔离更改。

您应该将地图放在单独的程序集中,并且在安装时只需要GAC地图程序集。根据您使用的部署模型,它可以改变GAC BizTalk程序集的使用方式。但是,如果您只是以这种方式分离程序集,则可以隔离更改。

您有两种解决方案:
1-就像@Vikas之前所说的那样,隔离地图并部署这个人工制品

2-您可以而且应该将您的值设置为SSO存储,并在运行时在编排中检索它,因此根本不需要重新部署您有两种解决方案:
1-就像@Vikas之前所说的那样,隔离地图并部署这个人工制品
2-您可以而且应该将您的值设置为SSO存储,并在运行时在您的业务流程中检索它,因此根本不需要重新部署

  • 这里的BizTalk最佳实践规定,不同的项目中应该有不同的工件类型。这允许您仅部署映射程序集,如下所示(在取消列出任何直接使用映射的业务流程之后):

    btstask AddResource/A:/T:System.BizTalk:biztalksassembly/Ov/So:Maps.dll/Op:GacOnAdd、GacOnImport、GacOnInstall
    
  • 如果可能,将转换放在端口上,而不是放在业务流程中。这有助于缓解必须取消编排的问题,并且应该执行得更好,但并不总是实用的(有时编排需要决定哪个映射,或者使用多个映射,或者…)。在这种情况下,您可以重新部署映射程序集并重新启动主机实例,而无需重新部署业务流程

  • 避免地图和业务流程中的硬编码值。将它们指向静态C#实用程序类中的静态变量。无需重新部署映射或编排即可重新部署C#程序集(只需打开C#程序集并重新启动主机实例)。C#程序集还可以指向其他一些存储,如SSO、数据库、WCF/Web服务等

  • 这里的BizTalk最佳实践规定,不同的项目中应该有不同的工件类型。这允许您仅部署映射程序集,如下所示(在取消列出任何直接使用映射的业务流程之后):

    btstask AddResource/A:/T:System.BizTalk:biztalksassembly/Ov/So:Maps.dll/Op:GacOnAdd、GacOnImport、GacOnInstall
    
  • 如果可能,将转换放在端口上,而不是放在业务流程中。这有助于缓解必须取消编排的问题,并且应该执行得更好,但并不总是实用的(有时编排需要决定哪个映射,或者使用多个映射,或者…)。在这种情况下,您可以重新部署映射程序集并重新启动主机实例,而无需重新部署业务流程

  • 避免地图和业务流程中的硬编码值。将它们指向静态C#实用程序类中的静态变量。无需重新部署映射或编排即可重新部署C#程序集(只需打开C#程序集并重新启动主机实例)。C#程序集还可以指向其他一些存储,如SSO、数据库、WCF/Web服务等


  • 总之,不是。但是,有多种方法可以使其可配置,这样以后就不会再出现此问题。我对biztalk有点陌生。恐怕这就是答案。那么假设这些东西是用程序集编译的?我希望它可能存储在一个biztalk数据库中,并且一直在寻找它。是的,作为一种预防措施,应该将其更改为从某种配置中提取,我对一些方法比较熟悉。是的,通过映射,它创建了一个XSLT文件,包括硬编码的值,XSLT文件作为字符串嵌入到程序集中,XSLT字符串在转换过程中执行。因此,不,您不能只是在BizTalk DB中进行更新。您应该将其转换为实际答案,我将其标记为答案。:)如果我有时间,我会在稍后写一个更完整的答案,给出不同的可配置选项,因为在我看来,“不,你做不到”不是一个正确的答案:-)因此我在评论中这样做了。这里有一个答案,给出了一些选项,但没有详细说明。一句话,没有。但是,有多种方法可以使其可配置,以便将来不再出现此问题。我对biztalk有点陌生。恐怕这就是答案。那么假设这些东西是用程序集编译的?我希望它可能存储在一个biztalk数据库中,并且一直在寻找它。是的,作为一种预防措施,应该将其更改为从某种配置中提取,我对一些方法比较熟悉。是的,通过映射,它创建了一个XSLT文件,包括硬编码的值,XSLT文件作为字符串嵌入到程序集中,XSLT字符串在转换过程中执行。因此,不,您不能只是在BizTalk DB中进行更新。您应该将其转换为实际答案,我将其标记为答案。:)如果我有时间,我会在稍后写一个更完整的答案,给出不同的可配置选项,因为在我看来,“不,你做不到”不是一个正确的答案:-)因此我在评论中这样做了。这里有一个答案,它给出了一些选项,但没有变为int
    btstask AddResource /A:<ApplicationName> /T:System.BizTalk:BizTalkAssembly /Ov /So:Maps.dll /Op:GacOnAdd,GacOnImport,GacOnInstall