FormService | Activiti表单引擎产生的用户任务表单服务 |
HistoryService | 得到已完成的工作流实例信息 |
IdentityService | 认证服务,在工作流执行过程中进行用户查询、认证等操作 |
TaskService | 任务服务,可以根据用户创建与查询所分配的任务等等 |
RepositoryService | 用于发布,查询,删除,获取工作流定义 |
RuntimeService | 开始和查询工作流实例,流程变量可以获取和设置 |
典型API详解:
1 RuntimService
1)startProcessInstanceByKey 开始一个新的以工作流实例,注意bykey实际上指的是定义的工作流Id,附加了一个map信息
Map variableMap = new HashMap(); variableMap.put("isbn";, "123456";); ProcessInstance processInstance =runtimeService.startProcessInstanceByKey( "bookorder";, variableMap);
2 )createProcessInstanceQuery() 查询工作量实例
List instanceList = runtimeService .createProcessInstanceQuery() .processDefinitionKey("bookorder").list(); //返回所有以bookorder为id的实例,若是processDefinitionId则只返回在运行的实例
2 TaskServie
TaskServie最重要的是claim与complete两个方法
1) claim调用claim的用户将变成该任务的所有人,其它用户将不能claim与complete该任务
2) complete将会使完成任务,使流程向下进行
上代码:
Task task = taskService.newTask(); task.setName("Test task"); task.setPriority(100); taskService.saveTask(task); assertNull(task.getAssignee()); //创建Task IdentityService identityService = activitiRule.getIdentityService(); User user = identityService.newUser("JohnDoe"); identityService.saveUser(user);//创建用户 taskService.addCandidateUser(task.getId(), "JohnDoe"); task = taskService.createTaskQuery() .taskCandidateUser("JohnDoe") .singleResult(); assertNotNull(task); // 将用户与任务关联 assertEquals("Test task", task.getName()); assertNull(task.getAssignee()); taskService.claim(task.getId(), "JohnDoe");//分配任务 task = taskService.createTaskQuery() .taskAssignee("JohnDoe") .singleResult(); assertEquals("JohnDoe", task.getAssignee()); taskService.complete(task.getId());//完成任务 task = taskService.createTaskQuery() .taskAssignee("JohnDoe") .singleResult(); assertNull(task);
3) 查询,如下:
Task task = taskService.createTaskQuery() .taskCandidateGroup("sales") .singleResult(); singleResult() //查询sales组下所分配的任务,因为在该任务中唯一,因此可用返回唯一任务
权限需要在工作流中定义
<userTask id="usertask1"
name="Complete order"
activiti:candidateGroups="sales"> //定义了sales组
<documentation>book order user task</documentation>
</userTask>