JBPM数据库表说明
- 格式:doc
- 大小:302.00 KB
- 文档页数:18
JBPM4_EXECUTION-->org.jbpm.pvm.internal.model.ExecutionImpl 流程实例表Execution状态active-root表示流程主干正在运行。
active-concurrent说明这是一个fork出来的分支。
inactive-concurrent-root说明主干正在等待分支结束。
inactive-scope说明主干正在等待timer结束。
inactive-join说明分支已经进入join,等待其他分支到达join后一起继续执行ExecutionImpl parent = executionImpl.getParent();ExecutionImpl processInstance = executionImpl.getProcessInstance(); ExecutionImpl superProcessExecution = executionImpl.getSuperProcessExecution(); ExecutionImpl subProcessInstance = executionImpl.getSubProcessInstance();Map<String, Object> variables = executionImpl.getVariables();Object variable = executionImpl.getSystemVariable(key);Collection<ExecutionImpl> executions = executionImpl.getExecutions(); SwimlaneImpl swimlane = executionImpl.getSwimlane(swimlaneName);JBPM4_VARIABLE-->org.jbpm.pvm.internal.type.Variable 临时变量表DBID_ :主键,手动指定主键 dbidCLASS_ :类型,Variable类型,DBVERSION_ :版本 dbversionKEY_ :变量KEY key,如executor1、idkey、decisionKey1 CONVERTER_ :转换器 converter,HIST_ : isHistoryEnabledEXECUTION_ :活动实例 executionTASK_ :对应的任务 taskLOB_DATE_VALUE_ 当值为date类型时存值DOUBLE_VALUE_CLASSNAME_LONG_VALUE_STRING_VALUE_TEXT_VALUE_EXESYS_< subclass name="org.jbpm.pvm.internal.type.variable.DateVariable"extends="org.jbpm.pvm.internal.type.Variable" discriminator-value="date"><property name="date" column="DATE_VALUE_" type="timestamp" />< /subclass>JBPM4_LOB-->org.jbpm.pvm.internal.lob.LobDBID_ :主键,手动指定主键 dbidDBVERSION_ :版本 dbversionBLOB_VALUE_ :流程定义文件内容 blobDEPLOYMENT_ :流程模版标识IDJBPM4_HIST_PROCINST-->org.jbpm.pvm.internal.history.model.HistoryProcessInstanc eImpl 历史流程实例表DBID_ :主键,手动指定主键 dbidDBVERSION_ :版本 dbversionID_ :流程实例ID processInstanceIdPROCDEFID_ :流程定义ID PROCDEFID_KEY_ : keySTART_ :开始时间 startTimeEND_ :结束时间 endTimeDURATION_ :停留时间 durationSTATE_ :流程实例状态(活动,完成) stateENDACTIVITY_ :是否完成 endActivityNameNEXTIDX_ : nextDetailIndexSet<HistoryVariableImpl> HistoryVariables = hisPI.getHistoryVariables();historyActivityInstances 级联操作details 级联操作JBPM4_HIST_ACTINST-->org.jbpm.pvm.internal.history.model.HistoryActivityInstanceIm pl 历史流程活动实例表DBID_ :主键,手动指定主键 dbidCLASS_ :类型,ExecutionImpl类型,无字段对应,指明HistoryActivityInstanceImpl类型(act、excl)DBVERSION_ :步骤版本 dbversionTYPE_ :活动实例类型 typeEXECUTION_ : executionIdACTIVITY_NAME_ :活动实例名称 activityNameSTART_ :开始时间 startTimeEND_ :结束时间 endTimeDURATION_ :停留时间 durationTRANSITION_ :连接线 transitionNameNEXTIDX_ : nextDetailIndexHPROCI_ :历史流程实例HTASK_ :历史任务 historyTaskJBPM4_HIST_TASK-->org.jbpm.pvm.internal.history.model.HistoryTaskImplDBID_ :主键,手动指定主键 dbidDBVERSION_ :步骤版本 dbversionEXECUTION_ : executionIdOUTCOME_ : outcomeACTIVITY_NAME_ :活动实例名称 activityNamePRIORITY_ : priorityASSIGNEE_ : assigneeSTATE_ : stateCREATE_ : createTimeEND_ :结束时间 endTimeDURATION_ :任务节点停留时间 durationNEXTIDX_ : nextDetailIndexJBPM4_HIST_VAR-->org.jbpm.pvm.internal.history.model.HistoryVariableImplDBID_ :主键,手动指定主键 dbidDBVERSION_ :步骤版本 dbversionPROCINSTID_ :流程实例ID processInstanceIdEXECUTION_ : executionIdVARNAME_ : variableNameVALUE_ : valueHPROCI_ : historyProcessInstanceHTASK_ : historyTaskJBPM4_HIST_DETAIL-->org.jbpm.pvm.internal.history.model.HistoryDetailImplDBID_ :主键,手动指定主键 dbidCLASS_ :类型,HistoryDetailImpl类型, comment、instance-migration、priority-update、assignment、duedate-update、variable-updateDBVERSION_ :步骤版本 dbversionUSERID_ : userIdTIME_ : timeHPROCI_ : historyProcessInstanceHPROCIIDX_ : historyProcessInstanceIndexHACTI_ : historyActivityInstanceHACTIIDX_ : historyActivityInstanceIndexHTASK_ : historyTaskHTASKIDX_ : historyTaskIndexHVAR_ : historyVariableHVARIDX_ : historyVariableIndex。
Jbpm数据库流程定义和流程执行都会持久化到数据库中,所以我们需要在数据库中创建所需的数据库表.共有18张表,分五个部分。
流程部署名称详情JBPM4_DEPLOYMENT流程定义表流程定义的部署记录。
发布一次流程后会添加一条记录,流程的具体属性存放在JBPM4_DEPLOYPROP中JBPM4_DEPLOYPROP流程定义属性表已部署的流程定义的具体属性。
发布一次流程后会添加多条记录,一条jbpm4_deployment记录需要对应4条jbpm4_deployprop记录,他们的key字段分别为langid(标识解析流程定义使用的jpdl的版本),pdid(流程定义的id),pdkey(流程的key,标识同一类流程),pdversion(流程的版本)JBPM4_LOB 存储表流程定义的相关资源。
部署一个流程时,此表中会添加多条记录,分别对应JPDL_XML ,图片, 用户代码JAVA 类等,它们以二进制的格式统一存储在此表中。
发布demo流程之后jbpm4_deployment新增一条记录jbpm4_deployprop新增三条记录jbpm4_LOB新增两条记录用户认证表JBPM实现的用户库比较简单,可以实现并扩展其相关接口,并进行认证库独立。
名称详情JBPM4_ID_GROUP组表用户组相关信息JBPM4_ID_MEMBERSHIP用户角色表用户组和用户的关系表JBPM4_ID_USER 用户表用户相关信息表流程实例运行相关表名称详情JBPM4_EXECUTION流程实例表记录流程实例运行必须的信息。
JBPM4_TASK任务表流程实例的任务信息。
存放需要人来完成的Activities,需要人来参与完成的Activity被称为Task。
JBPM4_PARTICIPATION 参与者表流程实例的任务参与人信息。
而具体的Participation既可以是单一用户,也可以是用户组JBPM4_V ARIABLE 上下文表传给流程实例的变量的相关信息。
数据库表描述-概述说明以及解释1.引言1.1 概述在数据库管理系统中,表是一种结构化的数据存储单元,它由行和列组成,用于存储具有相似特性的数据。
数据库表描述着整个数据库的结构和关系,是数据存储和管理的基本单位之一。
通过对数据库表的描述,我们可以清晰地了解数据的组织结构,实现数据的高效存储和管理。
在本文中,我们将介绍数据库表的定义、作用以及相关的设计原则,以帮助读者深入了解数据库表的重要性和设计要点。
通过本文的学习,读者将能够更好地理解和应用数据库表,提高数据库系统的性能和可维护性。
1.2文章结构文章结构部分主要包括本文的组织结构和内容安排。
在本文中,我们将分为引言、正文和结论三个部分来介绍数据库表的描述。
在引言部分,我们会概述本文的主题,介绍数据库表描述的重要性和背景,以及本文的目的和结构。
在正文部分,我们将详细讨论数据库表的定义、作用、组成要素和设计原则,从而帮助读者深入了解数据库表的概念和特点。
在结论部分,我们会总结数据库表描述的重要性,强调数据库表设计的关键因素,并对数据库表描述的未来发展进行展望。
通过全面地介绍数据库表的描述和设计原则,我们希望读者可以更好地理解和应用数据库表,提高数据管理和存储的效率和质量。
1.3 目的在数据库系统中,数据库表描述是非常重要的。
它可以帮助开发人员更好地了解数据库表的结构和功能,帮助维护人员更好地管理和维护数据库表,帮助用户更好地理解数据库表中存储的数据。
因此,本文的目的是通过对数据库表描述的介绍,帮助读者了解数据库表的重要性和作用,掌握数据库表的基本概念和设计原则,以提高数据库表设计的质量和效率。
同时,希望通过本文的讨论,引发对数据库表描述的思考和讨论,推动数据库表描述在未来的进一步发展和应用。
2.正文2.1 数据库表的定义和作用数据库表是数据库中的一个重要组成部分,它是用来存储数据的结构化方式。
每个数据库表都包含了一定数量的行和列,行代表记录,列代表属性。
jbpm4 数据库结构关系图JBPM数据库分析持久化基础知识持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。
持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。
我们可以这样理解:在一定周期内保持不变就是持久化,持久化是针对时间来说的.数据库中的数据就是持久化了的数据,只要你不去删除或修改.Session会话中Session对象变量也是不变的,是Session容器中持久化对象持久化的方式有很多种,根据周期不同有,page,Session,Application,对象序列化机制对于需要将对象的状态保存到文件中,而后能够通过读入对象状态来重新构造对象,恢复程序状态,对象序列化的过程是对象持久化的方法之一,把对象保存到文件中.广义上说我们需要持久化是由于内存的易失性和过于昂贵造成的。
JBPM流程引擎的持久化有什么特点JBPM流程引擎的持久化层使用的当前流行的ORM框架hibernate,得益于hibernate的一些强大特性,导致JBPM也具有了这样的一些特性,比如通过hibernate的HSQL,我们可以专注我们的业务逻辑,而不用考虑不同的数据库之间T-SQL的差异,这样是jbpm具备一套代码,可以平滑的从不同数据库间进行更换。
JBPM需要持久化基于以下特点1.工作流作为典型的交互性应用,其必须精细控制执行过程,并记录执行的状态,在用户唤醒流程时,能够在流程持久化的那个点继续运行。
同时在流程挂起时,我们将相关数据持久化,也有性能和故障恢复的考虑。
2.流程引擎的运行本身也会产生相关的对象(流程实例、Execution等),需要持久化到数据库3.流程引擎需要记录相关的业务数据4.流程引擎需要记录相关的执行历史数据JBPM流程引擎的数据库结构图各个数据表的功能简单介绍流程部署jbpm4_deployment:发布的记录表,通过dbid跟后两个表进行关联。
第1介绍JBOSS jBPM是一个灵活的、可扩展的工作流管理系统。
JBOSS jBPM拥有直观的流程语言,用任务、异步的等待状态、定时器、自动化动作…等来表示业务流程图,把这些操作绑定在一起,JBOSS jBPM就拥有了非常强大和可扩展的控制流机制。
JBOSS jBPM只有最小的依赖,可以象使用java库一样非常容易的使用它。
另外,也可以通过把它部署在J2EE集群应用服务器中,用在吞吐量极为关键的环境中。
JBOSS jBPM可被配置为任何数据库,并且可以部署到任何应用服务器。
1.1 概述核心工作流和BPM功能被打包为一个简单的java库,这个库包括一个存储到数据库、从数据库更新和获取流程信息的服务。
图1.1 JBOSS jBPM组件概观1.2 JBOSS jBPM入门套件入门套件是一个包含了所有jBPM组件的下载包,包括:l Jbpm-server,一个预配置好的jboss应用服务器。
l Jbpm-designer,图形化设计jBPM流程的eclipse插件。
l Jbpm-db,jBPM数据库兼容包(见下文)。
l Jbpm,核心jbpm组件,包括库和本指南。
l Jbpm-bpel,JBOSS jBPM BPEL扩展参考。
预配置好的JBOSS应用服务器安装了下列组件:l核心的jBPM组件,被打包为了一个服务档案。
l一个包括jBPM库表的集成数据库:默认的hypersonic数据库包含了jBPM表,另外还包含一个流程。
l jBPM控制台web应用程序,可以由流程参与者使用,也可以由jBPM管理员使用。
l jBPM调度程序,用于定时器执行。
调度程序在入门套件中被配置为一个servlet,这个servlet 将产生一个线程来监视和执行定时器。
l jBPM命令执行器,用于命令的异步执行。
命令执行器也被配置为一个servlet,这个servlet 将产生一个线程来监视和执行命令。
l一个流程实例,已经被部署到了jBPM数据库中。
jBPM4.4一、什么是jBPMJBPM是一个扩展性很强的工作流系统,百分百用JAVA语言开发,持久层采用Hibernate实现,理论上说,只要Hibernate支持的数据库JBPM都支持。
同时它还能被部署在任何一款JAVA应用服务器上。
java Business Process Management :工作流,工作流引擎注:记得j小写,因为j代表java,与Log4j中j一样工作流管理系统不止一中,如还有Intaliol BPMS …但JBoss jBPM灵活性且扩展性高。
jBPM项目于2002.3由Tom Baeyens 发起,2003.12发布1.0版本,2004年10.18发布2.0,并在这天加入了JBOSS组织-→被RedHat公司二、能干什么提供工作流的实现,帮助更好的进行BPM三、jBPM有什么,简介jBPM的Service API 各种服务1:ProcessEngine:流程引擎。
并不负责具体的业务,而是用于获取各种Service。
2:RepositoryService:流程资源服务的接口,如流程定义发布、查询、删除等。
3:ExecutionService:用于操作流程实例的服务,可以进行流程实例发布、查询、流程推进、设置流程变量等操作。
4:TaskService:用于操作人工任务的服务,可以进行任务创建、查询、获取、提交完成、保存、删除等操作。
5:HistoryService:用于操作流程历史的服务,提供对流程历史库(就是已经完成的流程实例)的操作。
比如:历史流程实例,历史活动实例等。
6:IdentityService:用于操作用户、用户组以及成员关系的服务7:ManagementService:流程管理控制服务的接口,只提供异步工作(Job)相关的执行和查询操作。
四、Myeclipse8.5 搭配开发环境1.jbpm-4.4.zip 下载完2.myeclipse→help→Myeclipse Configuration Center →add…….3.找到\jbpm-4.4\install\src\gpd\jbpm-gpd-site.zip 安装这个插件4.记得不要联网安装,不要选source文件5.安装完后window→JBoss jBPM→runtime Location→add 添加jbpm的路径6.添加lib下所有jar包,如果你使用的是tomcat6.0则:要把Juel-api.jar ,juel-impl.jar,juel-engine.jar 拷到tomcat lib 下并把原来的el-api.jar删掉项目中就不要再导上面三个包五、修改配置文件1、将example中的下列配置文件拷贝到java项目的src目录下:jBPM.cfg.xml、jBPM.hibernate.cfg.xml、jBPM.mail.properties、jBPM.mail.templates.xml、process_forms.css2、在以上配置文件中的jBPM.hibernate.cfg.xml,实际上就是我们熟悉的hibernate.cfg.xml,这里,要修改为连接我们的数据库。
工作流框架JBPM使用说明书(V1.0)长城计算机软件与系统有限公司目录1引言 (2)1.1简介 (2)1.2使用版本 (2)1.3使用环境 (2)2使用说明 (3)2.1建立数据库 (3)2.2建立项目 (6)2.3建立工作流定义 (6)2.4工作流的发布 (8)2.5工作流中定义的类 (9)1引言1.1简介JBoss JBPM是一个灵活、可扩展的流程语言框架。
JPDL是建立在这个通用框架之上的一个流程语言。
它使用直观的流程语言以图形化的方式来表示业务流程,使用术语任务、异步通讯等待状态、定时器、自动操作等。
为了将这些操作绑定在一起,JPDL提供了强有力的、可扩展的流程控制机制。
JBoss jBPM有一个具有最小的依赖性和尽可能简单易用的java库。
当然它也可以用在吞吐量极为关键的J2EE集群应用服务器环境中。
持久层采用Hibernate实现,理论上说,只要Hibernate支持的数据库JBPM都支持。
1.2使用版本本例中使用的是JBPM-3.2-GA版本,需要JDK 1.4.2及以上版本,下载地址为:/jbossjbpm/jbpm_downloads/,建议下载完整包。
在jbpm安装路径\designer\eclipse中有支持图形化设计的插件,将其加到eclipse中,在eclipse的窗口-首选项中如果有jboss jbpm选项,则安装成功。
1.3使用环境本说明书中用到的软件环境如下:操作系统:Window XP sp3JDK:1.4.2_08IDE:MyEclipse 5.5应用服务器:Weblogic 8.1 Tomcat 5.0数据库:oracle 9i2使用说明该示例演示的是一个公司报销流程。
普通员工可以填写报销单,然后提交主管审批;主管审批可以有三种可能:一是主管可以驳回请求,那么报销人需要重填报销单,或者取消报销操作;二是主管不同意请求,请求直接结束;三是主管同意请求,那又存在两种情况,一是如果报销总费用大于1000的话那么会自动转到老板那里,如果小于1000就直接进入财务处理子流程,老板审批的话有两种可能,一是同意进入财务处理子流程,二是不同意请求直接结束。
(BPM业务流程管理)数据库表JBPM数据库表说明1流程配置类数据库表:1.1JBPM_PROCESSDEFINITION:流程模版表1.2JBPM_NODE:流程节点表1.3JBPM_TRANSITION:流程迁移表1.4JBPM_ACTION:流程动作表1.5JBPM_EVENT:流程事件表1.6JBPM_DELEGATION:流程代理类表(用于实例化jbpm中的action类)1.7JBPM_TASK:流程任务表1.8JBPM_TASKCONTROLLER:流程任务控制器1.9JBPM_VARIABLEACCESS:流程变量表1.10JBPM_MODULEDEFINITION:流程模块定义表1.11JBPM_EXCEPTIONHANDLER:流程异常处理器表1.12JBPM_DECISIONCONDITION:DECISION节点判断条件表1.13JBPM_SWINLANE:DECISION节点判断条件表2流程运行类数据库表:2.1JBPM_PROCESSINSTANCE:流程实例表2.2JBPM_TOKEN:流程TOKEN表2.3JBPM_LOG:流程日志表2.4JBPM_RUNTIMEACTION:流程实时ACTION表2.5JBPM_VARIABLEINSTANCE:流程变量实例表2.6JBPM_COMMENT:流程备注信息表2.7JBPM_MESSAGE:流程异步消息表2.8JBPM_TIMER:流程定时器表2.9JBPM_TOKENVARIABLEMAP:流程TOKEN变量MAP表2.10JBPM_MODULEINSTANCE:流程模块实例表2.11JBPM_BYTEARRAY:文件模块形式的流程变量实例表2.12JBPM_BYTEBLOCK:补:JBPM_TASKINSTANCE:。
注:红色的表为经常使用的表.这里不使用JBPM自己的权限角色定义.整体说明:JBPM4_DEPLOYMENT 流程定义表JBPM4_DEPLOYPROP 流程定义属性表JBPM4_EXECUTION 流程实例表JBPM4_HIST_ACTINST 流程活动(节点)实例表JBPM4_HIST_DETAIL 流程历史详细表JBPM4_HIST_PROCINST 流程实例历史表JBPM4_HIST_TASK 流程任务实例历史表JBPM4_HIST_VAR 流程变量(上下文)历史表JBPM4_ID_GROUP 组表JBPM4_ID_MEMBERSHIP 用户角色表JBPM4_ID_USER 用户表JBPM4_JOB 定时表JBPM4_LOB 存储表JBPM4_PARTICIPATION 参与者表JBPM4_SWIMLANE 泳道表JBPM4_TASK 任务表JBPM4_VARIABLE 上下文表红色的表为经常使用的表.这里不使用JBPM自己的权限角色定义.发布一个流程deploy后jbpm4_deployment新增一条记录jbpm4_deployprop新增三条记录jbpm4_lob 新增一条记录开始一个流程startProcessInstanceByKey后jbpm4_execution新增一条记录jbpm4_hist_actinst 新增一条记录jbpm4_hist_procinst新增一条记录jbpm4_hist_task新增一条记录jbpm4_task 新增一条记录流程定义相关的布署信息就存储在(1)JBPM4_DEPLOYMENT、(2)JBPM4_DEPLOYPROP及(3)JBPM4_LOB中。
上传一个包含png和jpdl.xml的zip包后,JBPM4_DEPLOYMENT多一条记录 JBPM4_DEPLOYPROP 多三条,JBPM4_LOB多两条。
(4)J B PM4_HIST_PROCINST与(5)JBPM4_HIST_ACTINST分别存放的是Process Instance、Activity Instance的历史记录。
1.工作流与工作流管理系统1.1. 工作流(Work Flow)工作流就是工作流程的计算机模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。
工作流要解决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递文档、信息或者任务。
通俗的说,流程就是多个人在一起合作完成某件事情的步骤,把步骤变成计算机能理解的方式就是工作流。
公司内采用纸张表单,手工传递的方式,一级一级审批签字,工作效率低下,对于统计报表功能则不能实现。
而采用工作流软件,使用者只需在电脑上填写有关表单,会按照定义好的流程自动往下跑,下一级审批者将会收到相关资料,并可以根据需要修改、跟踪、管理、查询、统计、打印等,大大提高了效率,实现了知识管理,提升了公司的核心竞争力。
作为一个成熟稳定的工作流产品,不仅提供日常办公和关键业务流程智能化管理,而且能根据公司的特殊实际要求轻松方便地随时定制各种流程,并可实现不同角色不同的跟踪、查询、统计、打印等强大功能1.2.工作流管理系统(Workflow Management System)工作流管理系统(WfMS)的主要功能是通过计算机技术的支持去定义、执行和管理工作流,协调工作流执行过程中工作之间以及群体成员之间的信息交互。
工作流需要依靠工作流管理系统来实现。
工作流管理系统是定义、创建、执行工作流的系统,应能提供以下三个方面的功能支持:1.定义工作流:包括具体的活动、规则等2.运行控制功能:在运行环境中管理工作流过程,对工作流过程中的活动进行调度3.运行交互功能:指在工作流运行中,WfMS与用户(活动的参与者)及外部应用程序工具交互的功能。
一、定义工作流二、执行工作流1.3.什么地方使用工作流技术OA中的审批流转的功能,其作用是能按照指定的流程(步骤)流转要审批的表单(就像流水线一样)。
有如下问题:1,流程有很多。
2,不同的公司,流程的具体步骤是不一样的,有时还需要增加新流程或修改现有流程。
通过ProcessEngine获得repositoryService1.部署流程定义,获得一个Id,id的格式为{key}-{version},key 和version之间使用连字符连接,没有key,系统会默认取,一般是jpdl.xml文件的名字2.流程的部署:processEngine.getRepositoryService().createDeployment().addResourc eFromClasspath("process\\sss.jpdl.xml").deploy()3.启动新的流程实例:ProcessInstance processInstance = executionService.startProcessInstanceByKey("ICL");ProcessInstance processInstance =executionService.startProcessInstanceByKey("ICL", "CL92837");为流程定义了一个id,若第一条,getId为ICL.7,7为主键第二条getId为ICL.CL92837注:尽量使用第二条自定义keyProcessInstance processInstance =executionService.startProcessInstanceByKey("ICL", variables);variables为HASHMAP,第3中方式启动流程实例部署jdpl.xml之后,直接返回的是deploymentId,将这个id拼接key,放入方法executionService.startProcessInstanceById(ke+”-”+deploymentId);也可以启动实例格式如:{key}-{version}3. <on event="start"><event-listener class="com.system.listener.JbpmListener"/></on>在jdpl.xml中加入事件监听器,在class中实现EventListener接口在处理完之后executionService.signalExecutionById()移动到下一节点实例processInstance有两种方法判断节点状态isActive("state1"),state1节点是否是活动的;isEnded()是否流程已经结束另:注意啊在做单元测试的时候,如果jdpl.xml用了表达式,一定要将这三个包考进来,要不单元测试报错4.关于taskService,同样是由processEngine获得,不同的是,任务是指具体到某个人或是定义的某个组,如Map map = new HashMap();map.put("user","jhon");ProcessInstance processInstance =executionService.startProcessInstanceByKey("ceshi", map);int a = taskService.findPersonalTasks("jhon").size();在jdpl.xml中定义了<task g="224,222,92,52"name="task1"assignee="#{user}"><transition name="to end1"to="end1"g="-47,-17"/> </task>#{user}故在map中要以user为key放用户姓名,然后查找以用户名查找代办任务在taskService里要使向下一节点传递,需用方法pleteTask(task.getId());要使需要传送参数,应在以上方法前加taskService.setVariables(task.getId(),map);pleteTask(task.getId());达到传递的目的Eg: <?xml version="1.0"encoding="UTF-8"?><process name="ceshi"xmlns="/4.3/jpdl"> <on event="start"><event-listener class="com.system.listener.JbpmListener"/> </on><start g="294,93,48,48"name="start1"><transition g="-53,-17"name="task1"to="task1"/> </start><end g="297,394,48,48"name="end1"/><task g="274,198,92,52"name="task1"assignee="#{user}"> <transition g="-53,-17"name="task2"to="task2"/> </task><task g="274,305,92,52"name="task2"assignee="#{bieren}"> <transition g="-47,-17"name="end1"to="end1"/></task></process>public void testHello(){Map map = new HashMap();map.put("user","jhon");ProcessInstance processInstance =executionService.startProcessInstanceByKey("ceshi", map);List<Task> list = taskService.findPersonalTasks("jhon");System.out.println(list.size());if(list.size()>0){Task task = list.get(0);map = new HashMap();map.put("bieren","haha");taskService.setVariables(task.getId(),map);pleteTask(task.getId());}list = taskService.findPersonalTasks("jhon");System.out.println(list.size());list = taskService.findPersonalTasks("haha");System.out.println(list.size());}这是由jhon发出,此时jhon有代办任务,由jhon带上参数map发送给了haha,haha待办任务就能看到,而jhon没有了,这两个参数分别是在xml中配置的#{user}、#{bieren}任务的分支(根据画线名称走):ProcessInstancepi=executionService.startProcessInstanceByKey("ceshi"); executionService.signalExecutionById(pi.getId(),"wait");System.out.println(pi.isActive("wait"));pi = executionService.signalExecutionById(pi.getId(),"accept"); System.out.println(pi.isActive("submit"));特别注意这里将重新返回一个新的processInstance任务的选择分支decision(根据判断条件走):<start g="28,131,80,40"><transition to="evaluate document"/></start><decision g="157,132,80,40"name="evaluate document"><transition to="submit document"><condition expr="#{content=='good'}"/></transition><transition to="try again"><condition expr="#{content=='not so good'}"/></transition><transition to="give up"/></decision><state g="291,252,80,40"name="submit document"/><state g="278,24,80,40"name="try again"/><state g="310,129,80,40"name="give up"/>Map map= new HashMap();map.put("content","good");ProcessInstancepi=executionService.startProcessInstanceByKey("ceshi",map); System.out.println(pi.isActive("submit document")); System.out.println(pi.isActive("give up"));返回值是true,false可以在<decision g="157,132,80,40"name="evaluate document"> <transition to="submit document"><condition expr="#{content=='good'}"/></transition>加入表达式也可将 xml改变为<start ><transition to="evaluate document"/></start><decision name="evaluate document" expr="#{content}" ><transition name="good" to="submit document" /><transition name="bad" to="try again" /><transition name="ugly" to="give up" /></decision><state name="submit document" /><state name="try again" /><state name="give up" /></process>两种写法在判断中使用java类<start g="83,155,80,40"><transition to="evaluate document"/></start><decision name="evaluate document"g="173,154,80,40"><handler class="com.system.util.ContentEvaluation"/><transition name="good"to="submit document"g="-29,-17"/><transition name="bad"to="try again"g="-23,-17"/><transition name="ugly"to="give up"g="-29,-17"/></decision><state name="submit document"g="289,105,80,40"/><state name="try again"g="291,162,80,40"/><state name="give up"g="295,215,80,40"/>ContentEvaluation.java需要实现DecisionHandler接口。
JBPM 数据库表说明1流程配置类数据库表:1.1JBPM JBPM_PROCESSDEFINITION _PROCESSDEFINITION :流程:流程模版模版模版表表1.2JBPM JBPM_NODE_NODE :流程节点表_TRANSITION:流程迁移表1.3JBPMJBPM_TRANSITIONID_流程迁移标识√NAME_流程迁移名称PROCESSDEFINI迁移所在的流程模版id√TION_FROM_迁移来源,对应Node的id√TO_迁移目的,对应Node的id√FROMINDEX_?1.4JBPM_ACTION:流程动作表REPEAT_定时器动作执行次数TRANSITIONNA ME_动作指定后指向的TransitionTIMERACTION_定时器动作代理类,对应JBPM_ACTIONEXPRESSION_定时器执行表达式EVENTINDEX_?EXCEPTIONHAN DLER_异常处理类,对应JBPM_ EXCEPTIONHANDLEREXCEPTIONHANDLERINDEX_?1.5JBPM_EVENT:流程事件表JBPM_TRANSITIONTASK_流程事件所属任务,对应JBPM_TASK√1.6JBPM_DELEGATION:流程代理类表流程代理类表((用于实例化jbpm中的action类)1.7JBPM_TASK:流程任务表TASKMGMTDEFI NITION_任务所属的任务管理模块ID ,对应JBPM_MODULEDEFIFNITI ON√TASKNODE_任务所属的TASK_NODE ,对应JBPM_NODE√STARTSTATE 任务所属的START_NODE ,对应JBPM_NODE √ASSIGNMENTDE LEGATION ?√SWIMLANE 执行该任务的泳道(角色)√TASKCONTROLL ER_?1.8JBPM_TASKCONTROLLER :流程任务控制器1.9JBPM_VARIABLEACCESS :流程变量表1.10JBPM_MODULEDEFINITION:流程模块定义表1.11JBPM_EXCEPTIONHANDLER:流程异常处理器表1.12JBPM_DECISIONCONDITION:DECISION节点判断条件表的条件表达式1.13JBPM_SWINLANE:DECISION节点判断条件表2流程运行类数据库表:2.1JBPM_PROCESSINSTANCE:流程实例表2.2JBPM_TOKEN:流程TOKEN表2.3JBPM_LOG:流程日志表2.4JBPM_RUNTIMEACTION:流程实时ACTION表2.5JBPM_VARIABLEINSTANCE:流程变量实例表BYTEARRAYVAL UE_当流程变量是ByteArray 类型时,变量的值,对应JBPM_BYTEARRAY DATEVALUE_当流程变量是DATE 类型时,变量的值DOUBLEVALUE_当流程变量是DOUBLE 类型时,变量的值LONGIDCLASS_当流程变量是了HibernateLongInstance 类型时,变量的类型LONGVALUE_当流程变量是了HibernateLongInstance/Lo ng 类型时,变量的值STRINGIDCLASS _当流程变量是了HibernateStringInstance 类型时,变量的类型STRINGVALUE_当流程变量是了HibernateStringInstance/S tring 类型时,变量的值TASKINSTANCE_变量所在的任务实例,对应JBPM_TASKINSTANCE2.2.66JBPM_JBPM_COMMENT COMMENT :流程:流程备注信息备注信息备注信息表表2.2.77JBPM_JBPM_MESSAGE MESSAGE :流程:流程异步消息异步消息异步消息表表2.2.88JBPM_JBPM_TIMER TIMER :流程:流程定时器定时器定时器表表2.2.99JBPM_TOKENVARIABLEMAP :流程TOKEN 变量MAP 表2.2.1010JBPM_MODULEINSTANCE :流程:流程模块实例模块实例模块实例表表2.2.1111JBPM_BYTEARRAY :文件模块形式的流程变量实例表12JBPM_BYTEBLOCK:2.2.12。
JBPM数据库表说明本文档将介绍JBPM(Java Business Process Management)中使用的数据库表以及表中的字段。
JBPM是一个用于开发和执行工作流程的开源业务流程管理系统。
它提供了一个可扩展的模型,允许用户在运行时修改流程定义。
JBPM使用关系型数据库来存储流程实例、任务、流程定义等信息。
数据库表说明在JBPM中,使用了以下数据库表来存储重要的流程和任务信息:1. jbpm_process_instance该表用于存储活动的流程实例信息,其字段包括:•id: 流程实例的唯一标识符•process_id: 流程实例所属的流程定义ID•process_version: 流程定义的版本号•process_instance_id: 实例的ID号•start_date: 流程实例的开始日期和时间•end_date: 流程实例的结束日期和时间•status: 流程实例的状态(例如:进行中、已完成等)2. jbpm_task_instance该表用于存储流程中的任务实例信息,其字段包括:•id: 任务实例的唯一标识符•task_name: 任务的名称•task_description: 任务的描述•task_assignee: 任务的责任人•task_start_date: 任务的开始日期和时间•task_end_date: 任务的结束日期和时间•task_status: 任务的状态(例如:待处理、已完成等)•task_priority: 任务的优先级3. jbpm_process_definition该表用于存储流程定义的信息,其字段包括:•id: 流程定义的唯一标识符•process_name: 流程的名称•process_description: 流程的描述•process_version: 流程的版本号•process_xml: 流程定义的XML表示4. jbpm_variable_instance该表用于存储流程实例中的变量信息,其字段包括:•id: 变量实例的唯一标识符•process_instance_id: 变量所属的流程实例ID•variable_name: 变量的名称•variable_value: 变量的值•variable_type: 变量的类型(例如:字符串、整数等)表关系•jbpm_process_instance表和jbpm_task_instance表通过process_instance_id字段进行关联,一个流程实例可能对应多个任务实例。
JBPM中表的含义(1)JBPM4_DEPLOYMENT、(2)JBPM4_DEPLOYPROP及(3)JBPM4_LOB:存储上传一个包含png和jpdl.某ml的zip包的相关数据jbpm4_deployment表多了一条记录jbpm4_deployprop表多了四条记录,对应langid,pdid,pdkey,pdverionjbpm4_lob表多了二条记录,保存流程图png图片和jpdl.某ml(4)JBPM4_HIST_PROCINST与(5)JBPM4_HIST_ACTINST分别存放的是ProceIntance、ActivityIntance的历史记录。
(6)JBPM4_E某ECUTION主要是存放JBPM4的执行信息,E某ecution机制代替了JBPM3的Token机制(详细参阅JBPM4的PVM机制)。
(7)JBPM4_TASK存放需要人来完成的Activitie,需要人来参与完成的Activity被称为Tak。
(8)JBPM4_PARTICIPATION存放Participation的信息,Participation的种类有Candidate、Client、Owner、ReplacedAignee和Viewer。
而具体的Participation既可以是单一用户,也可以是用户组。
(14)JBPM4_ID_GROUP(15)JBPM_ID_MEMBERSHIP(16)JBPM4_ID_USER这三张表很常见了,基本的权限控制,关于用户认证方面建议还是自己开发一套,JBPM4的功能太简单了,使用中有很多需要难以满足。
(17)JBPM4_JOB存放的是Timer的定义。
(18)JBPM4_PROPERTY。
JBPM数据库表说明1 流程配置类数据库表:
1.1 JBPM_PROCESSDEFINITION:流程模版表
1.2 JBPM_NODE:流程节点表
1.3 JBPM_TRA NSITION:流程迁移表
1.4 JBPM_ACTION:流程动作表
1.5 JBPM_EVENT:流程事件表
1.6 JBPM_DELEG A TION:流程代理类表(用于实例化jbpm中的action类)
1.7 JBPM_TASK:流程任务表
1.8 JBPM_TASKCONTROLLER:流程任务控制器
1.9 JBPM_VARIA BLEACCESS:流程变量表
1.10 JBPM_MODULEDEFINITION:流程模块定义表
1.11JBPM_EXCEPTIONHA NDLER:流程异常处理器表
1.12 JBPM_DECISIONCONDITION:DECISION节点判断条件表
1.13 JBPM_ SWINLA NE:DECISION节点判断条件表
2 流程运行类数据库表:
2.1 JBPM_PROCESSINSTA NCE:流程实例表
2.2 JBPM_TOKEN:流程TOKEN表
2.3 JBPM_LOG:流程日志表
2.4 JBPM_RUNTIMEA CTION:流程实时ACTION表
2.5 JBPM_VARIA BLEINSTA NCE:流程变量实例表
2.6 JBPM_COMMENT:流程备注信息表
2.7 JBPM_MESSA GE:流程异步消息表
2.8 JBPM_TOKENVARIA BLEMAP:流程TOKEN变量MAP表
2.9 JBPM_MODULEINSTA NCE:流程模块实例表
2.10 JBPM_BYTEARRAY:文件模块形式的流程变量实例表
2.11 JBPM_BYTEBLOCK:
2.12 JBPM_TASKINSTA NCE:。