snaker工做流引擎

snaker工做流引擎学习记录。app

  任务1: 完成一个完整的流程设计图。学习

  任务2: 搞懂方法中的参数的做用以及使用场景。测试

  任务3: 写一个会签测试Demo。spa

    

 

  snaker中的会签功能取决于节点中performType属性的属性值来决定是否产生多个相同的任务。设计

  performType的属性只有两个: ANY(表明多个参与者时,只要有一个参与者经过,则流程即可以继而往下流转)、ALL(表明多个参与者时,必须全部的参与者都必须经过,流程才会往西继续流转)。code

  在写会签节点时,参与者是在哪里添加的呢?orm

  参与者的设置方法在snaker官方文档中有介绍,这里我使用的是在代码中动态添加一个参与者。blog

  如图:文档

    

  在设计图中只有一个参与者,但只是一个标记,在流程数据构造的时候,会给每一个标记赋予对应的角色。get

  在设计图时参与者的名称必须和数据构造时给的标记是一致的,不然程序就会找不到对应到参与者,会报一个没法执行下一步的错误。

  

		/** 流程数据构造开始 */
		Map<String, Object> params = new HashMap<String, Object>();
		String falg= ShiroUtils.getOrgCode();
		String falg1= ShiroUtils.getParentOrgCode(falg);
		String falg2= ShiroUtils.getParentOrgCode(falg1);
		String falg3= ShiroUtils.getParentOrgCode(falg2);
		
		params.put("apply.operator",SecurityUtil.getApprover(prop.get("falg"), falg));
		params.put("cwh.operator", SecurityUtil.getApprover(prop.get("falg"), falg1));
		params.put("sybAndJdxz.operator",SecurityUtil.getApprover(prop.get("falg"), falg2));
		params.put("mzj.operator", SecurityUtil.getApprover(prop.get("flag"), falg3));
		/** 流程数据构造结束 */

   数据流程构造的时候给了他一个角色,也就是参与者。接下来在会签节点对应的方法中再为它动态的添加一个参与者。

         engine.task().addTaskActor(taskId, 1 ,SecurityUtil.getApprover(prop.get("falg"), falsg4));

  这样会签须要的参与者就搞定了。

  而后就是决策,每一个节点的返回结果无非就是赞成/不一样意,经过/不经过 等等。。这个结果能够以变量的形式来储存,以${result}这种形式返回给流程,告诉它这个节点的最后决定是什么,是否继续往下流转。

        if(result.equals("甲赞成") && result.equals("乙赞成")){
            
            setAttr("result", "甲乙赞成");
        }else{
            setAttr("result", "甲乙不一样意");
        }

  在开始并执行流程的时候须要实现这样一个方法,其中有三个参数,分别表明任务ID、当前操做人员ID(当前登陆人员)、参与者列表集合(流程数据构造时的集合)

    /**
     * 根据任务主键ID,操做人ID,参数列表执行任务
     * @param taskId 任务主键ID
     * @param operator 操做人主键ID
     * @param args 参数列表
     * @return List<Task> 任务集合
     */
    public List<Task> executeTask(String taskId, String operator, Map<String, Object> args);

  写过的东西记录下来,方便后用。

相关文章
相关标签/搜索