工作流与JBPM开发实例精解
基于JBPM的工作流系统的设计与实现
流 程 管 理 是 生 产 组 织 和 办 公 自动 化 领 域 来 实 施 的 , 针 对 日常 工 作 中具 有 固定 程序 的 活 动 提 出 的方 法 。 目的是 通 过将 工作 划 是 分 成 定 义 良好 的角 色 与 任 务 , 照一 定 的法 则 和 过 程 来 执 行 这 些 已 经 安 排 好 的任 务 并 对 其 进 行 监 控 , 到 提 高 办 事 效 率 、 按 达 降低 生 产
中 图分 类 号 : 3 3 TP 9 文献标识码 : A 文 章 编 号 :0 9 3 4 (0 11 — 7 7 0 1 0 — 0 4 2 1 )6 3 9 — 2
De ina d I lme tto fW o k o M a a e e tS se Bae nJ M sg n mp e n ain o r f w n g m n y tm sd o BP l
ZH AO Yu-J a i o,ZH AO e W i
( ne fMo enE u ain W u a xi iesy, u a 3 0 2 Chn ) Ce tro d r d ct , o h nTe teUnv r t W h n 4 0 7 , ia l i
jBPM4.3简单深入理解(一)
jBPM4.3简单深入理解(一)工作流(系统)主要概念工作流引擎:工作流的核心组件,对流程实例、任务实例以及其状态进行管理流程定义:预先定义的业务流转逻辑流程实例:业务的一次实际流转过程参与者:任务的执行者活动(任务):组成流程定义的节点活动实例:组成流程实例的元素流转:从一个节点到另一个节点这一行为工作列表:当前需要办理的任务集合开发步骤1)根据实际应用场景创建流程文件;即编写*.jpdl.xml文件2)部署流程文件或流程资源到系统中;3)执行流程(使用指定的流程定义);3.1)启动流程实例3.2)获取任务3.3)开始任务3.4)结束任务3.1到3.4是办理一个任务的过程,流程的执行就是启动流程实例+一次次办理任务的过程。
流程在实际应用场景中的一些操作一.流程的定义管理流程定义的发布、查询、删除、暂停、恢复二.流程实例管理流程实例的启动、显示流程图、执行、暂停、恢复三.任务管理分配任务、收回任务、定时任务、任务与表单绑定四.流程的历史查询任务的历史、流程实例历史、活动历史---下面开始进行代码描述------在详细描述之前,我们先来了解一下流程引擎ProcessEngine引用One ProcessEngine object can be used by all reque sts and threads in an application. Here’s how you can obtain a ProcessEngine把这个交给spring去管理Java代码<beanid="springHelper"class="org.jbpm.pvm.internal.processengine.Spring Helper"/><beanid="processEngine"factory-bean="springHelper"factory-method ="createProcessEngine"/>我们需要的一些服务都是通过流程引擎得到的RepositoryService repositoryService = processEngine.getRepositoryService(); ExecutionService executionService = processEngine.getExecutionService();TaskService taskService = processEngine.getTaskService();HistoryService historyService = processEngine.getHistoryService();ManagementService managementService = processEngine.getManagementService();一.流程的定义管理1.1流程定义的发布(即部署流程文件或流程资源到系统中)流程定义*.jpdl.xml的内容可以从文件,网址,字符串,输入流或zip输入流中获得Org.jbpm.api.newdeployment代码public interface NewDeployment extends Deployment {.../** adds a resource as a string */NewDeployment addResourceFromString(String resourceName, String string);/** adds a resource as a string */NewDeployment addResourceFromInputStream(String resourceName, InputStream inputStream);/** adds a resource as a resource from the classpath */NewDeployment addResourceFromClasspath(String resourceName);/** adds a resource as a url */NewDeployment addResourceFromUrl(URL url);/** adds a resource as a zip stream */NewDeployment addResourcesFromZipInputStream(ZipInputStream zipInputStream);/** adds a resource from a file */NewDeployment addResourceFromFile(File file);...}在测试的时候Java代码ProcessEngine processEngine = new Configuration().buildProcessEngine(); RepositoryService repositoryService = processEngine.getRepositoryService();//布署当前目录下test.jpdl.xml文件String deploymentId = repositoryService.createDeployment().addResourceFromClasspath("test.jpdl.xml").de ploy();在我们实际应用中,addResourceFromInputStream和addResourcesFromZipInputStream运用较多。
jbpm工作流全程笔记
1. 工作流<1> 工作流(Workflow):就是自动运作的业务过程部分或整体,表现为参与者对文件、信息或任务按照规程采取行动,并令其在参与者之间传递。
简单地说,工作流就是一系列相互衔接、自动进行的业务活动或任务。
工作流是针对工作中具有固定程序的常规活动而提出的一个概念。
通过将工作活动分解成定义良好的任务、角色、规则和过程来进行执行和监控,达到提高生产组织水平和工作效率的目的。
<2> 工作流就是工作流程的计算机化,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。
工作流要解决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递文档、信息或者任务。
<3> 通俗的说,就是多个人在一起合作完成某件事情。
<4> 工作流可实现业务或公文的申请、审批、会签、登记、操作等环节的管理,可将工作过程进行记录,便于日后检查。
并实现数据的规范化录入、查询、统计和存档。
OA(办公自动化)主要技术之一就是工作流。
2. 工作流管理系统(Workflow Management System, WfMS)<1> 主要功能是通过计算机技术的支持去定义、执行和管理工作流,协调工作流执行过程中工作之间以及群体成员之间的信息交互。
工作流需要依靠工作流管理系统来实现。
<2> 工作流管理系统是定义、创建、执行工作流的系统,应能提供以下三个方面的功能支持:①定义工作流:包括具体的活动、规则等;②运行控制功能:在运行环境中管理工作流过程,对工作流过程中的活动进行调度;③运行交互功能:指在工作流运行中,WfMS与用户(活动的参与者)及外部应用程序工具交互的功能。
3. JBPM,全称是Java Business Process Management<1> JBPM是一种基于J2EE的轻量级工作流管理系统,jBPM是公开源代码项目, 官方主页为:/jbossjbpm<2> Jbpm的使用** 步骤* 编写流程定义(定义规则);* 部署流程定义到系统中;* 执行流程(使用指定的流程定义);①编写流程定义举例:员工报销费用的流程描述:员工需要先填写报销单据;交给其经理进行审批;审批(通过)后到财务去领款。
jbpm-工作流的基本操作
jbpm-⼯作流的基本操作删除流程实例:Jbpm流程引擎定义:jbpm,全称是Java Business Process Management(业务流程管理),他是覆盖了业务流程管理,⼯作流管理,服务协作等领域的⼀个开源的,灵活的,易扩展的可执⾏的流程语⾔框架作⽤:jbpm的流程框架⾮常灵活,使⽤起来也⾮常安全,降低开发的风险,同时jbpm拥有⾃⼰的图形化开发⼯具,⾮常⽅便随时了解和掌握运⾏的进程Jbpm的开发步骤:1、引⼊jbpm 4.4 jar2、引⼊jbpm.cfg.xml、jbpm.hibernate.cfg.xml核⼼配置⽂件如图:Jbpm.cfg.xml 配置:<?xml version="1.0" encoding="UTF-8"?><jbpm-configuration><import resource="jbpm.default.cfg.xml" /><import resource="jbpm.businesscalendar.cfg.xml" /><import resource="jbpm.tx.hibernate.cfg.xml" /><import resource="jbpm.jpdl.cfg.xml" /><import resource="jbpm.bpmn.cfg.xml" /><import resource="jbpm.identity.cfg.xml" /><!-- Job executor is excluded for running the example test cases. --><!-- To enable timers and messages in production use, this should be included. --><!--<import resource="jbpm.jobexecutor.cfg.xml" />--></jbpm-configuration>Jbpm.hibernate.cfg.xml 配置:<?xml version="1.0" encoding="utf-8"?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property><property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><property name="hibernate.connection.url">jdbc:mysql:///jbpm</property><property name="ername">root</property><property name="hibernate.connection.password">123456</property><property name="hibernate.hbm2ddl.auto">update</property><property name="hibernate.format_sql">true</property><property name="hibernate.show_sql">true</property><mapping resource="jbpm.repository.hbm.xml" /><mapping resource="jbpm.execution.hbm.xml" /><mapping resource="jbpm.history.hbm.xml" /><mapping resource="jbpm.task.hbm.xml" /><mapping resource="jbpm.identity.hbm.xml" /></session-factory></hibernate-configuration>Log4j.properties 配置:### direct log messages to stdout ###log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.erryout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### direct messages to file mylog.log ###log4j.appender.file=org.apache.log4j.FileAppenderlog4j.appender.file.File=c:/mylog.logyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### set log levels - for more verbose logging change 'info' to 'debug' ###log4j.rootLogger=info, stdout3、创建表结构(有18张表)4、/**5、 * 使⽤jbpm ⽅式创建表结构 18张表6、 */7、public void createTable()8、 {9、 org.jbpm.api.Configuration.getProcessEngine();}流程引擎的使⽤步骤:1 、部署流程实例:1、public void deploy()2、 {3、//通过Configuration 类构建流程引擎对象4、 ProcessEngine processEngine = Configuration.getProcessEngine();5、6、//获取RepositoryService 接⼝服务7、 RepositoryService repositoryService = processEngine.getRepositoryService(); 8、9、//发布的⽅式:零散发布10、 repositoryService.createDeployment()11、 .addResourceFromClasspath("jbpm_test.jpdl.xml")12、 .addResourceFromClasspath("jbpm_test.png")13、 .deploy();14、 }其他发布⽅式:2、启动流程实例:public void startProcessInstanceByKey(){//通过Configuration 类构建流程引擎对象ProcessEngine processEngine = Configuration.getProcessEngine();//获取ExecutionService 对象ExecutionService executionService = processEngine.getExecutionService();executionService.startProcessInstanceByKey("jbpm_test"); //key 默认为流程⽂件名称 }3、查询个⼈任务ProcessEngine processEngine = Configuration.getProcessEngine();TaskService taskService = processEngine.getTaskService();List<Task> list = taskService.findPersonalTasks("员⼯");for(Task t:list){System.out.println("任务编号:"+t.getId());System.out.println("任务名称:"+t.getName());}4、办理个⼈任务public void personalComplete(){ProcessEngine processEngine = Configuration.getProcessEngine();TaskService taskService = processEngine.getTaskService();pleteTask("50002"); //任务id}流程变量设置:public void taskComplete(){TaskService taskService = Configuration.getProcessEngine().getTaskService();Map<String, User> userMap = new HashMap<String, User>();User user = new User();user.setDay(2);user.setName("⼩明");userMap.put("user", user);//办理业务并设置流程变量taskService.setVariables("240002", userMap);pleteTask("240002");}流程引擎ProcessEngine 的六⼤服务接⼝:流程引擎processEngine 对象的获取:通过Configuration 类的构建如:ProcessEngine processEngine = Configuration.getProcessEngine();1、 RepositoryService 接⼝(流程资源服务):RepositoryService service= processEngine.getRepositoryService()作⽤:提供对流程的部署、删除、查询和流程图的查看操作。
jBPM4.4详细讲解
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工作流原理
jbpm工作流原理jbpm是一个开源的工作流引擎,它基于基于BPMN 2.0规范实现了各种工作流程的管理和执行。
jbpm的工作流原理可以简单概括为以下几个步骤:1. 流程建模:使用BPMN2.0规范的图形化编辑器,开发人员可以定义工作流的各个环节、流程和业务规则。
这些定义信息包括任务、网关、事件和连接线等元素,它们被存储在一个可执行的流程定义中。
2. 流程部署:将流程定义部署到jbpm的运行环境中,使之成为可执行的流程实例。
部署可以通过API接口、命令行工具或Maven插件完成,部署后的流程定义被存储在jbpm的数据库中。
3. 流程实例化:根据流程定义创建流程实例。
每个流程实例都有一个唯一的标识符,它可以根据流程定义的启动事件(如消息、定时器或手动触发)进行创建。
在创建流程实例时,初始任务会被定义并分配给相应的参与者。
4. 任务分配和执行:当流程实例创建后,相关任务会被分配给参与者进行执行。
参与者可以是使用jbpm的应用程序用户,也可以是外部系统或服务。
任务执行者可以根据任务的名称、优先级和截止日期等信息来安排任务的执行顺序和执行者。
5. 事件触发:在流程执行过程中,各种事件(如信号、定时器或消息)可以触发对应的行为。
这些事件可以触发流程的跳转、审核、撤销等操作,从而实现复杂的业务逻辑。
6. 流程控制:jbpm提供了不同的控制结构,如顺序流、并行网关和条件网关等,用于定义流程的流转和跳转条件。
流程的控制结构可以根据业务规则和条件对流程的执行路径进行动态决策。
7. 流程监控和管理:jbpm提供了流程实例的监控和管理功能,可以实时跟踪和监控流程实例的状态、任务和执行情况。
通过集成jbpm的Web控制台或API接口,管理员可以对流程进行管理、跟踪和优化。
总的来说,jbpm的工作流原理是基于BPMN 2.0规范的流程定义和流程实例化,通过任务分配和执行、事件触发和流程控制等过程来管理和执行工作流。
这种基于规范和可视化的方式使得jbpm更加灵活和可维护,适用于各种复杂的业务场景。
基于工作流管理系统JBPM的研究
舞 墨
图2 简 单请 假流 程
个新 的流程 对 象 。这 需要 为流 程 定义对 象 增加 一 个版 本属 性 来表示 同名流 程 的不 同版本 。
和 大 部 分 wb 用 一 样 ,系 统 和 用 户 交 互 是 通 过 表 单 来 实现 的 。在 e应
JP 中称 为活动 表 单 。每 个用 户 登录 系统 后 ;系 统都 要获 取 该用户 的任务 BM 列 表 ,获 取 的方 式就 是 查询 令牌 对象 。at r i属性 为该 用 户的 所有 令牌 c o d
序 ,是一个 集群 JE 应用 。 图1 出了JP 的 内部 结构 。 2E 给 BM
J P 流程 引 擎 BM 程客 户 、
\ 、
— — — — —
到我 们 先前 持 久化 到数 据 库里 的那 个流 程 定 义对 象并 把它 导入 到 内存 中。 随 后根 据 该流程 定义 对象 的信 息获 得 活动 表 单 ,生 成对 应的h m空 间 显示 tl 给用 户 ,在这 里就 是请 假 申请等 输入 框 。当A 写后提 交 ,然后用 户P 处理 填 M 这 个流 程 。在 这个 过程 中引擎 生 成一 个流 程 实例 , 因为流 程 定义对 象 只是
《 № 歙 No do ,
工作 流技 术发 端于 1 7年代 中期办 公 自动化 领域 的研 究 工作 ,是近 年 90
绉
来 计算 机 应用 技 术与 信 息技 术领 域 最具 发展 潜 力 的方 向之 一 。IP ,全 称 TM B
是J v u i e s P o e s M n g m n ,是 一 种基 于 J E 的轻 量 级 工作 流 a a B s n s r c s a a e e t 2E 管理 系统 。
基于JBPM与JPDL的工作流管理系统的研究与设计
me tc SSa di r v o waed v lp n f ce c n O t n mp es f r e eo me te in y,i rv y tm e a it o t i mp o e ss e rusbly-saa i t d manan bly. i c lbly a itia it i n i
Ke r s:BP ;PDL; r l w a a e n y t m y wo d J M J wo kf o m n g me ts se
0 引 言
工作流 的定义 : 工作流是一种经营过程 , 它可 以 按照一定 的规则完全或者部分 自动化 执行 。在工作流 中定义 了许 多任务 的触发顺 序以及触发的条件 。每个
任务可 以是 由一个 或者 多个软 件系 统来完 成 , 可 以 也
业级应用 系统 时 , 能将 复杂 的工作 流程从 业务 逻辑 中 分离 出来 , 从而 引出了对工 作流管 理 系统 的研 究 和探
性 和可维 护 性 。 关键 词 : P JD ; J M; P L 工作 流管 理 系统 B
中图分 类号 :P l . T 3 15 文献标 识码 : A 文章 编 号 :6 3 6 9 2 1 ) 8 0 5 — 4 1 7 — 2 X(0 1 0 — 0 0 0
S u y a d De in o o k o M a a e n y tm t d n sg fW r f w n g me tS se l
第2 1卷 第 8 期
2 1 年 8月 01
计 算 机 技 术 与 发 展
C OMP r U ER ECHNOL T OGY AND DEo 8 1 21 . Aug 2 . 011
基于 J P 与 J D B M P L的 工作 流 管理 系统 的 研 究 与 设 计
JBPM——一个开源的J2EE工作流管理系统
55H
!
微! 处! 理! 机
客户端浏览器 (如常见的 "# 等) 4 应用服务器 $%& 容器 ( ’%()*%+, ,’-) #,. 容器 ’%//012 .%32 4 40&%(23+% 数据库映射 4 工作流数据库
:J JK 年!
,.-6 的过程建模采用的是改良了的 E6= 活动图。 做了两点改良, 一是在用 E6= 活动图表述业务流程 时, 只建 模状 态层 ( 状 态和 控制 流) , 不 包括 动 作 ( E6= 活动图没有区分状态和动作, 它们都用活动 来表示) 。二是如果多个迁移到 达一个状态, 缺省 定义为不需要同步的合并 ( E6= 活动图中默认是需 要同步的联合) 。 ,.-6 定义了自己的流程定义 语 言 F-B*, 用它 来精确描 述 E6= 活动 图的每 一个 部 分。它也是 G6= 格式的。 状态是业务流程的基本元素, 状态代表了一种 对外部参与者 ( 3A+1( ) 的依赖。状态的意思就像 “现 在 G 系统或某某人必须作某些事, 在此等待直到参
/ ! 简! 介
工作流技术是在上世纪九十年代发展起来的一 门新兴研究方向, 是近年来计算机应用技术与信息 技术领域最具发展潜力的方向之一。工作流管理联 [ 1] 盟 ( 7R"$ ) 给出的工作流定义是 : 工作流是一类 能够完全或者部分自动执行的经营过程, 它根据一 系列过程规则、 文档、 信息或任务能够在不同的执行 者之间进行传递与执行。7R"$ 还给出了工作流管 理系统的定义: 工作流管理系统是一个软件系统, 它 完成工作流的定义和管理, 并按照在计算机中预先 定 义 好 的 工 作 流 逻辑 推 进 工 作 流 实 例 的 执 行。 *+’", 全称是 *FVF +;M=>DMM ’GIHDMM "F>F?D<D>K, 是 一个开放源代码的基于 *,(( 的轻量级工作流管理 系统。由于 *+’" 功能足够, 结构、 配置以及定义工 作流简洁清晰, 因此就结合 *+’" 来谈谈工作流管 理系统, 重点是工作流引擎的运转过程。
基于JBPM的工作流管理系统中业务流程的研究与应用
关键 词 : 作 流 引 擎 ; B M ; 程 这 个 信 息 化 高 度 发 展 的社 会 .实 现 办 公 自
动 化 渐 渐 成 为 国 内外 众 多 企 业 、 府 、 务 性 行 业 的首 政 服 选 目标 .即 通 过 办 公 自动 化 来 实 现 各 部 门企 业 之 间 的
基于 J P 的工作流管理 系统 中业务流 程的研 究与应 用 B M
张豪 月 , 傅 秀芬 , 赵亚齐
4 19 ) 5 1 1
★
( . 东 工 业 大 学 计 算 机 学 院 ,广州 5 0 0 ; . 1广 1 0 6 2 中原 工 学 院信 息 商 务 学 院 ,郑 州
摘
要 :介 绍 工 作 流 技 术 的概 念 , 以及 一种 灵 活 的 工 作 流 引 擎 J P , J P 的 主 要 特 点 、 程 的 BM BM 流
定 义 、 署 做研 究 , 应 用到 广 东电信 骨 干 库 管 理 系统 中的 专 家评 审 功 能 中 , 用 J P 的 部 并 使 B M 业务 流程 管理 技 术进 行 系统 业 务 流程 的 分 析 、 计 , 效 地提 高 系统 的 开 发 效 率 , 设 有 实现 专 家 在 异 地 共 享信 息 、 审 骨 干 方 面 的 灵 活 性 。 评
得 更 加 科 学 化 、 范 化 规 . P 是 由 J OS I M B B S开 发 的 一 个 灵 活 且 功 能 强 大 的 业 务 流 程 管 理 引 擎 . 称 是 J v U iesPo esMa . 全 a aB Sn s rc s n a e n( 务 流 程 管 理 )它 是 覆 盖 了业 务 流 程 管 理 、 gme t 业 , 工
作 流 和 业 务 流 程 管 理 系 统 提 供 了一 个 先 进 的平 台 . 由 A I特 定 领域 的 语 言 和 图形 建 模 工 具 组 成 的框 架 让 开 P、
JBPM工作流表结构的详解
注:红色的表为经常使用的表.这里不使用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的历史记录。
jbpm4工作流详解
jbpm4⼯作流详解jBPM4的学习流程 1>jBPM4通过org.jbpm.pvm.internal.ant.JbpmDeployTask通过读取jbpm.cfg.xml中的JDBC数据连接信息 2>对jbpm4的数据库表简单介绍 3>通过ProcessEngine类的贯穿来获取服务接⼝(Service API)来认识所有的常⽤类 4>对流程定义语⾔中活动⼏个常⽤的介绍 5>事件的介绍 JBPM:部署流程定义 jBPM4通过org.jbpm.pvm.internal.ant.JbpmDeployTask通过读取jbpm.cfg.xml中的JDBC数据连接信息直接将业务流程部署到数据库中。
它不仅可以部署单个业务流程,也可以部署⼀组业务流程归档到服务器上。
jbpm⾸先扫描业务流程归档中所有以.jpdl.xml结尾的⽂件,并解析,然后⽤来发起流程实例,业务流程归档中所有其他资源也会在部署过程中被持久化到数据库中。
所有这些资源被统⼀编号保存在数据库表jbpm4_lob中我们可以通过jbpm4提供的RepositoryService.getResourceAsStream API随时访问这些资源。
jbpm4的数据库表简单介绍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 上下⽂表(1)JBPM4_DEPLOYMENT、(2)JBPM4_DEPLOYPROP及(3)JBPM4_LOB:存储上传⼀个包含png和jpdl.xml的zip包的相关数据 jbpm4_deployment表多了⼀条记录 jbpm4_deployprop表多了四条记录,对应langid,pdid,pdkey,pdversion jbpm4_lob 表多了⼆条记录,保存流程图png图⽚和jpdl.xml (4)JBPM4_HIST_PROCINST与(5)JBPM4_HIST_ACTINST 分别存放的是Process Instance、Activity Instance的历史记录。
基于JBPM的企业业务流程开发
关 键词 : 工作 流 ;B M; 用 JP 应
Ke r s w r f w; B M; p l ain y wo d : o k o J P a p i t l c o
中图分类号 :P 9 T 3
文献标 识码 : A
( 珠海 格 力 电器 股份 有 限公 司 , 海 5 9 7 ) 珠 10 0
( reE et cAp l ne , c o h h iZ u m 51 u a, h h 7 C ia i a n Z 9
摘 要 : 企业 的 不断发展 , 随着 流程 越 来越 复 杂 , 程 的 变动也 很频 繁 。Jp 流 b m为设 计 和 开发 工作 流 和 业务 流程 管 理 系统提 供 了先 进 的平 台, 并且 改动 流程 只需要 改动 流程描 述 文件 。Jp bm提 供 的 图形流程 设 计 器让开 发人 员和 业 务分析 人 员 更容 易沟通 和操 作 。
文 章 编 号 :0 6 4 1 (0 0)5 00 一 1 10 - 3 12 1 1— 0 3 O
J os B M 充 当 编 制 引擎 , 位 于 企 业 应 用 的 中 间 , B s iP 它 能够 实 现 工 作 流 管 理 和 业 务 流 程 管 理 ( P 正 在 迅 速 成 为 企 业 获 得 软 不 同应 用 之 间 的集 成 和 协 调 。 以简 单 的请 假 流 程 为 例说 明 。 B M) 件敏 捷 性 和 适 应 性 的 重 要 方 法 。 B s P 是 一 个 面 向流 程 的 工 作 J os B M i 1 请 假 流 程 定 义 流/P B M框架和工具集 ,它使业务分析人 员能够 与软件 组件进行交 < x e so = 10 n o i g ” F ” > ? mlv ri n ” . ”e c d n = UT -8 ? 互 、 助 于 获得 有 效 的业 务 解 决 方案 。 有 < rcs e = l v ”nme ” ae mn = ht: b m.g4 / poesky ” ae a = l v”x ls ”t / p o /. e e p/ j r O 许 多企业在积极寻 求一 种结构化方法 ,以便设计 业务动作/ jd” 事 p l > 务, 并且优先使用 自动化流程加 以执行。业务流程 管理 和工作流管 <trg ”9 ,5 84 ”nme ” 始 ” s t =4 3 , , a 4 4 8 a =开 > 理使用动作、 任务和流程等概念 , 提供 了解决这个 问题的办法。 <rnio - 9一 2 n m : t ec s e ” o ” t sing " 7 ,2 ” a e ” xl i 1 t 判断 ” a t o uv = / > JP 架构综述 : BM < sa > /t r t JP B M体现为三个不同的实践 : 流程设计 : ① 通过流程设计器 画 < eio = 4 31 1 8 8 n m = 判 断” dcs ng ”9 ,4 , , ” a e ” i 44 > 流程 ; 主要是 实现对流程的定义。 ②流 程执 行 : 执行 自动化序列的相 <rnio - 3一 2 a e ” a ae” o ” 部 门 经理 t sing "7 ,2 ”nm = t m n gr t- a t o 关事件 , 这些事件涉及软件流程 以及流程的参与者。 ③流程监控 : 监 审批 ” > 控 每 个流 程 实例 的执 行 , 这 些 流 程 的统 计 数 字 和 性 能 可 以记 录 以便 < odt nep= #d y&I = 1 > cn io xr” {as t 2. i ; 1 / </r nsto ta iin> 等, 以便 分析流程是否有异常等。 <rnio - 5- 2 n m = t nun o ” 分 管 经理 t si g ” 7 ,2 ” a e ” f ga ”t= a tn oe B M 力 求 让软 件 工 程 师们 能够 与 业 务 分析 人 员 共 享 同样 的概 P 念和框架 , 因而 , 件开 发商试 图创建 这样 的工 具 , 软 让企业可 以通过 审批 ” , > < d cso > / e ii n 使用 图形建模 工具 、 特定领域的语言和专有应用软件 , 取、 获 设计及 优化业务流程。 <tt g ”2 ,4 ,2 2 n m = 销 假 ” s e = 5 6 79 , ” a e “ a 5 5 > JP B M在 以下组件里 面进行封 装: 流程 引擎: ① 该组件 通过 下 列 委 托 组 件 来 执 行 定 义 的流 程 动 作 、 持 流 程 状 态 , 记 录 所 有 流 维 并 <rnio - 0一 2 a : t ed ” o ” 束 ” t sing " 5 ,2 ”nme ” n l t= 结 a t o , > < sae /t t> 程 事 件 : 求 处理 程 序 、 态 管 理 程 序 、 请 状 日志 管理 程 序 、 义 加 载 程 定 序、 执行服务。②流程监管器: 该模块£ 踪、 艮 审查及报告流程 在执 行 < n = 2 3 3 ,8 8 n m = 结 束 ” edg ”7 , 94 , ” a e ” 5 4 / >
基于J2EE开源工作流引擎JBPM的设计实现
第2 7卷第 4期
2008年 1 2月
计 算
技
术
与 自 动
化
Vo , 7, 1 2 No. 4 De .2 0 0 8 c
C mp t g Te h o o y a d Au o t n o u i c n l g n t ma i n o
jbpm (2)
描述整个流程 容称为流程定义文档
jbpm引擎: * 把流程定义语言部署到引擎中 * 启动流程实例 * 申请 * 审批
重点)
hibernate db
流程定义语言 *.jpdl.xml 结构化的描述整个流程 *.png 用于查看 上述的两个内容称为流程定义文档
jbpm: * * *
画流程定义图及xml文件 jbpm的API 学习jbpm的数据库的结构(重点)
pdkey、pdid、流程定义、piid
jbpm(工作流框架): * 画请假流程的流程图(eclipse的插件) * 把流程图部署到jbpm的流程引擎中 * 启动流程实例 * 某一个班的学生请假 * 审批
不批准 纯属扯淡,上课去吧 整个流程结束
* CEO审批
批准
OK,不差钱,给15W,还20W
不批准 马上就业淡季了,好好学习吧
说明: 如果当前代课老师正在进行审批,那么ceo是看不到这件事情的
工作流的意义: * 对于一个特别复杂的流程,能做到很精确的控制 * 在流程实例中产生的数据可以查询统计用
应用程序
工作流的步骤:
* 制定请假流程
* 开新闻发布会,宣布流程正是生效
* 启动流程
* 某一个班的某一个学生请假
* 请假天数 7天
* 约会
爱琴海
* 申请经费 由于没钱,所以申请,等找到工作以后还款,
申请10W,每月换1000,分9年还完,利息另计
* 当前的代课老师审批
批准 OK,但是钱的问题在我这解决不了,得里活命同意
bpm(业务流程管理): business process management jbpm:jboss business process managerment pdl:process definition language(流程定义语言) jpdl:jboss process Definition language
开源工作流管理系统jbpm的应用研究
开源工作流管理系统jbpm的应用研究摘要:工作流管理系统是支持企业经营过程高效执行并监控其执行过程的计算机软件系统。
结合工作流和软件项目开发经验,介绍了工作流及其相关概念、jbpm基本知识和运作原理,使读者对jbpm有一个清楚的了解。
关键词:工作流;jbpm;工作流管理系统;工作流引擎jbpm作为Java程序完全符合JavaEE标准;处理流程定义和运行时的流程实例执行。
可以用在任何Java环境(Web 应用程序,Swing应用程序,EJB等等)。
采用典型的三层结构,即客户端,应用服务器和数据库。
客户端使用的的Web浏览器。
应用服务器一般采用开源代码的JBoss,tomcat等,jbpm的持久化层用Hibernate实现,可以同任何数据库配置可以部署在任何应用服务器上,只要是Hibernate支持的数据库管理系统都可以用来访问。
JBMP的整体系统结构可细分为五层,分别是浏览器层:通过友好的Web接口,分级别地给用户提供不同的业务功能,并提供图形化的显示来描述整个工作流以及工作流的当前执行位置,这里按级别指的是权限级别,例如管理员,普通用户等。
Web容器:对客户端的请求进行处理和响应,包括servlet或者Strutsaction的触发,jsp页面的编译等。
Session Bean层:使用的是facade模式,向上以会话EJB的形式提供服务,封装了对数据库的具体操作。
数据库映层:Hibernate 提供了对底层数据库的访问和操作。
数据库:存储了工作流管理系统的所有相关信息,如节点,活动,事件的信息等等。
各层界限清楚,分离明确,只有相邻层产生相互联系和作用。
系统结构图如1所示:图1开源工作流管理系统结构2工作流引擎2.1工作流引擎运作过程所谓工作流引擎就是工作流作为应用系统的一部分,并为之提供对各应用系统有决定作用的根据角色、分工和条件的不同决定信息传递路由、内容等级等核心解决方案。
运作过程如2所示。
jBPM Web Designer(jBPM Web 设计器、jBPM 流程设计器、工作流程设计器)
jBPM Web Designer(jBPM Web 设计器、jBPM 流程设计器、工作流程设计器)支持不同格式日期字符串自动解析的日期工具 ...2010-01-25jBPM Web Designer(jBPM Web 设计器、jBPM 流程设计器、工作流程设计器)文章分类:Web前端研究jBPM已有一段时间了,今天终于决定拿点东西出来,但请大家原谅不能分享源码。
之所以拿出来,希望通过交流认识到更多技术一线的同志们,结点人缘。
本人不才只念完了高中,求职路屡战屡败,只好踏实地弄点东西出来撑下门面,希望有所帮助,找到一份满意的工作。
大多研究JBPM的,对其引擎的扩展开发都不曾苦恼,但提及其可视化设计工具都希望能有一款WEB版设计器。
苦恼过后,便有了开发设计器的冲动。
首先通过网上找到的WEB流程设计工具,多半是非流程研究人员的产品,拿来用要经过大量的修改,不太可取,也不容易修改,参考倒是有些价值,在此谢过;另外由于刚学会了JavaScript在页面实现的拖曳功能。
鉴于此便开始了行动,现在想想还有些大胆。
由于一直没抽出时间来,拖了两个多月,终于写下了这篇文章。
基于javaScript+css+vml的jBPM web designer,由于使用了vml只支持IE 浏览器(IE5+),其中没有使用任何javaScript开发框架,但模仿了extJs框架的css界面风格。
开发过程中参考了extJs、prototype、jQuery等javaScript开发框架;参考了jBPM designer eclipse 插件;参考了shine Workflow Designer截图、以及圈子中shappy1978贴出来的截图(当时还回帖希望这位大哥分享源码,结果失望,也就狠下心来独干,造自己的轮子);还参考了webflow、XiorkFlow、EMSFlow(applet)等,XiorkFlow是早期看过的流程设计工具。
JBPM工作流详解
工作流(JBPM)详解1工作流基础1.1.工作流相关概念工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。
通俗的说,流程就是多个人在一起合作完成某件事情的步骤,把步骤变成计算机能理解的形式就是工作流。
工作流管理系统(WfMS,Workflow Management System)的主要功能是通过计算机技术的支持去定义、执行和管理工作流,协调工作流执行过程中工作之间以及群体成员之间的信息交互。
工作流需要依靠工作流管理系统来实现。
工作流管理系统是定义、创建、执行工作流的系统,应能提供以下三个方面的功能支持:1.定义工作流:包括具体的活动、规则等2.运行控制功能:在运行环境中管理工作流过程,对工作流过程中的活动进行调度3.运行交互功能:指在工作流运行中,WfMS与用户(活动的参与者)及外部应用程序工具交互的功能。
一、定义工作流二、执行工作流采用工作流管理系统的优点1.提高系统的柔性,适应业务流程的变化2.实现更好的业务过程控制,提高顾客服务质量3.降低系统开发和维护成本工作流框架有:Jbpm、OSWorkflow、ActiveBPEL、YAWL等OA(办公自动化)主要技术之一就是工作流。
1.2.开源工作流jBPM4.4介绍jBPM 即java Business Process Management,是基于java的业务流程管理系统。
jBPM是市面上相当流行的一款开源工作流引擎,引擎底层基于Active Diagram 模型。
jBPM4.4使用了hibernate(3.3.1版),因此可以很好的支持主流数据库。
jBPM4.4共有18张表。
jBPM官方主页:/jbpm2.准备jBPM4.4环境2.1.jBPM4.4所需环境jBPM requires a JDK (standard java) version 5 or higher. /javase/downloads/index.jspTo execute the ant scripts, you'll need apache ant version 1.7.0 or higher: /bindownload.cgi2.2.下载相关资源1,jBPM下载地址:/projects/jbpm/files/2,Eclipse下载地址( Eclipse IDE for Java EE Developers (163 MB),Version:3.5 ):/downloads/download.php?file=/technology/ epp/downloads/release/galileo2.3.安装流程设计器(GPD,Eclipse插件)GPD(Graphical Process Designer)是一个Eclipse插件。
基于jBPM的工作流技术在银行票据交换系统中的应用
杜 绝金融案 件的发生 ,加速资金 周转 以提高社 会经济 的充分利用 。由于工作流 管理 系统具有较好 的柔性 和
效益 ,为客 户提供优 良的金融服 务 ,是各家 商业银行 开发性 ,因此 ,可 以保障信 息系统顺利地扩展 以满 足
急需解决的现实问题 。
器) 即为解 决这 一 问题 而 提 出的设计 模式 。本应 用也 秉持这 一设计理念 ,系统架构分为三 层 :第一层是 页 面表 示层 ,全部 由J P 件生 成We 页 ;第二 层为应 S文 b 用逻辑 层 ,建立在 第三层的基础上 ,工作流 引擎位 于
这 一层 ,并 由工作 流 引擎调 用的若 干 J v 对 象作 具 aa 体 的业务逻辑操作 ,为表现层 的表单 业务对象提供逻 辑 判断 、事务操作及 流程控制服 务 ;第三层为数据 抽
<? m l e so =” . ”e c d n = UTF ” > x ri n 10 n o i g ” v 一8 ? <r oot ont i r —c a ne na e m =” l5” W i h=” 092” S dt l
h i h =’ 9 9 > eg t ’ 2 ” 1
l 发 \ plao ee p et l j A pct nD v l m n \ i i o
基于 的工作流技术在银行票据 j BM P 交换系统中的应用
中国建设银行股份 有限公 司新疆 分行 林 强 东
随着我国经济的快速发展 ,商业银行之间竞争 日趋 各类信息在参 与处 理的各个 岗位 间传递共享 ,完成协 激烈 ,在加强 自身风险防范意识 ,不断完善各类规章制 同处 理 。
对账 单的j P E 流 由2 配置文件定义 处理流 B MS 作 个 jP B MI作流 ,建立了完善 的多种票据业务的综合处 理 程 ,g dx 和p o es eiio .ml p .ml 应 1 图 p .ml r csd f I nx 。g dx 对 ni 个
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.工作流与JBPM 开发实例前几天发了一篇文章,没几个人看也没人留言,看来我这功夫差的还是远啊,今天来一个实际点的吧。
可能上回的废话太多。
说说这个jbpm应该怎么来用。
首先当你想学一个框架的时候一定是你要有项目来用他了,OK,那么你项目当中的流程是什么你应该清楚吧,那么当你清楚了这些的时候我们就开始我们这个最简单的例子吧。
假如我们现在有这么一个例子,公司员工想报销点出差费,那么他要将他的申请提交给他的第一级领导——部门主管去审批,然后部门主管审批完了之后还要交给这个部门主管的上级公司老总进行审批。
那么针对这个简单的流程,我们应该从哪里下手呢?首先第一件事情就是写流程定义文件,那么这个文件我们用什么来写呢,他就是一个符合某个语法的xml文件,幸运的是jbpm给我们提供了一个集成的开发环境让我们来用。
首先去官网上下一个jbpm-jpdl-suite-3.2.GA包,解压后你会发现他里面有一个designer文件夹,那个里面就是我们写流程定义文件的开发环境,他是一个eclipse的插件,但是好像他给我们的那个eclipse版本有问题,建议大家从新下一个eclipse-SDK-3.2.1-win32.zip这个版本的eclipse,然后覆盖他给我们提供的那个。
准备工作做完了,那么我们就开始吧,首先我们打开解压目录下的designer 文件夹中的designer.bat文件,他弹出一个eclipse,然后我们就用这个东西来开发我们的流程定义文件了。
打开之后你就会看见一个他的小例子,不过我们不去用他,我们自己新建一个工程。
右键-new-other-jBoss jbpm-process project。
这个时候你会看见他弹出一个对话框,输入你的工程名字,然后点击next,这个时候你会发现他已经把jbpm加载进去了,记住要选中Generate simple ......。
工程建立完了,我们开始建立我们的流程定义文件。
在工程里面你会发现src/main/jpdl这个source folder,然后你会看见他里面已经有了一个流程定义文件了,但是我们不去用他的,我们自己建立一个,右键src/main/jpdl,然后new-other-jBoss jbpm-process definition。
这个时候他就会弹出一个对话框,起一个你要写的流程定义文件的名字输入进去,OK,可以了。
这个时候你打开你建立的那个文件夹,里面就有processdefinition.xml文件,ok,打开他。
在右面的图里面你就可以看到一张什么都没有的白纸,我们看看这部分左面的那些东西,什么start啊,end啊,tasknode啊,fork啊,join啊。
那我们来解释一下这是个什么东西呢,我们看看我们的需求,员工要写一个报销单,然后交给部门主管来处理,那么部门主管就应该算是一个tasknode,他就是一个任务节点。
start和end其实就是一个虚状态,当我们写完报销单的时候我们就提交了,这个时候他就到了第一个tasknode这个节点了。
然后他审批完了还要交给总经理审批,那么他又是一个tasknode,然后总经理审批完了结束,ok,是一个end。
start--》tasknode(部门主管审批)--》tasknode(总经理审批)--》end。
如果觉得看的有点模糊可以看看我传上来的那个图。
然后你在这个试图框的下面可以看到有个source,点击一下,就会发现他已经自动的给你生成xml代码了。
但是这样还是有点不够,我们只是定义了一个tasknode节点,并没有定义tasknode节点的任务由谁来做。
那么我们还要定义一个tasknode节点是由谁来做的:那么这段代码是这么写的:Java代码1.<?xml version="1.0" encoding="UTF-8"?>2.3.<process-definition4. xmlns="" name="test1">5. <start-state name="start">6. <transition name="" to="部门经理审批"></transition>7. </start-state>8. <task-node name="部门经理审批">9. <task>10. <assigment actorId="部门经理"></assigment>11. </task>12. <transition name="" to="总经理审批"></transition>13. </task-node>14. <task-node name="总经理审批">15. <task>16. <assigment actorId="总经理"></assigment>17. </task>18. <transition name="" to="end1"></transition>19. </task-node>20. <end-state name="end1"></end-state>21.</process-definition>这样的话我们的流程定义文件就定义完了,但是这只是把文件定义完了,系统并不知道啊,所以我们还要把我们的文件部署到系统中去,那么这个过程是这样的:首先我们在src/main/java里面新建立一个包,然后建立一个class,随便起个名字,就叫TestJBPM_01吧,那么在这个类里面我们要做的是什么呢?我们要先导入表,因为jbpm要运行就要用到很多个表,ok,那么我们这个里面导入表和hibernate导入表是差不多的,它的代码是这样的:Java代码1.package com.jbpm.test;2.3.import junit.framework.TestCase;4.5.import org.jbpm.JbpmConfiguration;6.7.public class TestJbpm_01 extends TestCase {8.9. public void testJbpm(){10.11. //创建jbpm数据库表。
他就像hibernate里面的哪个export一样。
实际上他就是hibernate里面的哪个export。
12. //应为他映射了很多个表,所以我们就能创建那么多个表。
13. JbpmConfiguration.getInstance().createSchema();14.15. }16.}然后呢我们就开始部署我们的流程定义文件,我们将这个文件当中的内容呢放到数据库当中去,当我们以后再用的时候呢我们就随时的将它加载出来。
Java代码1.package com.jbpm.test;2.3.import junit.framework.TestCase;4.5.import org.jbpm.JbpmConfiguration;6.import org.jbpm.JbpmContext;7.import org.jbpm.graph.def.ProcessDefinition;8.9.public class TestJbpm_02 extends TestCase {10.11. //jbpmConfiguration对象的创建12. static JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();13.14. public void testJbpm(){15.16. //然后我们把processDefinition里面相关的对象持久化到数据库里面去。
17. //流程定义文件里面有很多个概念,他有node,有transition,还有processDefinition,那么我们不需要一个18. //一个保存,jbpm把保存这么多对象的方法封装成一个接口,叫做deployProcessDefinition。
我们只要调用这个19. //方法,传一个processDefinition对象,我们就能将他们存入到数据库里面去。
20.21. //这个首先第一步我们要得到一个processDefinition对象,然后我们把他部署到流程中去。
22. ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("testJBPM/testJbpm.xml");23. //我们要存就必须获得一个session对象,而jbpm已经把session对象封装到一个JbpmContext对象里面了。
24. //那么这个jbpmContext对象是怎么得到的呢,我们要先有一个jbpmConfiguration对象,我们要对数据库进行25. //操作的时候一定要有jbpmConfiguration这个对象,用他来创建一个类似于hibernate当中的session一样的26. //对象——jbpmContext。
他是我们对数据库所有的操作的一个接口。
27. JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();28. try{29. //然后部署的操作已经由jbpmContext给我们创建好了,我们只需要调一下他的一个方法就可以了。
30. jbpmContext.deployProcessDefinition(processDefinition);31. }finally{32. //最后我们还要对他close一下,就像我们用hibernate的时候要close session一样。
33. jbpmContext.close();34. }35. }36.}Ok,第二步我们也做完了,那么现在我们开始做第三步,也就是说,我们流程定义文件写好了,现在我们的系统当中有了这样一个报销流程,那么就开始实际的去用她吧,一个人小报销了,那么她就要写一个报销的申请,但是这个报销的申请写完了存到数据库当中了还不能算完了,应该和我们的这个流程关联起来啊,那么她应该怎么去关联呢,嘿嘿,是这样地:我们在建立这个申请单这个类的时候应该定义一个processInstanceId属性,她是一个long型的,她就记录这我们的这个流程实例的id,那么什么是流程实例(processInstance)呢,她是我们工作流当中第二重要的概念,他和流程定义的关系就相当于对象和类之间的关系,类是一个抽象的东西,她定义完了是什么也干不了的,要想用她内部定义的东西我们就要new出一个实例来,当然这个里面也是这样的。