activiti⼯作流会签多⼈审批时若⼀⼈通过即可
最近在⼯作中使⽤到了activiti ⼯作流引擎,跟⼤家遇到过的情况类似,在“中国式”的⼯作流中,常有⼀些需求是⼯作流引擎基本使⽤中⽆法实现的。在这过程中,我和我的⼩伙伴们也和⼤家⼀样遇到很多困难,⼤海捞针似的在⽹上寻着答案。特此,在这⾥把我们遇到的需求和解决⽅案分享给⼤家,希望能帮助到你们!
以下是我们在项⽬中遇到的各(奇)种(葩)需求,如果您也遇到了相同的可以借鉴:
createprocessa
1、⼯作流会签;
2、多⼈审批时⼀⼈通过即可;
3、在当前节点获取下⼀节点的信息;
4、流程部署后未发布之前获取所有节点的信息;
5、流程启动前传⼊后续节点办理⼈;
6、节点设置多个监听。
1、 activiti ⼯作流会签时,所有的都审批通过才可进⼊下⼀环节:
1.1 编写监听类
public class MyTaksListener implements TaskListener {
public void notify(DelegateTask delegateTask) {
System.out.println("EventName() = " + EventName());
//添加会签的⼈员,所有的都审批通过才可进⼊下⼀环节
List<String> assigneeList = new ArrayList<String>();
assigneeList.add("wangba");
assigneeList.add("wangjiu");
delegateTask.setVariable("publicityList",assigneeList);
}
}
1.2 “员⼯请假申请”中添加此监听类
1.3 “项⽬组长审批”中
isSequential=false时,表⽰的并⾏执⾏,即该节点下的多条任务可以同时执⾏。
activiti:collection:执⾏该会签环节的参与⼈,此处是使⽤的⼀个名叫publicityList的流程变量
activiti:elementVariable:表⽰的是每⼀个分⽀都有⼀个名叫publicity的流程变量,和上⽅的activiti:assignee结合
1.4 项⽬组长审批时,通过taskAssignee来获取个⼈任务
// 获取总记录数
total = ateTaskQuery().taskAssignee(userId).taskNameLike("%" + s_name + "%").count(); taskList = ateTaskQuery()
// 根据⽤户id查询
.taskAssignee(userId)
/
/ 根据任务名称查询
.taskNameLike("%" + s_name + "%")
// 返回带分页的结果集合
.PageIndex(), PageSize());
==================================================================================
2. activiti ⼯作流会签,⼀⼈通过即可进⼊下⼀环节:
2.1 编写监听类
public class MangerTaskHandlerCandidateUsers implements TaskListener{    public void notify(DelegateTask delegateTask) {
//添加审批的⼈员,以下任何⼀⼈通过即可进⼊下⼀环节
String[] empLoyees = {"wangba","wangjiu"};
delegateTask.addCandidateUsers(Arrays.asList(empLoyees));
}
}
2.2 “项⽬组长审批”中
2.3 项⽬组长审批时,通过taskCandidateUser来获取节点任务
// 获取总记录数
total = ateTaskQuery().taskCandidateUser(userId).taskNameLike("%" + s_name + "%").count(); taskList = ateTaskQuery()
// 根据⽤户id查询
.taskCandidateUser(userId)
// 根据任务名称查询
.taskNameLike("%" + s_name + "%")
// 返回带分页的结果集合
.PageIndex(), PageSize());
============================================================================
3、在当前节点获取下⼀节点的信息
/**
* 根据实例编号查下⼀个任务节点
*
* @param String
*    procInstId :实例编号
* @return
*/
@RequestMapping("/backTaskTab")

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。