【问题标题】:Deploying dynamically created BPMN model using Activiti REST API使用 Activiti REST API 部署动态创建的 BPMN 模型
【发布时间】:2019-05-19 01:44:20
【问题描述】:

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

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

谢谢

【问题讨论】:

    标签: spring activiti


    【解决方案1】:

    可以通过这个端点/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")
    

    【讨论】:

      【解决方案2】:

      这里是上传.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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-07
        相关资源
        最近更新 更多