如何升级业务流程
当业务流程处理长时间运行的事务或正在等待请求响应端口的响应时,如何更新在生产环境中运行的业务流程。
概述
当业务流程不处理长时间运行的事务时,可以更新它,如 清单:更新 BizTalk 应用程序中的项目中所述。 但是当某业务流程处理长期事务时,您不能立即转换到该业务流程的已更新版本。 必须允许原始版本完成其消息的处理,这样才不会丢失消息。 为此,请将已更新的业务流程与原始版本部署到同一应用程序。 然后,停止原始版本并启动已更新的版本,以便在先前版本继续处理任何正在处理的消息时可以接收所有新消息。 在原始业务流程完成其所有消息的处理后,从其部署的 BizTalk 应用程序中取消对它的部署。
有关此方案的详细信息,请参阅 方案:更新应用程序项目。
重要
如果多个业务流程绑定到同一接收端口,并且每个业务流程都已启动或登记,则会向系统引入重复的消息。
注意
在升级到新的业务流程时,由于升级期间旧业务流程和新业务流程之间的争用情况,在任务繁忙时某些业务流程实例可能会成为“已挂起(可恢复)”。 若要手动恢复这些业务流程实例,请参阅 如何恢复挂起的业务流程实例。
必备条件
使用属于 BizTalk Server 管理员组成员的帐户登录。 你的帐户还必须对本地文件系统和全局程序集缓存具有读/写权限。 本地计算机的管理员帐户拥有此权限。
有关权限的更多详细信息,请参阅 部署和管理 BizTalk 应用程序所需的权限和 最低安全权限。
更新业务流程
对业务流程进行必要的更改。
递增程序集的版本号,如下所示:
在“解决方案资源管理器”中,右键单击 BizTalk 项目,然后单击“属性”以启动该项目的项目Designer。
单击“ 应用程序 ”选项卡(如果尚未处于活动状态),然后单击“ 程序集信息”。
在右窗格中,递增程序集的版本号。 应该只递增主版本号或次版本号。 主版本号是 (0.0.0.0) 序列中的第一个数字;次要版本号是序列中的第二位数字, (0。0.0.0) 。 BizTalk Server无法识别序列中较晚的版本号更改,例如 0.0。0.0 或 0.0.0。0.
单击“ 确定 ”关闭 “程序集信息 ”对话框。
保存项目。
将程序集从 Visual Studio 部署到 BizTalk 应用程序。 有关说明,请参阅 将 BizTalk 程序集从 Visual Studio 部署到 BizTalk 应用程序。 确保选择部署选项以在 GAC 中安装程序集。
测试包含业务流程的程序集。
如 如何导出 BizTalk 应用程序中所述,将程序集从测试环境中的应用程序导出到 .msi 文件中。
注意
您可以使用以下步骤测试程序集并将程序集部署到您的生产环境中。 有关开发、测试、过渡和生产中的应用程序部署任务的详细信息,请参阅 应用程序部署任务。
将 .msi 文件导入生产环境中的 BizTalk 应用程序,其中包含要更新的业务流程,如 如何导入 BizTalk 应用程序中所述。
使用与原始业务流程相同的绑定来绑定更新的业务流程,如 如何为业务流程配置绑定中所述。
取消登记原始业务流程,然后启动已更新的业务流程。 若要避免任何丢弃的消息,应以编程方式执行此操作,如以 编程方式部署和启动业务流程的新版本中所述。 或者,可以手动执行这些步骤,如 如何取消登记业务流程、 如何登记业务流程和 如何启动业务流程中所述。
使用组中心页面查询视图监视系统的原始业务流程版本的实例,如 如何查看业务流程的实例信息中所述。
当其所有活动、冻结和挂起的实例完成时,从应用程序取消部署原始业务流程,如 如何从应用程序中删除业务流程中所述。
(可选)从运行应用程序的每台计算机上的 GAC 中卸载原始程序集版本,如 如何从 GAC 卸载程序集中所述。