activiti7---自动任务的创建与执行

1.自动任务的创建

可以通过设置自动执行工作流

2.流程定义的部署

 /**
     * 流程定义的部署
     */
    @Test
    public void activitiDeployment() {
      //创建ProcessEngine对象
      ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
      //得到RepositoryService,用于加载流程图,部署流程图
      RepositoryService repositoryService = processEngine.getRepositoryService();
      //部署
      Deployment deployment = repositoryService.createDeployment().addClasspathResource("auto.bpmn").name("auto").deploy();
     //输出部署信息
     System.out.println(deployment.getName());
      System.out.println(deployment.getId());

    }

3.执行流程实例

 /**
     * 执行流程实例
     */
    @Test
    public void startProcessInstance() {
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        //传入值对应bpmn中的id
        ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceByKey("auto",);
        automaticExecution(processEngine,processInstance.getId());

    }
   /**
     * 自动执行,这个方法适用于只有ReceiveTask的工作流
     */
    public void automaticExecution(ProcessEngine processEngine, String processInstanceId) {
        ProcessInstance result = processEngine.getRuntimeService().createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
        //判断流程是否结束
        if (result == null) {
            System.out.println("执行完毕");
            return;
        }
  
       List<String> activityIds = processEngine.getRuntimeService().getActiveActivityIds(processInstanceId);
       System.out.println(activityIds);
       activityIds.forEach(activityId -> {
            Execution e = processEngine.getRuntimeService().createExecutionQuery().processInstanceId(processInstanceId).activityId(activityId).singleResult();
            //重点在trigger方法,往下执行
            processEngine.getRuntimeService().trigger(e.getId());
        });
        automaticExecution(processEngine, processInstanceId);
    }


版权声明:本文为qq_40823910原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。