activiti api小结
?
FormServiceActiviti表单引擎产生的用户任务表单服务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()); //创建TaskIdentityService 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>
?
?