ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JBPM4.4总结(一)——基础知识

2022-06-20 01:35:34  阅读:161  来源: 互联网

标签:总结 JBPM 流程 JBPM4.4 基础知识 jbpm4 实例 存放 节点


            JBPM(Java Business Process Management),业务流程管理,是Jboss(现已被Redhat收购)旗下的开源工作流引擎,是覆盖了业务流程管理,工作流,服务协议等领域的一个开源的,灵活的,易扩展的可执行流程语言框架。主要解决一些复杂,易变化等工作流程问题。

 

          一,首先看一下工作流(workflow):


          1,介绍:工作流就是工作需要遵循一定流程,需要经过层层节点,级别才能完成的。它有三个要素:a,这个过程要做什么,这是事情的主题;b,要经过多少个步骤,这是这类事情的特点;c,每个步骤都由谁来做,做什么,怎么做,这是事情节点的内容。例如一些物资的审批问题,请假的审批问题,需要经过多道关卡才能完成事,JBPM会使其变的非常简单。当然了解决工作流的问题,不仅仅有JBPM,还有OSWorkFlow,国内的普元工作流等。

 

          2,详解:看一下工作流的理论知识吧,当然这个不仅仅JBPM是这样,所有的工作流工具都是用的这些知识,所以还是非常核心的。


           a,流程定义(ProcessDefinition),基于有向图对业务进行描述,图是由节点(活动)和转移(Transition)构成的,节点是有类型的,节点的类型决定了到达该节点做的事情,不同的节点做的事情不一样,转移描述了一个流向或路径,转移表示了from … to ..的关系。这里相当于我们创建了一个类。

 

           b,流程实例(ProcessInstance),流程实例就是流程定义的具体化,一个流程定义会有多个流程实例,相当于对上边的类进行了实例化。

 

           c,流程变量(Process variable),流程变量保存了上下文信息,流程变量采用Map结构存储,采用键值对的方式,流程变量是流程实例的一部分,流程变量的生命周期是随着流程实例的消亡而消亡的,流程变量的值在此流程中的任何节点都可以读取和修改(和ThreadLocal类似)。


           d,任务节点(Task),当流程到达该节点将会创建任务实例(TaskInstance)分别分配给参与者,(只要有人参与活动,一般就使用任务节点,因为要分配给人处理)。

 

           e,起始节点(Start),流程定义中必须有一个起始节点,而且只能有一个。

 

           f,结束节点(End),流程定义中可以没有结束节点,也可以有多个结束节点。

 

           g,决策节点(Decision),决策节点是由流程自动决策的,不需要人为干预,该节点相当于if…else ….决策节点可以嵌入java代码或使用脚本语言进行判断。

 

           h,分支节点(Fork),将一个路径可以分解为多个并发的子路径(并发任务,会签),只有所有的子路径到达联合节点(Join),主路径才会继续执行事件(Event),当流程离开、到达某个节点或执行转移的时候,都会触发事件的。

 

          其实细细想想,这些东西和UML中的活动图的画法是非常类似ActivityDiagram的,就连那些画图的图表都是类似的。  

 

         二,JBPM4.4知识介绍:


          1,数据库设计:JBPM4.4的持久层是采用的Hibernate,大大提高了程序了移植性,和数据库进行了解耦。它通过18张表进行数据处理,我们可以通过PowerDesigner进行反向工程,导出数据物理设计图,进行查看这些表之间的结构。这里仅仅看一下表的作用吧:

 

表名称

说明

jbpm4_deployment

保存部署id

jbpm4_deployprop

部署文件相关属性

jbpm4_execution

存放当前执行信息

jbpm4_hist_actinst

存放历史活动(Task、State、Fork、Join等等)信息

jbpm4_hist_detail

保存流程变量的变更

jbpm4_hist_procinst

保存历史流程实例

jbpm4_hist_task

历史任务

jbpm4_hist_var

历史变量

jbpm4_id_group

jbpm4_id_membership

用户和组的关系

jbpm4_id_user

用户

jbpm4_job

存放timer

jbpm4_lob

存放流程定义的JPDL内容和流程定义图片

jbpm4_participation

和用户相关

jbpm4_property

Id维护表

jbpm4_swimlane

存放泳道

jbpm4_task

存放当前任务

jbpm4_variable

存放当前流程变量

 

          其中想提一下,这里的每一张表采用了没有业务含义的字段作为主键,这是大力提倡的;          数据库的命名规范都是通过下划线来区分各个单词,避免了不必要的冲突;           看这里的表有存放当前信息,存放历史信息的,体现了表的分层设计,大大提高了处理数据的效率;          最后就是主键的生成策略,这里是通过第三方表jbpm4_property来进行维护主键,这也是大大提高了其移植性等。这些表设计都是非常值得我们学习的。

 

            2,核心类ProcessEngine,这是使用JBPM的外观接口,通过ProcessEngine来获取各种类,例如最重要的6个Service。其实就像Hibernate中的核心工厂SessionFactory,Ibatis的核心类sqlMapClient一样。通过此核心类来进行JBPM的各种处理。

 

          3,核心的6个Service,当然了这6个Service都是通过核心类ProcessEngine创建的,主要作用如下表:

接口名称

作用

RepositoryService

主要和流程定义相关,如:部署流程、删除流程、查看流程

ExecutionService

和流程实例相关,启动流程

HistoryService

JBPM4的数据库设计发生了改变,区分了历史表和当前表,主要适合于大量流程下的使用,HistoryService主要是查询历史的

TaskService

和任务相关,取得个人任务,组任务,结束任务、一参与者的完整任务=个人任务(findPersonalTasks) + 组任务(findGroupTasks)

IdentityService

身份相关,创建用户、创建组、主要和我们组织机构整合时用的

ManagementService

管理定时任务的(job)

 


        三,工作流的优缺点:


         1,优点:

          a,可以实现流程和业务逻辑的分离,分离后流程的变化不会影响到业务逻辑,业务逻辑的改变也不会影响到流程,能够更好的适应需求的变化。(体现了设计模式中的责任链模式)。


          b,转变了开发的思路,使我们把更多的精力放到流程开发上,因为它进行了很大的封装。


         2,缺点:

           采用工作流会带来很大的开发成本和学习成本。对于一些流程变化不频繁的项目,使用工作流也体现不出它的优势。

          

           综上为工作流的一些基础知识,JBPM的运用前必知知识,理解好工作流这方面的业务,理解好工作流实现的原理,在对以后的运用上起着非常大的作用。后边会带来工作流的运用篇。

 

标签:总结,JBPM,流程,JBPM4.4,基础知识,jbpm4,实例,存放,节点
来源: https://www.cnblogs.com/guohu/p/16391938.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有