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>