`

十九、会签(通过PooledActors或者在一个TaskNode中定义多个Task)来实现

 
阅读更多

如何实现多人会签,而且只要其中一个人审批通过就继续往下?


实现方法一:

利用pooled-actors,可以使用pooled-actors定义多个参与者,并使用findPooledTaskInstances来查找这种定义的任务实例 ,其中任意一个人审批通过并提交之后,其他人将看不到这个任务实例。

 

任务分配模式:


 

<?xml version="1.0" encoding="UTF-8"?>

<process-definition
  xmlns="urn:jbpm.org:jpdl-3.2"  name="test9">
   <start-state name="开始">
      <transition name="" to="领导审批"></transition>
   </start-state>
   <task-node name="领导审批" >
         <task name="审批">
             <assignment pooled-actors="张三,李四"></assignment>
         </task>
      <transition name="" to="结束" ></transition>
   </task-node>
   <end-state name="结束"></end-state>
  
</process-definition>

 

private void printTask(JbpmContext context, String actorId) {
       
        //查询actorid独占的任务实例
        List<TaskInstance> list = context.getTaskMgmtSession().findTaskInstances(actorId);
        for (TaskInstance taskInstance : list) {
            Long documentId = (Long) taskInstance.getContextInstance().getVariable("documentId");
            Document document = (Document) context.getSession().load(Document.class, documentId);
           
            System.err.println(actorId + "待处理的公文是:" + document.getTitle());
           
        }
       
        //查询actorid所属组的任务实例
        List<TaskInstance> list2 = context.getTaskMgmtSession().findPooledTaskInstances(actorId);
        for (TaskInstance taskInstance : list2) {
            Long documentId = (Long) taskInstance.getContextInstance().getVariable("documentId");
            Document document = (Document) context.getSession().load(Document.class, documentId);
           
            System.err.println(actorId + "待处理的公文是:" + document.getTitle());
           
        }
    }


实现方法二:

在同一个TaskNode节点中定义多个Task,并设置signal="first"

1、last  默认,最后一个任务实例被结束时执行继续;如果Task-Node下面根本没有定义Task,则执行继续。

2、last-wait  最后一个任务实例被结束时执行继续;如果Task-Node下面根本没有定义Task,则等待。

3、first  第一个任务实例被结束时执行继续;如果Task-Node下面根本没有定义Task,则执行继续。

4、firstt-wait  第一个任务实例被结束时执行继续;如果Task-Node下面根本没有定义Task,则执行继续。

5、never  执行永远不会继续(即通过TaskInstance.end操作不会触发流程往下走)。

6、unsychronized  直接往下执行(signal),不管是否有任务实例。

 

 

<?xml version="1.0" encoding="UTF-8"?>

<process-definition
  xmlns="urn:jbpm.org:jpdl-3.2"  name="test10">
   <start-state name="开始">
      <transition name="" to="领导审批"></transition>
   </start-state>
   <task-node name="领导审批" signal="first" >
         <task name="审批">
             <assignment actor-id="张三"></assignment>
         </task>
         <task name="审批">
             <assignment actor-id="李四"></assignment>
         </task>
         <event type="node-leave">
             <action class="com.ygtim.domain.TerminatedTaskInstanceAction"/>
         </event>

      <transition name="" to="结束" ></transition>
   </task-node>
   <end-state name="结束"></end-state>
  
</process-definition>

 

public class TerminatedTaskInstanceAction implements ActionHandler {
   
    /** Comment for <code>serialVersionUID</code> */
    private static final long    serialVersionUID    = -7195658442210655120L;
   
    @SuppressWarnings("unchecked")
    @Override
    public void execute(ExecutionContext executionContext) throws Exception {
        //查询尚未结束的任务实例
        Collection<TaskInstance> collection = executionContext.getTaskMgmtInstance()
            .getUnfinishedTasks(executionContext.getToken());
       
        for (TaskInstance taskInstance : collection) {
            taskInstance.end();
        }
    }
}


在某个用户审批通过后,实例就会离开该节点,为了让其余的用户不再能查询该节点的任务,就需要TerminatedTaskInstanceAction来删除其余用户的任务实例。

 

 

 

 

  • 大小: 115.8 KB
分享到:
评论

相关推荐

    jbpm安装及使用方法

    一个swimlane有多个task,可以从TaskMgmtDefinition中通过task的名称直接获取相应的task; swimlane对象有四个属性,分别是name(名字)、assignmentDelegation(分配代理类)、taskMgmtDefinition、tasks(Set 对应多...

    Python 查看主机IP及mac地址

    Python 查看主机IP及mac地址

    1-全球各国信息化发展指数IDI指数2007-2017年-社科数据.zip

    全球各国信息化发展指数(IDI指数)是一个衡量国家和地区信息与通信技术发展水平的综合评价指标,由国际电信联盟定期发布。该指数通过三个分指数来评估:ICT接入分指数、ICT使用分指数和ICT技能分指数。ICT接入分指数涵盖了固定电话普及率、移动电话普及率、人均国际出口带宽、电脑家庭普及率和互联网家庭普及率等指标;ICT使用分指数则包括网民普及率、固定宽带人口普及率和移动宽带人口普及率;ICT技能分指数则关注平均受教育年限、中等教育毛入学率和高等教育毛入学率。这些指标共同描绘了一个国家在信息化基础设施、信息化使用、知识水平等方面的发展情况。数据覆盖了2007至2017年的区间,但需要注意的是,2009年的数据在报告中是缺失的。IDI指数为全球、区域、国家或地区信息化发展程度提供了一个综合评价手段,对于研究和比较不同国家和地区的信息化发展水平具有重要意义。

    ASP+ACCESS基于WEB网上留言板(源代码+论文)(源代码+论文+说明文档).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

    生产现场工艺文件执行检查管理流程说明.docx

    生产现场工艺文件执行检查管理流程说明.docx

    1-全国各省人口密度数据2000-2021年-社科数据.zip

    全国各省人口密度数据2000-2021年的社科数据内容涵盖了中国31个省、直辖市、自治区的人口分布情况。这些数据通过计算年末常住总人口与地区土地面积的比值来得出人口密度,即单位土地面积上的人口数量,通常以人/平方千米为单位。数据集包含了地区、年份、年末常住总人口(万人)、面积(平方千米)以及计算得出的人口密度(人/平方千米)等关键指标。这些数据不仅反映了人口分布的地理特征,还揭示了人口增长与土地利用之间的关系,对于城市规划、资源管理、环境政策制定等领域具有重要的参考价值。通过分析这些数据,研究者可以深入了解人口变化趋势,评估不同地区的人口承载能力,并为相关政策提供数据支持。

    基于PCIe接口的深度学习项目实例的详细介绍3.docx

    基于PCIe接口的深度学习项目实例的详细介绍3

    1-全国各地级市空气质量指数AQI、AQI排名、PM2.5大气污染日度数据2013-2022年-社科数据.zip

    本数据集提供了2013至2022年间全国328个地级市的空气质量指数(AQI)和PM2.5等大气污染日度数据。数据涵盖了AQI、PM2.5、PM10、CO、SO2、NO2、O3等关键指标,为研究空气质量变化和污染趋势提供了丰富的信息。这些数据不仅包括了空气质量的定量描述,还涉及了空气污染对健康的影响,是评估空气质量的重要工具。数据来源权威,更新至2022年,为科研、政策制定和公众了解提供了宝贵的参考。

    NCRE全国计算机等级考试三级数据库技术(填空题)

    全国计算机等级考试(National Computer Rank Examination,简称NCRE),是经原国家教育委员会(现教育部)批准,由教育部教育考试院(原教育部考试中心)主办,面向社会,用于考查应试人员计算机应用知识与技能的全国性计算机水平考试体系。NCRE开考之后,受到社会广泛关注和认可,为我国信息化技术人才的培养做出了重要贡献。 三级:工程师预备级。三级证书考核面向应用、面向职业的岗位专业技能。 报名条件:报名者不受年龄、职业、学历等限制,均可根据自己学习情况和实际能力选考相应的级别和科目。考生可按照省级承办机构公布的流程在网上进行报名。   报名时间:每次考试具体报名时间由各省级承办机构规定,可登录各省级承办机构网站查询。   考试时间:NCRE在全国范围内每年举办两次考试,考试时间一般安排在3月最后一个周六至下周周一、9月倒数第二个周六至下周周一。   考试形式:统一命题,统一考试,考试形式为上机考试。   成绩:NCRE考试实行百分制计分,以等第形式公布成绩。成绩等第分为“优秀”、“良好”、“及格”、“不及格”四等。100-90分为“优秀”,89-80分为

    ASP+ACCESS论坛的设计与实现(论文+源代码+开题报告)(源代码+论文+说明文档).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

    C语言小游戏-五子棋-详细代码可运行

    使用VS-studio打开,需要安装Esayx库

    CSDNApp_238.apk

    CSDNApp_238.apk

    Apifox-在线API调试工具,全新API开发功能

    免费软件, Postman + Swagger + Mock + JMeter API 文档 API 调试

    【Unity3D插件】Unity3D HDRP Outline高亮发光轮廓描边插件教程

    【Unity3D插件】Unity3D HDRP Outline高亮发光轮廓描边插件教程

    sqlserver内存释放中文最新版本

    本文档主要讲述的是sqlserver内存释放;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看

    全球干旱数据集【标准化降水蒸发指数SPEI-03】-190101-202312-0.5x0.5

    全球干旱数据集【标准化降水蒸发指数SPEI-03】(1901年1月-2023年12月,0.5°×0.5°分辨率)是基于月度降水和潜在蒸散发(PET)数据计算的全球气候数据集,专门用于中期干旱监测和分析。SPEI-03以3个月为时间尺度,更适合评估农业和生态系统的长期干旱风险。 数据集采用NetCDF格式,包含时间、空间坐标和SPEI值(无量纲)。负值表示干旱,正值表示湿润,数据经过插值和偏差矫正,确保高时空一致性。基于全球气象观测和重分析数据,如ERA5。 应用场景: 干旱监测:识别全球干旱事件的强度和持续时间。 气候变化研究:评估干旱风险和气候变化的长期影响。 农业与生态管理:支持农作物种植和生态系统保护。 水资源与灾害防治:优化水资源分配和干旱灾害应对。 该数据集为干旱风险评估和气候变化研究提供重要支持,广泛应用于环境、农业、生态和气候预测领域。

    基于java的北关村基本办公管理系统设计与实现.docx

    基于java的北关村基本办公管理系统设计与实现

    [net毕业设计]asp.net考勤管理系统设计(源代码+论文).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

    [net毕业设计]ASP.NET网络办公助理设计与实现(源代码+论文).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

    [net毕业设计]ASP.NET学生信息管理系统(源代码+论文).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

Global site tag (gtag.js) - Google Analytics