Activiti提供的流程定义是基于XML的,一旦发布完成后,若想对流程定义实现更改,只有一种办法,就是重新发布新的版本,但有时,我们需要的是不让他发行新版本,只是希望修改其原来的Xml,如我们对分支节点进行条件设置。
此文章借鉴了http://redxun.iteye.com/blog/2253074这篇博主的文章,但是他的方法并不能完全实现对流程的修改。在此,我经过改造现将实现过程写下:
直接实现实现对流程定义的XML实现读写。只需要拿到流程定义的deployId或definitionId,通过对其act_ge_bytearray表实现更改,其定义内容存放于bytes_字段中。
我们提供了对定义Xml文件的更改方法:
private String modifyDeployId(Document doc) {
// TODO 手动修改流程定义
String deploymentId=Xml2Bean.selectElementText(doc, "//ContractRoot/SvcCont/ReqInfo/deploymentId");
String actDefId = Xml2Bean.selectElementText(doc, "//ContractRoot/SvcCont/ReqInfo/actDefId");