zoukankan      html  css  js  c++  java
  • Activiti学习笔记(六)Activiti的流程引擎API和服务

    引擎API是与Activiti交互的最常见方式。中心起点是ProcessEngine,可以通过多种方式创建,如《Activiti学习笔记(三)获取ProcessEngine对象的多种方式》

    从ProcessEngine中,可以获得包含工作流BPM方法的各种服务。一下是Activiti的模型图

    一共有7个服务分别执行了Activiti的部署、创建、启动、执行.....等

    首先通过RepositoryService部署服务,代码如下:

    Deployment deployment = processEngine.getRepositoryService().createDeployment().addClasspathResource("diagrams/HelloWord.bpmn").deploy();
    

    RuntimeService启动服务,代码如下:

    ProcessInstance pi = processEngine.getRuntimeService().startProcessInstanceByKey("HelloWord");
    

    TaskService执行服务,代码如下

    processEngine.getTaskService().complete(taskId)
    

    HistoryService历史任务管理服务,代码如下:

    HistoryService historyService = processEngine.getHistoryService();
    HistoricProcessInstance historicProcessInstance =
    historyService.createHistoricProcessInstanceQuery().processInstanceId(procId).singleResult();

    IdentityService组织机构管理服务,代码如下:

    List<User> authorizedUsers =  identityService().createUserQuery().potentialStarter("processDefinitionId").list();

    FormService任务表单管理服务,代码如下:

    TaskFormdata FormService.getTaskFormData(String taskId)

    ManagementService 服务管理,代码如下:

    List<Task> tasks = taskService.createNativeTaskQuery()
      .sql("SELECT count(*) FROM " + managementService.getTableName(Task.class) + " T WHERE T.NAME_ = #{taskName}")
      .parameter("taskName", "gonzoTask")
      .list();