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

 

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

 新设计流程 如下图

activiti流程连线与网关以及个人任务、组任务的指定方式_第1张图片

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

 在流程线中 

activiti流程连线与网关以及个人任务、组任务的指定方式_第2张图片

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

activiti流程连线与网关以及个人任务、组任务的指定方式_第3张图片

 

String taskId="20008";

Map varb = new HashMap();

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

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

 

运行后task 表中数据如下:

activiti流程连线与网关以及个人任务、组任务的指定方式_第4张图片

继续完成任务:

 

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

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

 

记录表中的数据 act_hi_actinst

activiti流程连线与网关以及个人任务、组任务的指定方式_第5张图片

 同意的意见位于表act_hi_varinst

 activiti流程连线与网关以及个人任务、组任务的指定方式_第6张图片

 

 2   排他网关

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

activiti流程连线与网关以及个人任务、组任务的指定方式_第7张图片

 

 

完成任务方式:

 

String taskId="27508";

Map varb = new HashMap();

varb.put("money", 860);

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

 

task表中变化的数据如下:

activiti流程连线与网关以及个人任务、组任务的指定方式_第8张图片

 3 并行网关:

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

流程图如下:

 

activiti流程连线与网关以及个人任务、组任务的指定方式_第9张图片

 

 

4  个人任务的指定方式  

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

 

activiti流程连线与网关以及个人任务、组任务的指定方式_第10张图片

 

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

activiti流程连线与网关以及个人任务、组任务的指定方式_第11张图片

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

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

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

activiti流程连线与网关以及个人任务、组任务的指定方式_第12张图片

activiti流程连线与网关以及个人任务、组任务的指定方式_第13张图片

 

 5 组任务的指定方式:

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

activiti流程连线与网关以及个人任务、组任务的指定方式_第14张图片

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

 

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

activiti流程连线与网关以及个人任务、组任务的指定方式_第15张图片

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

 

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

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

 

activiti流程连线与网关以及个人任务、组任务的指定方式_第16张图片

 

转载于:https://www.cnblogs.com/Ruiwy/p/6385672.html

你可能感兴趣的:(activiti流程连线与网关以及个人任务、组任务的指定方式)