这段时间在作流程引擎activiti,遇到了一些问题,感受在不少帖子大可能是讲解演示api,可是有不少细节并无指出,我在本身学习的过程当中开始记录须要注意的地方;数据库
网上比较多的我就不讲了,讲讲我遇到的以为有问题的地方吧;api
首先是部署流程的时候,网上的样例基本上是这样写的,有三种,我使用的是BpmnModel形式:服务器
Model modelData = repositoryService.getModel(moduleId); ObjectNode modelNode = (ObjectNode) new ObjectMapper().readTree(repositoryService.getModelEditorSource(modelData.getId())); byte[] bpmnBytes = null; BpmnModel model = new BpmnJsonConverter().convertToBpmnModel(modelNode); bpmnBytes = new BpmnXMLConverter().convertToXML(model); String processName = modelData.getName() + ".bpmn20.xml"; Deployment deployment = repositoryService.createDeployment() .name(modelData.getName()).addString(processName, new String(bpmnBytes, "utf-8")) .deploy(); |
可是这样部署以后,存在一个问题,在ACT_RE_MODEL表中DEPLOYMENT_ID_字段没有更新,也就是该条记录的关联关系没有体现出来,因此我在以后添加了DEPLOYMENT_ID_字段的更新;app
@RequestMapping(value = "/{id}/deploy.do") @ResponseBody public InvokeResult deploy(@PathVariable("id") String moduleId) { try { Model modelData = repositoryService.getModel(moduleId); ObjectNode modelNode = (ObjectNode) new ObjectMapper().readTree(repositoryService.getModelEditorSource(modelData.getId())); byte[] bpmnBytes = null; BpmnModel model = new BpmnJsonConverter().convertToBpmnModel(modelNode); bpmnBytes = new BpmnXMLConverter().convertToXML(model); String processName = modelData.getName() + ".bpmn20.xml"; Deployment deployment = repositoryService.createDeployment() .name(modelData.getName()).addString(processName, new String(bpmnBytes, "utf-8")) .deploy(); modelData.setDeploymentId(deployment.getId()); repositoryService.saveModel(modelData); return InvokeResult.success(modelData); } catch (Exception e) { e.printStackTrace(); return InvokeResult.failure(e.getMessage()); } } |
还有一个问题,因为我每次测试都会把数据库表删干净,从新建立,这种状况就要从新建立流程图,本地数据库测试转到测试服务器还要画一遍,这无形中浪费了不少时间,因此我下了一个上传bpmn文件的部署方法,可是这种部署方法中也出现了一个问题,ACT_RE_MODEL表中没有插入记录,因此执行该逻辑的时候是否也要考虑到在ACT_RE_MODEL表中同步生成数据呢,我还在找API,先记录问题,以后更新帖子会附上代码;学习
以上总结,欢迎各位看客批评指正,不胜感激!!!测试