使用 Activiti REST 部署动态创建的 BPMN 模型 API
Deploying dynamically created BPMN model using Activiti REST API
我是 Activiti 的新手。我正在开发一个项目,在该项目中我应该能够使用 spring mvc 动态创建流程。我遇到过 http://stacktrace.be/blog/2013/03/dynamic-process-creation-and-deployment-in-100-lines/
是否可以直接使用 REST API 部署动态创建的流程,或者我们应该创建 bpmn-20.xml 并部署它。也有创建复杂过程的例子,例如动态使用边界事件。
谢谢
可以通过这个端点/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")
以下是将 .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);
}
我是 Activiti 的新手。我正在开发一个项目,在该项目中我应该能够使用 spring mvc 动态创建流程。我遇到过 http://stacktrace.be/blog/2013/03/dynamic-process-creation-and-deployment-in-100-lines/
是否可以直接使用 REST API 部署动态创建的流程,或者我们应该创建 bpmn-20.xml 并部署它。也有创建复杂过程的例子,例如动态使用边界事件。
谢谢
可以通过这个端点/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")
以下是将 .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);
}