activiti流程连线与网关以及个人任务、组任务的指定方式

 

 1. 在画流程图的时候可以对流程的连线设置表达式,然后在执行的时候设置流程变量值,然后activiti会根据对应的值走对应的节点 

 新设计流程 如下图

如果部门经理同意 提交总经理审核 不同意直接结束任务

 在流程线中 

启动一个流程后 数据如下: 

 

String taskId="20008";

Map varb = new HashMap();

varb.put("message", "同意");

this.processEngineCfg.getTaskService().complete(taskId,varb);

 

运行后task 表中数据如下:

继续完成任务:

 

this.processEngineCfg.getTaskService().complete("22503");

 任务结束 task表中不在有此任务流程的数据

 

记录表中的数据 act_hi_actinst

 同意的意见位于表act_hi_varinst

 

 

 2   排他网关

    以下流程中 金额大于1000的总经理审批 500-1000区级 为一般审批  小于500 为一类

 

 

完成任务方式:

 

String taskId="27508";

Map varb = new HashMap();

varb.put("money", 860);

this.processEngineCfg.getTaskService().complete(taskId,varb);

 

task表中变化的数据如下:

 3 并行网关:

 并行网关不需要指定连线的表达式,当流程流转到并行任务时会出发多个任务,当多个任务完成后在会将流程流转到下一个节点

流程图如下:

 

 

 

4  个人任务的指定方式  

  方式一:在Assignee中指定任务具体的处理人

 

 

 方式二:在Assignee中指定任务的处理人或角色变量,需要在代码中设置对应的处理人

RuntimeService rts = this.processEngineCfg.getRuntimeService();
Map<String,Object> map = new HashMap<String,Object>();
map.put("userids", "曹操");
ProcessInstance pinstance = rts.startProcessInstanceByKey("TsetPms",map);

 方式三  为任务节点设置一个监听类来设置当前节点的处理人,这样就不用在assign中设定值了

创建一个监听器类,需要实现TaskListener接口

 

 5 组任务的指定方式:

方式1  在任务的Main Config 中的Candidate user做如下配置

多人用逗号隔开,当任务到达该节点后,设置的候选人其中任何一个人都可以处理当前待办,处理完成后待办结束

 

 方式2  在任务的Main Config 中的Candidate user设置一个变量作为处理人

然后通过启动或者执行流程向下传递的时候设置该流程变量值

 

RuntimeService rts = this.processEngineCfg.getRuntimeService();
Map<String,Object> map = new HashMap<String,Object>();
map.put("manyUsers", "曹操,刘备,张飞,阿斗");
ProcessInstance pinstance = rts.startProcessInstanceByKey("TsetPmsGroup",map);

方式三  个人任务的监听类一样实现TaskListener接口,然后设置CandidateUser的值为多数据

 

 

posted @ 2017-02-10 14:32  My-yunShu  阅读(1639)  评论(0编辑  收藏  举报