jbpm的表结构以及六大服务

对于jbpm的开发,你应该具备的基本知识是对于表结构的理解,以及对于API的熟悉,下面我就带大家总结一下这两方面的知识:

一、jbpm表结构介绍 


1.资源库和运行时表结构(10张表)

    JBPM4_DEPLOYMENTJBPM4_DEPLOYPROPJBPM4_LOB 存储流程定义相关的部署信息 。

    JBPM4_EXECUTION主要是存放JBPM4的执行信息,Execution机制代替了JBPM3的Token机制 。

    JBPM4_TASK存放需要人来完成的Activities(活动),需要人来参与完成的Activity 被称为Task 。

    JBPM4_PARTICIPATION参与者表,存放参与者信息,参与者的种类有Candidate、Client、Owner、Replaced Assignee和Viewer。而具体的参与者既可以是单一用户,也可以是用户组 。

    JBPM4_SWIMLANE泳道表。SwimLane是一种Runtime Process Role。通过SwimLane,多个Task可以一次分配到同一Actor身上 。

    JBPM4_JOB  存放的是Timer 的定义 。

    JBPM4_VARIABLE 存的是进行时的临时变量。

JBPM4_PROPERTY 引擎参数表

2.历史数据库表结构 (5张表)

    JBPM4_HIST_PROCINST 与JBPM4_HIST_ACTINST 分别存放Process Instance和Activity Instance的历史记录 。

    JBPM4_HIST_DETAIL 流程历史详细表,保存 Variable的变更记录 。

    JBPM4_HIST_VAR 保存历史的变量 JBPM4_HIST_TASK Task的历史信息 。

    JBPM4_HIST_TASK 任务历史表,Task的历史信息。

3.身份认证表结构 (3张表)

    JBPM4_ID_GROUP ,JBPM_ID_MEMBERSHIP ,JBPM4_ID_USER 这三张表很常见,基本的权限控制,关于用户认证方面建议还是自己开发一套,组件自带的功能太简单,使用中有很多需求难以满足

    ProcessEngine是jbpm4所有Service API之源

在jbpm中各种服务相互依存,但所有的service API都从ProcessEngine中获得,它是由Configuration类构建的,即工作流引擎根据配置产生。

ProcessEngine是线程安全的,因此它可以保存在静态变量中,甚至JNDI命名服务中或者其他重要位置。在应用中,所有线程和请求都可以使用同一个ProcessEngine对象,以下代码告诉您如何获得ProcessEngine:

[java] view plaincopyprint?

  1. ProcessEngine  processEngine=Configuration.getProcessEngine();

上面代码中的Configuration使用了classpath根目录下的默认配置文件jbpm.cfg.xml创建一个ProcessEngine。如果你要自定义位置,那么可以这样做:

[java] view plaincopyprint?

  1. ProcessEngine processEngine=new Configuration().setResource(“myjbpm.xml”)
  2. buildProcessEngine();

然后,那6个service直接可以用processEngine.getXXX()得到。下面把这6个service描述一下:

同样我们对比着数据库的表结构来区分这几个服务

1.操作资源库和运行时服务(4个)

RepositoryService—流程之源服务的接口。提供对流程定义的部署,查询,删除等操作。

ExecutionService—流程执行服务的接口。提供启动流程实例,“执行”推进,设置流程变量等操作

ManagementService—流程管理控制服务的接口,提供异步工作(Job)相关的执行和查询操作。

TaskService—人工任务服务的接口。提供对任务(Task)的创建,提交,查询,保存,删除等操作。

2.操作历史数据库服务 (1个)

HistoryService—流程历史服务的接口。提供对流程历史库(即已完成的流程实例归档)中历史流程实例,历史活动实例等记录的查询操作。还提供诸如某个流程定义中所有活动的平均持续时间,某个流程定义中某转移的经过次数等数据分析服务。

3.操作身份认证服务 (1个)

IdentityService—身份认证服务的接口。提供对流程用户,用户组以及组成员关系的相关服务

三、当前使用工作流的问题:


1、对当前任务的条件查询:

jBPM不提供灵活进行条件查询的api,如果需要,可以自定义hibernate查询,从jbpm相应的数据表中查询任务数据。但需要对jBPM机制比较了解,而且有些复杂条件难以用jBPM本身的信息查到。

2、统计各个流程实例的状态:

可以通过流程实例,在jbpm系统表中查询,也可以在业务表的相应数据上加上状态列来统计。前一个比较麻烦,后一个比较直观,但不会因使用jBMP而使工作量减少。

3、工作流数据与业务数据结合:

一般通过在流程实例中添加相应的一笔数据的标识作为变量来关联。也可以有针对性的扩展jbpm的系统表来实现与业务的关联性。

4、修改流程后的历史数据兼容性问题:

Jbpm工作流流程定义有版本的概念,修改流程后要重新发布,与旧的流程不是一个同一个版本。系统可以区别开新旧流程来。

总结:  关于业务数据与jBPM本身的数据

   
理论上说,如果使用jBPM,可以将所有业务数据放到jBPM的context中管理,不再维护业务数据表。但这样的结果是在流程之外的环境(比如在统计
报表中)中无法容易的得到业务数据。所以一般会建立业务数据表,我不使用工作流时一样,然后让jBMP从业务数据表中得到业务数据,而不在jBPM中保留
业务数据。因此,使用jBPM后,在业务数据方面基本不会减少工作。

时间: 2025-01-14 01:43:31

jbpm的表结构以及六大服务的相关文章

JBPM表结构

