使用Activiti REST API部署动态创建的BPMN模型

时间:2016-01-27 11:27:36

标签: spring activiti

我是Activiti的新手。我正在开发一个项目,我应该能够使用spring mvc动态创建进程。我已经到了http://stacktrace.be/blog/2013/03/dynamic-process-creation-and-deployment-in-100-lines/

是否可以直接使用REST API部署动态创建的流程,或者我们应该创建bpmn-20.xml并进行部署。还有任何创建复杂过程的示例,例如动态使用边界事件。

由于

2 个答案:

答案 0 :(得分:0)

可以通过此端点/activiti-rest/service/deployment! 请查看this forum thread以获取更多信息+示例代码。

您不必在磁盘上真正创建文件,只需使用某种类型的InputStream进行模拟:

MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addBinaryBody("deployment", new ByteArrayInputStream((<put-something-here>).toByteArray()), ContentType.DEFAULT_BINARY,"test.bpmn20.xml")

答案 1 :(得分:0)

以下是将.bpmn文件内容作为字符串上传并同时启动该过程的代码:

@Autowired
private RuntimeService runtimeService;

@PostMapping("/deployAndStartProcess")
public void deployAndStartProcess(@RequestBody DeployWorkflow dw, @RequestParam(required = false) HashMap<String, Object> variables) {
  String processXml = dw.getBpmnFile();
  String processId = dw.getProcessKey();
  ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
  DeploymentBuilder deploymentBuilder = processEngine.getRepositoryService().createDeployment().name(processId);
  deploymentBuilder.addString(processId + ".bpmn", processXml);
  deploymentBuilder.deploy();
  runtimeService.startProcessInstanceByKey(processId, variables);
}

参考:Look at heymjo's answer in the last