固定分配(assignee) 缺点:账户变更。,过程麻烦.不灵活.
任务分配的三种方式:
表达式(uel:统一表达式语言):javaee6规范的一部分、activiti支持2个url表达式(uel-value 、uel-method)
${assignee} assignee 是一个流程变量.获取流程变量的值,作为任务的办理人。 注意:如果assignee 流程变量不存在 activiti 就会抛出异常。
user.assignee 通过调用user的getassignee方法。
${userBean.getUserId();}调用userBean的getUserId方法 获取一个值 将这个值 作为任务办理人。
使用监听器方法:自定义一个任务监听器,实现taskListenner接口。
通过实现TaskLintenner 接口 监听器是在流程定义启动的时候执行的。
创建好监听器之后需要在流程定义文件 里面 设置监听器
设置完之后 需要重新部署流程定义。
待办任务的查询:
定义完之后 可以通过taskService 的createTaskQuery()方法创建TaskQuery query =taskService。createTaskQuery 对象
//设置查询条件 如果不指定taskAssignee 任何人都可完成任务
query.taskAssignee("liwei");
//指定流程定义key,只查询某个流程定义的key
query.processDefinitionKey("Leave");
打印输出
for(Task task:query.list()){
System.out.println("任务负责人"+task.getAssignee());
System.out.println("任务id:"+task.getId());
System.out.println("任务id:"+task.getName());
System.out.println("流程定义id"+task.getProcessDefinitionId());
System.out.println("流程实例id"+task.getProcessInstanceId());
}
任务办理:
1.1 执行任务操作数据表
任务创建后会向当前任务表插入一条记录:
SELECT * FROM act_ru_task #当前运行任务表
记录当前任务信息,如果任务完成了,从此表删除任务记录。
Id_:任务id(主键) (重点)
对任务的操作根据此id执行
Execution_id_:对应流程实例的执行id
proc_inst_id_:对应流程实例的id(重点)
proc_def_id_:对应流程定义的id
name_:任务名称(重点)
task_def_key_:任务标识(重点)
assignee_:任务办理人(重点)
SELECT * FROM act_ru_identitylink #流程当前参与者(人、组)信息
记录流程当前参与者信息,记录了流程执行过程中所有参与者
SELECT * FROM act_hi_taskinst #历史任务表(用于查询历史信息)(重点)
记录任务的历史信息,在任务创建时向历史任务表插入一条记录
SELECT * FROM act_hi_actinst #历史活动表(用于查询历史信息)
记录流程执行过程中所有结点
- 任务办理实例 运行表:act_ru_task
- 任务执行历史表:act_hi_taskinst
- 任务流程历史跟踪:act_hi_actinst
- 流程当前参与者信息表:act_ru_identitylink
用法:taskService.complete(taskId);//taskId任务id
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于