activti入门系列文章3 - SequenceFlow连线元素

SequenceFlow

属性:

skip expression 跳过表达式 。到当前任务时自动跳过任务

condition可设置表达式决定走哪个分支

 前提:给第一个需要跳过的任务中也添加一个ExecutionListener

import com.edu.hart.modules.constant.ActivitiConstanct;
import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.ExecutionListener;
import java.util.Map;
/**
 * 任务跳过监听器
 */
public class SkipListenner implements ExecutionListener {
    /**
     * 序列化
     */
    private static final long serialVersionUID = 3599293834301636975L;
    @Override
    public void notify(DelegateExecution execution) {
        // 获取流程变量
        Map<String, Object> variables = execution.getVariables();
        // 开启支持跳过表达式 ActivitiConstanct.getSkipExpression()就是"_ACTIVITI_SKIP_EXPRESSION_ENABLED"
        variables.put(ActivitiConstanct.getSkipExpression(), true);
        // 将修改同步到流程中
        execution.setTransientVariables(variables);
        // 这种方式也行。直接设置流程变量
        // execution.setVariable(ActivitiConstanct.getSkipExpression(),true);
    }
}

       在上面的流程图中,我们发现和之前不同的是,用户任务【部门经理】审批,下面有两个连线,我们之前的例子都是只有一条连线,那么如果是这种情况的话我们如何进行流程的选择呢?我们这里是用的是通过设置流程变量的方式来对连线的属性进行区分。

设置连线属性

     假如我们对流程有规定,如果事件不重要,流程直接由部门经理审批结束;如果事件重要,部门经理审批之后,还有有总经理进行审批之后才可以结束。那么我们就可以这样这设置我们的连线,首先得选中我们要设置的连线:

 1.为连线命名

 2.为连线设置条件

message表示流程变量的名称,‘不重要’表示流程变量的值,${}中间的内容要使用boolean类型的表达式,用来判断应该执行的连线。

/**完成任务*/
@Test
public void completeTask(){
//任务ID
String taskId = "2048";
//完成任务的同时,设置流程变量,让流程变量判断连线该如何执行
Map<String, Object> variables = new HashMap<String, Object>();
//其中message对应sequenceFlow.bpmn中的${message=='不重要'},不重要对应流程变量的值
variables.put("message", "不重要");
processEngine.getTaskService()//
.complete(taskId,variables);
System.out.println("完成任务:"+taskId);
}

       在这里,我们也可以在完成任务的同时,设置流程变量,来告诉我们的流程接下来流转到哪里。我们在这个例子中设置的message的值为'不重要',所以流程应该直接结束,不会流程【总经理】审批这一步。

Activiti中国社区交流群:839915498

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值