`
yang_ch
  • 浏览: 79465 次
社区版块
存档分类
最新评论

FixFlow多实例会签功能使用介绍

阅读更多

Fixflow,做中国最好的开源流程引擎!项目地址https://github.com/fixteam/fixflow

 

FixFlow多实例(会签)功能介绍

        多实例:顾名思义,就是在此节点会产生多个任务实例,所有的activity类型节点都可以有多实例选项配置,比如UserTask、scriptTask等。

 

会签场景举例

       以请假流程为例,请假流程发起后,需要由A,B,C三个领导会签审批,如果2个以上领导同意,则请假通过,否则退回申请人节点。(这种请假流程比较YD,呵呵)。

 

       首先,创建新的流程实例,按照非会签的配置配置好请假流程,保证一个人能正常审批。这点做不到,就去找下fixflow用户向导的10分钟入门章节吧。

 

原理介绍:

 

多实例配置界面一共6个参数:

  1. 完成策略:是指引擎在什么时候验证完成表达式,默认选择所有,说明每次按钮的提交操作都会触发完成表达式的验证。
  2. 输入数据集和输入项编号:这个用伪代码比较好解释
    for(Object obj:${输入数据集}){
    	${输出项}=obj;
    	createTask();//创建TaskInstance;
    }
     说明:当令牌到达此节点,判断当前节点为并行多实例之后,引擎会循环输入数据集,将循环项赋值给${输出项编号},然后创建流程实例。
  3. 输出数据集,输出项编号:每次做完按钮操作后,会将输出项编号Add到输出数据集中。
  4. 完成表达式:顾名思义,判断此次会签是否结束的条件。

配置过程:

 

  1.  首先创建4个变量,如图:对应上述输入数据集(处理人集合)-持久化-默认值(new ArrayList()),输出数据集(处理结果集合)-持久化-默认值(new ArrayList()),输入项(单个处理人),输出项(单个处理结果)
  2. 在提交节点的“启动并提交”按钮的执行表达式中写如下代码:
    ${处理人集合}="1200119391,1200119392,1200119393";
    说明:设置这三个人会签
  3. 审批节点:同意按钮执行表达式:
    ${单个处理结果}="同意"
      不同意按钮执行表达式:
    ${单个处理结果}="不同意"
     
  4. 任务分配,选择${单个处理人}
  5. 多实例配置:变量一一对应,完成表达式:
    if(${处理结果集合}.size() == ${处理人集合}.split(",").length){
    	return true;
    }
    return false;
     说明:当所有人都处理过,则代表此次会签结束。
  6. 这时候并不知道会签结果是同意还是不同意,所以在排他网关的后面线条中:
    y=Collections.frequency(${处理结果集合}, "同意");
    if(y>=2){
    	return true;
    }
    return false;
     说明:如果两个以上点的同意,则结束。另外一条线:
    y=Collections.frequency(${处理结果集合}, "同意");
    if(y<2){
    	return true;
    }
    return false;
     说明:当两个以下点的同意,则退回到开始节点。最终效果如图:

     

       

 

 

        现在,多实例的配置已经完成了,如果是fixflow官方的web示例项目,可以直接发布到项目中,用不同账号登陆就可以看到效果了,当然,设置的三个处理人,在au_userinfo表中是必须存在的。

        附注:文档中的流程定义文件在附件中,在官方示例WEB中可以直接发布运行。

 

 

       总结:其实原理很简单,就是循环做同一个节点,当满足一定条件时跳出节点,在循环过程中,记录中间变量,离开节点的时候通过变量来判断处理后的结果。

 

       明白这些以后,可以根据原理任意扩展,像多部门会签、像当2个人同意后,其他人不再处理、像循环执行某一项任务等等很多此类需求,熟话说:熟能生巧,先配置成功以后,慢慢研究原理,其实可以做出很多意想不到的功能的。

 

  • 大小: 17 KB
  • 大小: 25.6 KB
  • 大小: 47.9 KB
2
0
分享到:
评论

相关推荐

    Activiti多实例任务实现会签

    【标题】"Activiti多实例任务实现会签"是指在Activiti工作流引擎中,如何配置和使用多实例任务来实现会签功能。在企业级应用中,会签常常用于决策过程,要求多个参与者共同审批,只有当所有参与者都完成审批后,流程...

    多实例会签

    文件`MultiInstanceActivityTest.java`可能是测试多实例会签功能的Java代码,通常包含对BPMN流程引擎的调用,例如Camunda或Activiti,用于启动流程实例、设置参与者、监听任务完成等操作。在这样的测试代码中,我们...

    activiti学习-使用activiti多实例任务实现会签

    activiti学习-使用activiti多实例任务实现会签

    JBPM4.4会签实例

    通过学习"CountersignDemo"这个实例,你可以深入了解JBPM4.4的会签实现,包括如何设计流程、创建自定义活动、编写工具类以及如何在实际应用中部署和使用。这将有助于提升你对业务流程管理的理解,使你能更好地为企业...

    Fixflow内部子流程subProcess使用

    在工作流引擎的世界里,FixFlow是一个非常出色的开源工作流管理系统,它提供了强大的...在学习和使用过程中,务必注意理解和掌握数据交互、流程实例化以及API调用等关键知识点,这将有助于您成为FixFlow的熟练开发者。

    BPM流程会签开发参考

    会签功能则是其中的关键组成部分,因为它确保了决策的多角度验证和责任分摊,避免单一决策者的失误。 在设计会签流程时,我们需要考虑以下几个关键知识点: 1. **流程定义**:会签流程应在流程模型中清晰定义,...

    JBPM4.3 Spring会签 实例

    通过使用边界事件和多实例任务,我们可以实现会签的逻辑。多实例任务允许我们指定一个条件,例如所有参与者的签名都收集完毕,以便结束当前任务并触发后续流程。 接下来,编写Java代码或者使用Spring的@Task...

    Activiti-5.4中实现会签

    总的来说,实现Activiti-5.4中的会签功能涉及到流程设计、配置、监听器使用以及代码实现等多个方面。通过理解和掌握这些知识点,你可以灵活地构建适应各种业务场景的并发签名流程,提高企业的协作效率。

    jBPM4.4 会签(带加签、减签功能)

    在jbPM4.4版本中,会签功能是企业级流程管理中的重要特性,尤其对于需要多个参与者共同审批的场景,如财务审批、合同审核等。本文将深入探讨如何在jbPM中实现会签以及加签、减签功能,并提供相关实践指导。 1. **...

    activiti取会签人员

    在用activiti的时候经常遇到取会签人员的问题,这个文档解决怎么获取会签人员。

    jBPM4.4 会签,用custom实现(带加签、减签功能)

    在jBPM4.4中,会签功能通常通过多实例(Multi-instance)任务来实现,它允许一个任务被多次实例化,以对应每个审批人。 接着,我们来看如何利用custom节点来实现会签。Custom节点是jBPM提供的一个扩展点,它允许...

    powerworld功能介绍、实例应用

    对电力系统可视化和态势感知的功能、特点、应用、方法进行介绍。再结合Powerworld对一实例电网进行分析、处理。讲述powerworld的功能和使用。

    fixflow外部子流程使用

    "FixFlow外部子流程使用"这一主题涉及到如何在FixFlow中集成和调用其他流程,比如Activiti,以实现更复杂的业务逻辑。 首先,让我们了解什么是FixFlow。FixFlow是一款开源的工作流引擎,它提供了强大的流程建模、...

    activiti 会签投票统计

    这通常通过 BPMN 2.0 的并行多实例(Parallel Multi-instance)概念来实现,用以模拟工作流中的“所有人必须同意”或“多数同意”的场景。`voterProcess.bpmn` 文件就包含了一个定义了这种会签任务的流程定义。 2. ...

    jbpm4.3 会签的实现

    本文将深入探讨jbpm4.3如何实现会签功能,并分享相关的源码和工具使用。 1. jbpm4.3概述: jbpm4.3是jbpm的一个较旧版本,但仍然包含许多工作流管理的核心特性,如流程定义、任务分配、事件处理等。它基于Java平台...

    一个利用WF4.0多书签模拟简单会签的例子

    本例子旨在演示如何使用WF4.0的多书签功能来模拟简单的会签过程,会签在业务流程中常见于多个参与者需要对同一份文档或请求进行审批的情况。 会签过程通常涉及多个步骤和角色,每个角色都需要查看、评估并批准或...

    TinkPHP多功能项目实例详尽代码

    综上所述,这个"TinkPHP多功能项目实例详尽代码"涵盖了Web开发的多个重要方面,包括前端与后端的交互、数据库操作、路由设计、模板渲染以及安全性。学习这个项目实例,开发者不仅可以深化对TinkPHP框架的理解,还能...

    android开发实例大全_王东华

    全书分为18章,分别讲解了UI布局实例集锦、控件实例集锦、自动化服务实例集锦、数据存储实例集锦、电话和短信实例集锦、图形图像实例集锦、和网络有关的实例集锦、多媒体实例集锦、Google地图实例集锦、GoogleAPI...

Global site tag (gtag.js) - Google Analytics