欢迎进入Wiki » FAQ » 如何修改老版本的流程定义?

如何修改老版本的流程定义?

在2015-05-27 08:42上被李小翔修改
评论 (0) · 附件 (0) · 记录 · 信息

供稿人:刁隆

流程版本升级后,由于一些特殊原因,可能需要修改老版本的流程定义,以避免老版流程执行异常,如修改了环节名称、而代码中硬编码了新版本的环节名等。目前来说,有两种解决方案。

方案1:

  1. 从版本库(如 SVN、本地历史记录)中找出老版的流程定义,并进行修改
  2. 部署(替换)服务器上的新版流程定义文件
  3. 管理员通过流程定义的重新加载功能,重载老版流程定义
  4. 恢复新版流程定义文件,并重新加载新版流程定义
  5. 重启应用(建议)

方案2:

直接修改数据库中的老版流程定义,如下例所示,在 console 中修改环节名称:

import bropen.bpm.definition.*
def pd = ProcessDefinition.executeQuery("from bropen.bpm.definition.ProcessDefinition where revision=? and dataController=?",
   [ProcessDefinition.formatRevision("2.0.0"),"cmfpFinancePlanWorkflow"])[0]
pd.xml = pd.xml.replaceAll("计划合同", "计划经营")
pd.signavioXml = pd.signavioXml.replaceAll("计划合同", "计划经营")
pd.save(flush:true)

注意:
1、hql 的参数 ProcessDefinition.formatRevision("2.0.0") 其中2.0.0为老流程版本号(即异常的流程实例 ProcessInstance 对象的 revision 属性),参数"cmfpFinancePlanWorkflow"为控制器名称(同流程实例对象的 dataController 属性)。
2、执行后需重启项目;如果是开发环节,需要在重启前删除 /tmp 文件夹下所有以工程名前缀开头的文件,如 /tmp/Foobar*

标签: BroBPM
在2015-05-27 08:42上被李小翔创建

Copyright © 2013 北京博瑞开源软件有限公司
京ICP备12048974号