`
madrocket
  • 浏览: 17385 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

扩展jbpm的一个大纲

阅读更多

1.  会签

简单描述:多人对同一任务进行审核,每人处理后方可结束此任务

曲折实现方式:用action-event方式创建新的任务实例

示意代码ActionHandler的子类中(详细代码和图例见附件文)

            会签人={z3,l4,w5}

TaskMgmtInstance tmi = executionContext.getTaskMgmtInstance()

循环{

TaskInstance tasks = tmi.createTaskInstance(task, token);

tasks.setActorId(会签人[i]);

}

扩展点:方式1.添加“会签任务节点”,继承node,创建真正的会签节点(修改源码)

方式2.流程设计器弥补,在界面上添加一个按钮为会签节点,实际上也是一个普通的节点,但是里面同时带上eventaction同时设置create-tasks="false"(不修改源码)

2.  并发子流程

简单描述:同一个任务实例上,同时跑n个子流程,每个子流程均结束后,此任务实例方可结束

曲折实现方式:用fork-join方式

 

具体问题:虽然能够实现并发,也能等待所有子流程结束后,主流程才继流转,但难以将子流程和主流程绑定,由此而衍生出的问题:

1流程跟踪问题变得困难

2主流程任务结束后,子流程仍然继续流转

3子流程和主流程的参数传递问题

讨论点:1是否用fork-join的方式实现并发子流程,如果不用,什么用什么方式实现

        2是否做成需要支持并发数量和并发的子流程哪一个不确定的动态并发(一个场景,修理汽车,检查哪里坏了( 主流程开始)1总体车的骨架修理(子),2轮胎修理(子),3汽车引擎修理等等子流程(子))那么其中任何一个子流程没有完成,汽车都没有修好。子流程结束以后,自然有两种状态(1修好了,2没有修好)

        A根据以上的场景,由此衍生以后更加细致的需求,是不是每两车来都需要修理这个部件,如果答案是否定的,那么到底需要修理那些部件,是靠流程变量传值吗?如果是那么就不需要流程定义中定义三个子流程,而是动态的创建,

      B.以轮胎为例,轮胎优良分上、中、下三种,到底换那一种呢?每个子流程可能需要的主流程传递参数,子流程结束后把参数传递给主流程

个人看法:1第一个版本在流程定义中写死,2对子流程的和主流程的之间的参数传递封装(抛砖引玉)

3.  回退

简单描述:此任务实例可以回退到上个任务实例,或者是上上个任务实例

 

 

 

曲折实现方式:用流程的转向(transion)、决策(decision)、变量(various

问题:这样做需要在流程定义中加入很多的链接线,和决策的判断。

扩展点:修改源码对任务实例加入一个聚集属性<可以回退的节点集合>

 

4.  退回

Jbpm一个任务的完成仅仅是用tokensingle方法,并没有执行结果,仅仅是对create,start,end 三个时间做了修改,在实际应用中,往往需要这个任务实例执行的结果,yes,还是no,同意还是不同意,0还是1,已经为什么这么选择所带的一个描述,或者是注释,或者叫意见也好

个人意见:将任务实例加入属性(执行结果(boolean),执行意见(string))

并且修改token令牌的single方法,根据执行结果这个属性决定继续流转还是驳回请求。其中驳回到哪个节点呢?直接让流程直接结束还是选择的处理呢?

5.  流程跟踪

根据一个任务实例实例id,知道整个流程中已经create的任务实例,目前关于子流程和主流程的情况,有些棘手,其他还好取到

6.  各种列表(分页)(任务,流程)

主要根据任务实例中的(createstart,end)来取值

待办(end==null),已办(end!=null),办结(流程实例中的end!=null),未签(start==null),已签(start!=null),

还有一个很重要的就是“我发起的任务”,表示这个流程由他发起的。例如,名叫张三的光棍要娶媳妇王二麻子为妻,需要走下面的流程

 

 

 

 

Jbpm的启动流程,干了2件大事,1流程实例表填一条数据,2流程定义中的开始任务创建,并结束,然后流转到找媒婆的任务节点,那么开始节点究竟做什么了呢?他并没有记录张三启动了流程,开始任务实例,你会发现在任务实例中也找不到。问题来了。。。回过头来,看看这个流程。。

   张三想找媳妇儿,所以他启动流程。但是张三不一定非得自己去找媒人,可以让他的下人去帮他找个口才好的媒婆,假如是他的下人李四帮张三找了媒婆。那好,在任务实例这个表中,就生成了一条数据是李四找媒婆,结着,一切很顺利,流程一直走到张三取到王二麻子为妻了。

   等他70岁时,他的孙子--张孙孙想听听他爷爷的故事,这时候,张三的记性不好,需要用咱们的流程的软件,这时候,他想就找到这个流程,输入自己名字想查自己发起娶媳妇的流程,却怎么也找不到,问题处在哪里?

加入开始节点也生成一个任务实例,并且指定参与者,上面的问题将不会困惑张孙孙和张三

个人意见:将开始节点普通化,可以找到自己发起的流程

曲折解决方案:流程定义中添加一个冗余节点,如下图:

 

 

     

 

 

 

流程定义服务组件

流程定义部署

支持以界面的方式实现流程定义文件(包括单个的xml文件及zip包)的上传,上传后直接部署至流程引擎服务器;

流程定义列表及查询

 

可以以列表的形式展示所有版本的流程定义,可以按照版本、名称等对流程定义进行查询

流程定义备份

可以对流程定义进行整体或分类进行备份,打包为zip文件

流程定义权限管理

可以对流程定义进行授权,哪些人对哪些流程定义具有管理权限、编辑权限等

 

7.  业务表单(表单和属性权限(隐藏、只读、可写))

流程表单,任务表单

在流程定义中加入form元素和role元素

见如下草图:

 

 

 

8.  组织机构

方式1.重新实现一套组织结构的机制,包括数据库,接口,实现类都算在jbpmside的工作中,客户端用的时候,根据他们自己的数据库中的组织关系进行数据同步

 

方式2.jbpmside只是提供一个接口,使用jbpmside的客户,根据自己的想用的组织结构的现状进行扩展(其中接口中具体需要那些方法,共同决定)

下面是一些额外的服务,暂时不做扩展

9.  时间调度

10.Log日志

11.邮件服务

 

分享到:
评论

相关推荐

    jbpm扩展包(jbpm_adapter.jar)

    总的来说,jbpm_adapter.jar是一个增强jbpm功能的实用工具,尤其对于需要频繁操作任务列表的用户和开发者来说,它提供了一个更加友好和高效的界面,简化了流程管理,增强了整体的业务流程自动化体验。通过深入理解和...

    jbpm的一个实例

    JBPM是一个扩展性很强的工作流系统,百分百用JAVA语言开发,持久层采用Hibernate实现,理论上说,只要Hibernate支持的数据库JBPM都支持。同时它还能被部署在任何一款JAVA应用服务器上 JBPM的工程文件,大家可以到...

    jbpm简介\jbpm简介

    jBPM是一个开源的、纯Java的、轻量级的商业流程管理(Business Process Management, BPM)工作流引擎。它支持多种可执行流程语言,并且可以在任何JavaEE应用服务器或简单的配置了JDBC的JVM环境中运行。jBPM的核心...

    jbpm-3.1.2.zip_jbpm_jbpm 3.1.2_jbpm-3.1.2.rar_jbpm3.1.2_工作流

    jbpm-3.1.2.zip 文件包含了 jBpm 的一个重要版本——jBpm 3.1.2,这是一个开源的工作流管理系统,专为构建灵活且可扩展的业务流程解决方案而设计。jBpm 提供了一种方式,使得开发者能够用简单而强大的语言来表达业务...

    jbpm4web-JBPM4的一个web版本的Demo

    "jbpm4web"是基于JBPM4开发的一个Web版本的示例项目,旨在帮助学习者更直观地理解和应用JBPM4的核心功能。这个Demo涵盖了业务流程的创建、发起、驳回和删除等关键操作,为初学者提供了一个实践平台。 1. **流程设计...

    jbpm4jbpm5

    jbpm是一个开源的工作流管理系统,用于帮助开发者实现业务流程自动化。以下是基于给定文件的信息,深入解析jbpm4和jbpm5的知识点: 1. **jbpm4表结构和表字段说明**: jbpm4.3表结构和表字段说明文档通常会详细...

    我写的一个jbpm实例

    综上所述,"我写的一个jbpm实例"是一个全面展示jbpm功能和SSH框架集成的应用案例,涵盖了流程设计、部署、执行、监控等多个方面。通过学习这个实例,读者可以加深对jbpm的理解,为实际项目开发提供参考。

    一个Jbpm实例代码

    Jbpm,全称Java Business Process Management,是一个开源的工作流管理系统,用于设计、执行和管理业务流程。它提供了一套完整的工具集,包括流程建模、部署、执行、监控和优化,使得企业可以更加灵活地管理和自动化...

    jBPM3.2.rar_JBPM3.2_jbpm_jbpm 3.2_jbpm3_jbpm3.2教程

    jbPM 3.2是该系统的一个版本,它提供了丰富的功能,包括流程设计、执行、监控以及优化,为企业构建灵活且可扩展的业务流程解决方案。 ### 一、jbPM 3.2 环境配置 在开始jbPM 3.2的开发之前,你需要配置好相应的...

    jbpm4.0三个例子

    jbpm(Java Business Process Management)是一个开源的工作流和业务流程管理平台,它提供了一套完整的工具链,用于设计、执行和管理工作流。在本示例中,用户可以了解如何在Java环境中集成并应用jbpm4进行流程定义...

    jbpm的扩展源代码

    jbpm(JBoss Business Process Management)是一款开源的工作流和业务流程管理系统,用于设计、执行和管理业务流程。jbpm的扩展源代码意味着...对于想要深入了解jbpm和业务流程管理的人来说,这是一个宝贵的资源。

    一个JBPM工作流例子,JBPM

    JBPM(Java Business Process Management)是一个开源的工作流管理系统,它提供了一整套解决方案,用于设计、执行和管理业务流程。在本示例中,我们将深入探讨如何利用JBPM实现销售批复这一具体场景。 一、JBPM核心...

    jbpm jbpm4.3.jar

    jbpm jbpm4.3.jar DDDDDDDD

    jbpm

    总的来说,jbpm是企业级流程管理的强大工具,与Struts2的整合可以为企业提供一个灵活且可扩展的业务流程解决方案。通过深入研究提供的源码和相关工具,开发者不仅可以提升自己的技能,还能在实际项目中实现高效的...

    jbpm数据库表介绍

    jbpm 的数据库表设计旨在提供一个灵活、可扩展的流程管理系统,能够满足各种业务流程的需求。了解 jbpm 的数据库表结构能够帮助开发者更好地理解和使用 jbpm,实现更加复杂的业务流程管理系统。

    jbpm开发指南--jbpm全面介绍

    每一个流程产生了多少个流程实例,有哪些流程实例结束了,哪些处于活动状态,哪些挂起了;同时对于每一个流程实例当前走到什么位置了(流程的进度状况)等等。通过查看JBPM的API我们发现API里并没有提供实现该功能...

    jbpm白皮书 介绍jbpm 入门

    jBPM 通过提供一个强大的执行引擎、一套丰富的服务组件和一套完善的工具链,使得开发者能够更加便捷地设计、实现和监控业务流程。 #### 三、jBPM 的三大核心组件 1. **执行引擎**:这是 jBPM 的核心部分,负责解析...

    JBPM5工作流引擎 S2SH+JBPM4.4开发工作流的一个完整的请假流程例子

    JBPM5工作流引擎 S2SH+JBPM4.4开发工作流的一个完整的请假流程例子。带有文档教程和所有源码+JAR包。在网上找了半天jbpm6\jbpm7的资料,都很少。所以 环境:Myeclipse2015 JDK1.7 mysql 5.0 Struts2+Spring3.1 1...

    jbpm 案例 jbpm jbpm

    jbpm使用案例,非常不错,大家都来看看吧。

Global site tag (gtag.js) - Google Analytics