目录
- 1 加签功能
- 2转签功能
- 3 会签
- 3.1 什么是会签
- 3.2 会签实现流程
- 4 任务监听器
- 4.1 实现
- 5 Activiti添加和查询审批意见
1 加签功能
我们已经定义好一个bump,并且已经将这个流程保存到数据库中,比如申请请假,有个人申请了请假,经理已经审批完成,总经理改审批了,本来应该是总经理审批完成,这个流程就走完了,这个就是我们在bump里面定义好的,但是这个时候,总经理想让董事长知道这个,想看看董事长的看法,所以需要将这个请假申请加签到董事长,这个董事长审批是不在这个bump里面的,这个要知道;
那么,总经理是如何进行加签到董事长的;代码实现是
代码语言:javascript复制taskId参数是当前任务的id,第二个是给谁,加签到谁
根据taskService进行加签,delegateTask这个方法进行加签,不能
使用完成任务的那个方法了
public boolean delegateTask(String taskId, String loginName) {
taskService.delegateTask(taskId, loginName);
return true;
}
以上就实现了,将一个任务加签到另一个人(董事长); 董事长登录系统,就可以看到当前的任务,董事长就可以完成这个任务,代码是‘
代码语言:javascript复制 @Test
public void resolveTask() {
String taskId = "2511";
taskService.resolveTask(taskId);
}
以上代码就实现了完成当前任务,那么这个董事长将任务完成了,这个任务会到哪里?
会回到加签人那里,谁进行加签的,就会回到谁那里;
2转签功能
就是当前的bump里面最后只是总经理审批,但是在实际中,总经理想把这个申请给了董事长,并且董事长审批完成,不要回来了,直接让下一个人审批;所以就有了转签;转签与加签的区别就是,一个是转签人审批完成,是否会回来; 任务转办是把任务交给别人进行处理 转签的代码是:
代码语言:javascript复制第一个参数是当前任务id,第二个参数是转签到的人
@Override
public boolean trunTask(String taskId, String assignee) {
taskService.setAssignee(taskId, assignee);
return true;
}
3 会签
3.1 什么是会签
和并行网关一样,多个分支都完成,才能走下一步,这个会签是多个通过,会签通过
3.2 会签实现流程
我们画bump文件的时候,对于每一个任务,比如创建申请单,经理审批,总经理审批,每一个就是一个任务,每一个任务完成,自动走到下一个;
现在需求是就对于创建申请单,我们要使用会签,当多个人通过之后,流程才会走到经理审批,也就是对每一个任务节点,都可以使用会签功能;
使用方法是
以后创建流程的时候,就会在当前任务表里面,创建list.size个任务,只要符合条件,就走写一个任务
4 任务监听器
用户接到一个任务了,那么需要给他发一个邮件或者短信,就可以使用任务监听器;
4.1 实现
以上我们选择了以类的形式触发,在任务创建的时候触发;所以我们就需要自己写一个类,之后触发这个类,
定义任务监听类,且类必须实现 org.activiti.engine.delegate.TaskListener 接口
代码语言:javascript复制public class MyTaskListener implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
if(delegateTask.getName().equals("创建出差申请")&&
delegateTask.getEventName().equals("create")){
//这里指定任务负责人
delegateTask.setAssignee("张三");
}
}
}
使用监听器分配方式,按照监听事件去执行监听类的 notify 方法,方法如果不能正常执行也会影响 任务的执行。
就可以在这个notify方法里面写要触发的事情
写完监听器类之后,
这个里面写路径
5 Activiti添加和查询审批意见
添加审批意见
保存意见到
这个表里面;
查询审批意见