我在Biztalk Transform中有一个简单的值映射functoid和一个硬编码的字符串值,我需要更改它。我宁愿不为这一个值重新部署和回归测试整个业务流程。有没有办法在不重新部署业务流程的情况下改变生产?
答案 0 :(得分:2)
这里的BizTalk最佳实践规定不同的工件类型应该在不同的项目中。这允许您只部署地图程序集,如下所示(在取消列出任何直接使用地图的业务流程之后):
btstask AddResource /A:<ApplicationName> /T:System.BizTalk:BizTalkAssembly /Ov /So:Maps.dll /Op:GacOnAdd,GacOnImport,GacOnInstall
如果可能,请将转换放在端口上,而不是在业务流程中。这有助于缓解必须取消列出编排的问题,并且应该更好地执行,但并不总是实用的(有时编排需要决定哪个地图,或使用多个地图,或......)。在这种情况下,您可以重新部署映射程序集并重新启动主机实例,而无需重新部署编排。
避免在地图和编排中使用硬编码值。将它们指向静态C#实用程序类中的静态变量。可以重新部署C#程序集而无需重新部署映射或编排(只需GAC C#程序集并重新启动主机实例)。 C#程序集也可以指向其他存储,例如SSO,数据库,WCF / Web服务等。
答案 1 :(得分:1)
您应该将地图放在单独的程序集中,在安装时只需要GAC地图程序集。根据您使用的部署模型,它可能会因您的GAC BizTalk程序集而异。但是,如果您只是以这种方式分离程序集,则可以隔离更改。
答案 2 :(得分:1)
您有两种解决方案:
1 - 像之前所说的@Vikas隔离地图并部署这个人工制品
2 - 您可以而且应该将您的值设置为SSO存储并在运行时在您的业务流程https://seroter.wordpress.com/2007/09/21/biztalk-sso-configuration-data-storage-tool/中检索它,因此无需重新部署