一,概述 JBPM全称--Java  Business PrcessManagerment(业务流程管理),它是覆盖了业务流程管理.工作流.服务协作等领域的一个开放的.灵活的.易扩展的可执行流程语言框架. 二,最大特色 (1)它的业务逻辑定义没有采用目前的一些规范,而是采用了它自己定义的Jboss Jbpm Process Definition Language(jpdl).jpdl任务一个业务流程可以被看作是一个UML状态图.jpdl认为一个业务流程可以被看作是一个UML状态图.jpdl就是详

Activiti数据库表结构(表详细版)

http://blog.csdn.net/hj7jay/article/details/51302829 1  Activiti数据库表结构 1.1      数据库表名说明 Activiti工作流总共包含23张数据表,所有的表名默认以“ACT_”开头. 并且表名的第二部分用两个字母表明表的用例,而这个用例也基本上跟Service API匹配. u  ACT_GE_* : “GE”代表“General”(通用),用在各种情况下: u  ACT_HI_* : “HI”代表“History”(历史)

[转载]github在线更改mysql表结构工具gh-ost

GitHub正式宣布以开源的方式发布gh-ost:GitHub的MySQL无触发器在线更改表定义工具! gh-ost是GitHub最近几个月开发出来的,目的是解决一个经常碰到的问题:不断变化的产品需求会不断要求更改MySQL表结构.gh-ost通过一种影响小.可控制.可审计.操作简单的方案来改变线上表结构. 在介绍gh-ost之前,我们先了解一下各种现有方案,以及为什么要自己开发一个新工具. 已有的在线修改表定义方案 目前,在线修改表定义的任务主要是通过这三种途径完成的: 在从库上修改表定义,修

阿里云OTS(开放结构化数据服务)可视化管理工具的设计和功能介绍

设计初衷 最近一段时间,工作中一直用阿里云的服务器ECS以及SLB.OTS(开放结构化数据服务)等相关的服务,特别是OTS刚刚商业化,官方还没出一种可视化的管理工具,而且我曾跟阿里云OTS的架构师深入交谈过,虽然他们有推出可视化管理工具的想法,但是无奈由于种种原因,目前暂时未提上日程,而自己又在开发中负责OTS源码的修改以适合公司相应的业务逻辑并且其他人也需要调用我封装的OTS相关的服务,为了方便.高效的快速应用ots,所以一个可视化.方便快捷的OTS管理工具的需求迫在眉睫..so--我决定自己

MySQL使用pt-online-change-schema工具在线修改1.6亿级数据表结构

摘  要:本文阐述了MySQL DDL 的问题现状.pt-online-schema-change的工作原理,并实际利用pt-online-schema-change工具在线修改生产环境下1.6亿级数据表结构. 在一个软件生命周期中,我们都知道,前期的表结构设计是非常重要的,因为当表数据量一上来后再进行表结构修改危险性比较大,而且要操作的时间也比较长. 在笔者参与的项目中,就曾遇到这样一个问题,首先上去查看了一下该表的信息,已有约2亿的数据量,而且每分钟还要并发写入4万条记录,而由于这个表有一个

JBPM4 常用表结构及其说明

本文从表结构.操作时表的变化以及jbpm4.4各个包的作用来介绍jbpm的. 第一部分:表结构说明 Jbpm4 共有18张表,如下,其中红色的表为经常使用的表 一:资源库与运行时表结构 1.  JBPM4_DEPLOYMENT 流程定义表 2.  JBPM4_DEPLOYPROP 流程定义属性表 3.  JBPM4_EXECUTION  流程实例表 4.  JBPM4_PROPERTY  流程引擎表 5.  JBPM4_TASK 任务表 6.  JBPM4_VARIABLE 上下文表 7.  J

表结构-索引

DAY02 一.修改表结构 修改表结构会影响表中已有记录,表结构的修改受表中已有记录的限制.因此要在插入表记录之前修改表结构,若已有记录,在修改前先备份. 默认只有数据库管理员root从数据库服务器本机登录时,才有修改表结构的权限  1.alter table  数据库名.表名  处理动作;   //修改表结构 处理动作: 1.1添加新字段: add 格式:alter  table  数据库名.表名 add 字段名- 例: mysql> alter table  数据库名.表名 mysql>

【Normal Form】数据库表结构设计所遵从的范式

参考的优秀文章 数据库(第一范式,第二范式,第三范式) 数据库设计是件严肃.关键的事儿,一毕业,加入一个大型的行业项目,那儿的前辈资深工程师,就给我灌输数据库如何关键.神圣.深不可测的观念,所以,我一直怀着崇拜的眼神. 几年前,项目经理把一个小项目的数据库设计工作交给我,我除了花费晚上和周末去完成.后来,更由于第一次负责整个系统的数据库设计,更请教了以前公司的架构师哥们,帮我把把关,看自己有哪些木有想到的. 后来,将设计方案通过了评审,甚是高兴,毕竟自己第一次设计一个系统的表结构,尽管,是一个小

Activiti工作流引擎数据库表结构

版权声明:本文为博主原创文章,未经博主允许不得转载.不经过允许copy,讲追究法律责任,欢迎加入我们的学习提升群466355109,可以相互交流 数据库表的命名 Acitiviti数据库中表的命名都是以ACT_开头的.第二部分是一个两个字符用例表的标识.此用例大体与服务API是匹配的. l  ACT_RE_*:'RE'表示repository.带此前缀的表包含的是静态信息,如,流程定义,流程的资源(图片,规则等). l  ACT_RU_*:'RU'表示runtime.这是运行时的表存储着流程变量