• 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的值为多数据

  • 相关阅读:
    [转]Python跳过第一行读取文件内容
    Batch Apex之Database.Stateful
    Package.xml文件可取得Metadata
    SFDC 关于Custom Object在Lightingアプリケーションビルダー中可以配置「Chatter」和「活動」
    SFDC 在Batch Apex中使用Aggregate SOQL统计查询语句及结果
    SFDC 为什么Label有时候在同一行,有时候换行了呢?
    SFDC String.isEmpty vs. String.isBlank
    SFDC CustomLabels vs. CustomMetadata
    SFDC Custom Object里无法设置Search Layout的解决方法
    租房注意点
  • 原文地址:https://www.cnblogs.com/Ruiwy/p/6385672.html
Copyright © 2020-2023  润新知