如何修改老版本的流程定义?
李小翔
2015-05-27 08:42

内容列表

供稿人：刁隆
流程版本升级后，由于一些特殊原因，可能需要修改老版本的流程定义，以避免老版流程执行异常，如修改了环节名称、而代码中硬编码了新版本的环节名等。目前来说，有两种解决方案。
方案1：
· 	从版本库（如 SVN、本地历史记录）中找出老版的流程定义，并进行修改
· 	部署（替换）服务器上的新版流程定义文件
· 	管理员通过流程定义的重新加载功能，重载老版流程定义
· 	恢复新版流程定义文件，并重新加载新版流程定义
· 	重启应用（建议）
· 	方案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*