jBPM开发入门指南
jbpm详细教程
JBPM开发指南BSTEK2007年7月目录一、概述 (4)二、第一个流程 (5)2.1、开始前的准备 (5)2.2 、Hello World 例子 (6)三、学习JPDL (11)3.1 、简介 (11)3.2 、流程版本(Version) (11)3.3 、流程定义 (12)3.3.1 process-definition(流程定义) (12)3.3.2 node(自动节点) (13)3.3.3 start-state(开始状态) (13)3.3.4 end-state(结束节点) (14)3.3.5 state(状态) (14)3.3.6 task-node (任务节点) (15)3.3.7 fork(分支) (16)3.3.8 join(联合) (17)3.3.9 decision(决策) (18)3.3.10 transition(转换) (19)3.3.11 event(事件) (20)3.3.12 action(动作) (20)3.3.13 script(脚本) (22)3.3.14 expression(表达式) (23)3.3.15 variable(变量) (23)3.3.16 handler(句柄) (23)3.3.17 timer(定时器) (24)3.3.18 create-timer(创建定时器) (25)3.3.19 cancel-timer(取消定时器) (26)3.3.20 task(任务) (26)3.3.21 swimlane(泳道) (27)3.3.22 assignment(委派) (28)3.3.23 controller(控制器) (29)3.3.24 process-state 子流程 (29)3.3.25 sub-process 子流程 (30)3.3.26 condition 条件 (30)3.3.27 exception-handler 异常处理 (31)小结 (33)四、流程中任务的分配 (37)4.1 assignment-handler方式的任务分配 (38)4.2 swimlane方式的任务分配 (39)五、JBPM持久化 (42)5.1 特殊数据库支持 (42)5.2 JBPM数据库的安装 (42)5.2 JBPM流程发布 (45)5.2.1 搭建JBPM的WEB应用 (46)5.2.2 发布第一个流程 (48)六、日历(Scheduler) (54)6.1 Scheduler在C/S程序上的应用 (54)6.2 Scheduler 在Web上的应用 (57)6.3 Scheduler时间的分类 (60)七、异步执行 (63)八、JBPM流程建模与应用 (64)8.1 JBPM的建模工具 (64)8.1.1 建模工具的安装 (64)8.2 公司报销流程示例 (67)8.2.1 流程建模 (67)8.2.2 流程数据库搭建 (76)8.2.3 构建业务表 (79)8.2.4 搭建工程 (82)8.2.5 报销流程的发布 (83)8.2.6 应用程序搭建 (84)九、写在最后 ........................................................................................ 错误!未定义书签。
jbpm44用户手册
第 1 章导言上一页下一页第 1 章导言最好使用firefox浏览这份教程。
在使用internet explorer的时候会有一些问题。
1.1. 许可证与最终用户许可协议jBPM是依据GNU Lesser General Public License(LGPL)和JBoss End User License Agreement(EULA)中的协议发布的,请参考完整的LGPL协议和完整的最终用户协议。
1.2. 下载可以从sourceforge上下载发布包。
/projects/jbpm/files/1.3. 源码可以从jBPM的SVN仓库里下载源代码。
https:///repos/jbpm/jbpm4/1.4. 什么是jBPMjBPM是一个可扩展、灵活的流程引擎,它可以运行在独立的服务器上或者嵌入任何Java应用中。
1.5. 文档内容在这个用户指南里,我们将介绍在持久执行模式下的jPDL流程语言。
持久执行模式是指流程定义、流程执行以及流程历史都保存在关系数据库中,这是jBPM实际通常使用的方式。
这个用户指南介绍了jBPM中支持的使用方式。
开发指南介绍了更多的、高级的、定制的、没有被支持的选项。
1.6. 从jBPM 3升级到jBPM 4没办法实现从jBPM 3到jBPM 4的升级。
可以参考开发指南来获得更多迁移的信息。
1.7. 报告问题在用户论坛或者我们的支持门户报告问题的时候,请遵循如下模板:聪明的读者可能已经注意到这些问题已经指向了可能导致问题的几点原因:)特别是对依赖库和配置的调整都很容易导致问题。
这就是为什么我们在包括安装和使用导入实现建议配置机制时花费了大量的精力。
所以,在你开始在用户手册覆盖的知识范围之外修改配置之前,一定要三思而行。
同时在使用其他版本的依赖库替换默认的依赖库之前,也一定要三思而行。
第 2 章安装配置2.1. 发布只需要把jBPM (jbpm-4.X.zip) 下载下来,然后解压到你的硬盘上的什么地方。
JBPM4.4
JBPM4.4应用开发——入门篇2010-10-27 20:38:24标签:JBPM工作流工作流程入门原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。
否则将追究法律责任。
/1931202/411612首先简单说说JBPM——java Business Process Management (java 业务流程管理)jBPM是一个框架、一堆开放的源代码。
而非一套“应用程序”。
jBPM的流程引擎可以看做是一个java工程——若干java类、依赖库和配置文件;使用和学习jBPM需要如下条件:1.jBPM的流程定义和运行时的上下文需要被存储到关系型数据库中——可以是基于调试目的的内存数据库HSQLDB,也可以是真正的持久化数据库(MySql,Oracle,PostgreSql,Sybase等等);2.jBPM的流程设计一般都需要一个基于客户端的图形化流程设计器软件,当然在jBPM4版本以后可以支持在web上做流程设计(这要归功于Sigvio项目)3.最终,基于jBPM开发出来的应用程序一般都会被部署到一台应用服务器中,以便服务于来自web的访问、监控和管理等。
注意:在jBPM4.3以后,几乎所有的准备工作(安装数据库,建表,安装应用服务器,安装图形化设计器插件等)jBPM软件包的发布者都帮我们做好了。
只要通过Ant脚本“一键获取”所需要的jBPM4整套开发、运行和管理环境。
在安装jBPM之前首先要安装JDK和Ant。
快速开始--------------------------------------------------------一、1.打开cmd命令控制台:进入到${jbpm.home}/install2.运行脚本:ant demo.setup.tomcat或ant.demo.setup.jboss使用这两个服务器都可以。
具体这个命令做了上面事:请查看install目录下的build.xml文件中的目标。
Jbmp学习资料
jBPM,全称是Java Business Process Management,是一种基于J2EE的轻量级工作流管理系统。
jBPM是公开源代码项目,它使用要遵循 Apache License。
jBPM在2004年10月18日,发布了3.0版本,并在同一天加入了JBoss,成为了JBoss企业中间件平台的一个组成部分,它的名称也改成JBoss jBPM。
随着jBPM加入JBoss组织,jBPM也将进入一个全新的发展时代,它的前景是十分光明的。
jBPM最大的特色就是它的商务逻辑定义没有采用目前的一些规范,如 WfMC´s XPDL, BPML, ebXML, BPEL4WS等,而是采用了它自己定义的JBoss jBPM Process definition language (jPdl)。
jPdl认为一个商务流程可以被看作是一个UML状态图。
jPdl就是详细定义了这个状态图的每个部分,如起始、结束状态,状态之间的转换等。
jBPM的另一个特色是它使用Hibernate来管理它的数据库。
Hibernate是目前Java领域最好的一种数据持久层解决方案。
通过Hibernate,jBPM将数据的管理职能分离出去,自己专注于商务逻辑的处理。
J2EE工作流管理系统jBPM详解(一)一、jBPM入门简介概述工作流业务流程管理技术是基于SOA技术实现的一个核心部分。
使用工作流能够在软件开发和业务两个层次受益:1、方便开发工作流管理系统能够简化企业级软件开发甚至维护。
◆降低开发风险 - 通过使用状态和动作这样的术语,业务分析师和开发人员使用同一种语言交谈。
这样开发人员就不必将用户需求转化成软件设计了。
◆实现的集中统一 -业务流程经常变化,使用工作流系统的最大好处是:业务流程的实现代码,不再是散落在各种各样的系统中。
◆加快应用开发 - 你的软件不用再关注流程的参与者,开发起来更快,代码更容易维护。
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()作⽤:提供对流程的部署、删除、查询和流程图的查看操作。
JBPM指南(培训机构专用)
第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.1
JBPM4.1学习尹伟为一、搭建开发环境1.首先下载eclipse最新版和jbmp4.1,分别解压缩到某目录下,以下称该目录为JBPM_HOME。
2.运行eclipse,window Preferences配置user libraries,将JBPM_HOME下的jbpm.jar添加进去,并将JBPM_HOME\src目录source attach到jbpm.jar;再将JBPM_HOME\lib目录下的所有jar文件都添加到jbpm libraries下,如下图给工程配置jbpm libraries,3. 安装流程设计器GPD 插件,Help --> Install New Software...,如下图,选择JBPM_HOME\install\src\gpd\jbpm-gpd-site.zip ,这里可能会花费一定的时间,等着吧。
完成后重起eclipse,就可以在eclipse中可视化地设计流程,如下图4.配置jbpm runtime,指定runtime location到JBPM_HOME目录如下图5.添加jPDL 4 schema,将jbpm\src下的jpdl-4.0.xsd添加到XML Catalog,如下图二、Signavio基于web的流程编辑器JBPM_HOME/install/src/signavio目录下有jbpmeditor.war,这就是signavio的web应用。
里面的web.xml 中有一项fileSystemRootDirectory的配置,指定流程文件编辑保存后的存放目录,修改后部署到tomcat中即可。
也可以通过ant任务来部署ant -Dsignavio.repo.path=d:/java/jbpm-4.1/signavio-repo install.signavio.into.tomcat其中signavio.repo.path也是指定流程文件的存放目录。
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更加灵活和可维护,适用于各种复杂的业务场景。
2020年(BPM业务流程管理)开发手册.
(BPM业务流程管理)开发手册第 1 章简介1.1. 目标读者这个开发指南是为了给有经验的开发者看的,这样就可以获得jBPM的完全的灵活性。
在这个开发文档中提及的特性可能当前不会被支持到。
请自行使用。
1.2. 概述第 2 章孵化器解释了最终会放到用户手册中的功能,它们会成为支持的一部分。
要注意孵化器中的功能还没有确保稳定。
(比如这里可能主要的语法或实现在下一个版本中被改变)。
第 3 章BPMN 2.0介绍如何在jBPM中使用BPMN 2.0流程语言。
第 5 章流程虚拟机到第 9 章高级图形执行解释了jBPM的核心,流程虚拟机(PVM),活动和事件监听器是如何建立在它上面的。
第 10 章配置到第 18 章Signavio web建模器解释了jBPM框架的高级用法。
1.3. 源代码和WIKIjBPM的源代码可以在我们的SVN获得:https:///repos/jbpm/jbpm4/这里有一篇关于如何构建源代码的wiki:http:///maven2/org/jbpm/jbpm4/1.5. 依赖库如果你想在自己的项目中安装或部署jBPM,现在也比以前方便了很多:只需要把正确的jar放到系统的classpath下。
我们还没有清理maven pom文件中的依赖描述。
所以我们还不能给出lib 目录下,你需要包含到应用中的,jar 的最小集合。
(参考Jira issue JBPM-2556 然后进行投票,如果你希望让我们知道这些问题对你优先级很高)。
依赖库的版本放在lib,是我们测试过的。
所以我们推荐你使用lib目录下的依赖版本。
为了在这方面帮助你,这里有一个jPDL当前所用的maven依赖的列表:jboss的idm依赖在org.jboss.identity.idm:*部分,可以忽略,包含org.hibernate:hibernate-entitymanager这个列表应该已经让你开始选择一个子集,而不是从${jbpm.home}/lib目录下包含所有依赖库。
JSP入门教程——入门到精通
JSP简介什么是Java Server Pages?JSP全称Java Server Pages,是一种动态网页开发技术。
它使用JSP标签在HTML网页中插入Java代码。
标签通常以<%开头以%>结束。
JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。
网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。
JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。
JSP标签有多种功能,比如访问数据库、记录用户选择信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息。
为什么使用JSP?JSP程序与CGI程序有着相似的功能,但和CGI程序相比,JSP程序有如下优势:•性能更加优越,因为JSP可以直接在HTML网页中动态嵌入元素而不需要单独引用CGI文件。
•服务器调用的是已经编译好的JSP文件,而不像CGI/Perl那样必须先载入解释器和目标脚本。
•JSP基于Java Servlets API,因此,JSP拥有各种强大的企业级Java API,包括JDBC,JNDI,EJB,JAXP等等。
•JSP页面可以与处理业务逻辑的servlets一起使用,这种模式被Java servlet 模板引擎所支持。
最后,JSP是Java EE不可或缺的一部分,是一个完整的企业级应用平台。
这意味着JSP可以用最简单的方式来实现最复杂的应用。
JSP的优势以下列出了使用JSP带来的其他好处:•与ASP相比:JSP有两大优势。
首先,动态部分用Java编写,而不是VB或其他MS专用语言,所以更加强大与易用。
第二点就是JSP易于移植到非MS平台上。
•与纯Servlets相比:JSP可以很方便的编写或者修改HTML网页而不用去面对大量的println语句。
•与SSI相比:SSI无法使用表单数据、无法进行数据库链接。
基于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 / >
jbpm使用的流程js
jbpm使用的流程js什么是jbpmJBPM(Java Business Process Model)是一个规范,它提供了定义、执行和管理业务流程的能力。
它是基于Java开发的,可以轻松地与Java应用程序集成。
jbpm是一个轻量级的、可扩展的工作流引擎,它可以帮助开发人员设计和执行复杂的业务流程。
jbpm允许在运行时动态改变流程、定义和执行规则,从而实现了灵活的业务流程管理。
使用流程js的优势在使用jbpm时,流程js是一个非常有用的工具。
它可以帮助开发人员在设计和执行业务流程时更加高效和方便。
以下是使用流程js的优势:1.代码可重用性 - 流程js可以将常用的代码片段进行封装,使其可以在多个业务流程中重复使用。
这样可以大大提高开发效率。
2.可视化界面 - 流程js提供了一个可视化界面,开发人员可以通过拖拽和连接不同的组件来构建业务流程。
这样不仅使得流程的设计更加直观和易懂,还可以降低开发人员的学习成本。
3.模块化设计 - 在流程js中,业务流程可以被分解为多个模块,每个模块负责一个单独的任务。
这种模块化的设计可以提高代码的可维护性和可扩展性。
4.事件驱动 - 流程js可以根据特定的事件触发不同的动作,从而实现业务流程的自动化。
例如,当一个任务完成时,可以自动触发下一个任务的开始。
5.与其他系统的集成- 流程js可以与其他系统进行集成,例如数据库、消息队列等。
这样可以实现业务流程与其他系统的无缝交互。
如何使用流程js以下是使用流程js的一般步骤:1.定义流程 - 首先,需要定义业务流程的步骤和规则。
这包括流程的起点、终点,以及中间的任务和决策点。
•定义流程的起点:起点是业务流程的开始,可以是一个用户提交表单的动作等。
•定义流程的终点:终点是业务流程的结束,可以是一个任务完成的状态等。
•定义中间的任务:任务是业务流程的执行单元,可以是一个用户的操作、一个自动化的步骤等。
•定义决策点:决策点是业务流程中的条件分支,根据不同的条件执行不同的任务。
jBPM 4.4 入门指南
1.工作流与工作流管理系统1.1. 工作流(Work Flow)工作流就是工作流程的计算机模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。
工作流要解决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递文档、信息或者任务。
通俗的说,流程就是多个人在一起合作完成某件事情的步骤,把步骤变成计算机能理解的方式就是工作流。
公司内采用纸张表单,手工传递的方式,一级一级审批签字,工作效率低下,对于统计报表功能则不能实现。
而采用工作流软件,使用者只需在电脑上填写有关表单,会按照定义好的流程自动往下跑,下一级审批者将会收到相关资料,并可以根据需要修改、跟踪、管理、查询、统计、打印等,大大提高了效率,实现了知识管理,提升了公司的核心竞争力。
作为一个成熟稳定的工作流产品,不仅提供日常办公和关键业务流程智能化管理,而且能根据公司的特殊实际要求轻松方便地随时定制各种流程,并可实现不同角色不同的跟踪、查询、统计、打印等强大功能1.2.工作流管理系统(Workflow Management System)工作流管理系统(WfMS)的主要功能是通过计算机技术的支持去定义、执行和管理工作流,协调工作流执行过程中工作之间以及群体成员之间的信息交互。
工作流需要依靠工作流管理系统来实现。
工作流管理系统是定义、创建、执行工作流的系统,应能提供以下三个方面的功能支持:1.定义工作流:包括具体的活动、规则等2.运行控制功能:在运行环境中管理工作流过程,对工作流过程中的活动进行调度3.运行交互功能:指在工作流运行中,WfMS与用户(活动的参与者)及外部应用程序工具交互的功能。
一、定义工作流二、执行工作流1.3.什么地方使用工作流技术OA中的审批流转的功能,其作用是能按照指定的流程(步骤)流转要审批的表单(就像流水线一样)。
有如下问题:1,流程有很多。
2,不同的公司,流程的具体步骤是不一样的,有时还需要增加新流程或修改现有流程。
jBPM5 用户指南中文版.
jBPM User GuidejBPM 用户指南目录目录第一章概述 (61.1 什么是jBPM? (61.2 概览 (71.3 核心引擎 (91.4 Eclipse编辑器 (91.5 基于Web的设计器 (10 1.6 jBPM控制台 (111.7 文档结构 (12第二章获得开始 (132.1 下载 (132.2 获得开始 (132.3 社区 (142.4 资源 (142.41许可证 (142.42 源代码 (142.4.3 从源文件构建 (15第三章安装 (153.2 下载installer (153.3 演示安装 (153.4 10分钟指南:使用Eclipse工具 (163.5 10分钟向导:使用jBPM控制台 (183.6 10分钟指南:使用Guvnor知识库和设计器 (19 3.7 如果遇到问题或有问题应该怎么去做 (203.7 经常被问的问题 (20第四章:核心引擎的API (214.1 jBPM API (234.11 Knowledge Base (234.12 会话 (234.13 事件 (254.2. Knowledge-based API (27第五章核心引擎:基础 (275.1 创建一个流程 (275.1.1 Eclipse BPMN2.0图形编辑器插件 (285.1.2 使用XML定义流程 (285.1.3使用流程API定义流程 (30 5.2 不同流程构造的细节概述 (31 5.3 流程属性的细节 (325.4 事件细节 (325.4.1 开始事件 (325.4.2 结束事件 (335.4.3 中间事件 (345.5.1 脚本任务 (355.5.3 服务任务 (365.5.3 用户任务 (375.5.4 重用的子流程 (385.5.5 业务规则任务 (385.5.6 嵌入子流程 (395.5.7 多个实例子流程 (395.6 Gateways 细节 (405.6.2 合并网关 (415.7 在你的应用中使用流程 (41 5.8 其他特性 (425.8.1 数据 (425.8.2 约束 (435.8.3 动作脚本 (445.8.4 事件 (455.8.5 计时器 (465.8.6 更新流程 (47第六章BPMN 2.0 核心引擎 (496.1 Business Process Model and Notation(BPMN2.0 Specification业务流程建模和符号2.0规范 (496.2 例子 (536.3 支持的元素/属性 (54第七章核心引擎:持久化和事务 (607.1 运行时状态 (607.1.1 二进制持久化 (607.1.2 Safe Pionts (607.1.3 配置持久化 (617.1.4 事务 (647.2 流程定义 (647.3 历史日志 (647.3.1 将流程事件存储到数据库 (65 第八章核心引擎:示例 (668.1 jBPM示例 (668.2 示例 (678.3 单元测试 (67第九章Eclipse BPMN 2.0 Plugin (68 9.1 安装 (689.2 创建你的BPMN 2.0 流程 (68 9.3 元素和属性的顾虑 (71第十章设计器 (7210.1 安装 (73第十一章控制台 (7411.1 安装 (7411.2 运行流程管理控制台 (7411.2.1 管理流程实例 (7511.2.2 人工任务列表 (7711.2.3 报告 (7811.3 添加新的流程/任务表 (79 11.4 REST interface (80第十二章Human Tasks (8112.1 流程内的Human tasks (8112.1.1 Swimlanes (8412.2 Human task 管理组件 (8412.2.1 任务生命周期 (8412.2.2 将任务组件链接到jBPM引擎 (8512.2.3 启动任务管理组件 (8712.2.4 和任务管理组件的交互 (8912.3 人工任务管理接口 (9012.3.1 Eclipse integration (9012.3.2 基于Web的任务视图 (90第十三章特定领域的流程 (9013.1 介绍 (9013.2 示例:通告 (9113.2.1 创建工作定义 (9213.2.2 注册你的工作定义 (9213.2.3 在你的流程中使用你最新的工作条目 (93 13.2.4 执行服务节点 (95第十四章测试和调试 (9714.1 单元测试 (9714.1.1 使用Helper方法创建你的session (98 14.1.2 断言 (9814.1.3测试与外部服务的结合 (9914.1.4 配置持久化 (10014.2 调试 (10014.2.1 流程实例视图 (10114.2.2 人工任务视图 (10214.2.3 核查视图 (102第十五章流程知识库 (103第十六章业务活动监视器 (10516.1 报告 (10516.2 直接接入 (107第十七章复杂流程 (108第十八章和Maven,OSGi,Spring的整合 (111 18.1 Maven (11118.2 OGSi (113第一章概述1.1什么是jBPM?jBPM是一个灵活的业务流程管理组件。
jdpm
了解:JBPM是一个开源的工作流项目,提供了丰富的API和可视化的流程开发工具,这使得开发起来变得简单灵活。
准备工作:1.下载安装JBoss服务器。
其实这一步可以用TOMCAT来取代的,那为什么要安装JBoss呢?下面有讲到。
2.下载JBPM包:jbpm-installer-3.3.1.jar这个不是最新版本考虑到稳定性的原因所以选择3.3.1版本。
双击这个jar执行安装工作,在安装过程中有一步要指定一个JBoss服务器所以这里回答上面的疑问。
我这里是以安装在D盘为准,安装好的目录如下:D:\jbpm-3.3.1.GA\config 这是一个配置文件包含各种数据库和hibernate的配置等 \database 这个文件下是创建各种JBPM数据库的执行脚本\designer 这个文件是myeclipse下的一个开发插件\doc 这个是JBPM 的API\examples 这个是一个JBPM的例子\lib JBPM所用到的库文件\src JBPM的源码3.下载和安装JBPM开发插件。
上面说到在\designer目录有一个插件可以找到在myeclipse当中安装即可。
我们这里用下载的一个JBossTools-ALL-win32-3.0.1.GA.zip 同样安装即可。
安装好后我们可以看到如下所示表示安装成功。
4.在myeclipse当中配置JBPM的运行环境.找到myeclipse当中window下的首选项找到JBoss JBPM下的Runtimes localhosts在右边的列表当中添加刚刚我们安装的JBPM 就可以了,如下图:这样我们的准备工作就其本完成。
开发JBPM项目:当然这是在前面准备工作完成后才可以做的。
新建一个JBPM项目如图:新建好的目录如下所示:src/main/java目录下存放我们在流程各个节点的事件action、转向action、任务分配action等业务逻辑。
src/main/config目录下存放的是我们的配置文件,其中得要的是hibernate.cfg.xml,在这个文件当中我们要配置我们的数据库信息。
jBPM_4.4用户手册
报告问题在用户论坛或者我们的支持门户报告问题的时候,请遵循如下模板:
=================================
-jBPMVersion:你使用的是哪个版本的jBPM?
-Database:使用的什么数据库以及数据库的版本
-JDK:使用的哪个版本的JDK?如果不知道可以使用'java-version'
户和组。?安装
eclipse到${jbpm.home}/eclipse
?启动
eclipse?安装jBPMweb控制台?安装Signavioweb建模器
当这些都完成后,JBoss(或Tomcat,根据demo.setup脚本中的选择)会在后
台启动。一旦eclipse完成启动,你可以继续执行下面的教程第3章流程设计
jBPM4.4
下一页jBPM4.4
用户手册翻译官方文档JBossjBPMTeams4.4
译者:Lingo
首页:/
论坛:/bbs
EMAIL:lingosurf168@
还是你修改了其中一些依赖库?
===Process==================================
这里填写jPDL流程定义
===API===================================
这里填写你调用jBPM使用的代码片段
===Stacktrace==============================
2.11.2.在eclipse中安装GPD插件
2.11.3.配置jBPM运行时
2.11.4.定义jBPM用户库
2.11.5.在目录中添加jPDL4模式
jbpm数据库表说明
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字段进行关联,一个流程实例可能对应多个任务实例。
计算机软件开发入门指南
计算机软件开发入门指南第一章:软件开发概述本章将介绍计算机软件开发的概念、发展历程以及软件开发的重要性。
了解这些基础知识将有助于读者更好地进入软件开发领域。
1.1 计算机软件开发简介1.1.1 什么是计算机软件开发1.1.2 软件开发的发展历程1.2 软件开发的重要性1.2.1 软件在现代社会中的地位1.2.2 软件开发的商业价值第二章:软件开发技术基础在本章中,将介绍软件开发所需的基本技术知识,包括编程语言、算法和数据结构等。
这些基础知识是进一步学习和实践软件开发的基石。
2.1 编程语言2.1.1 常见的编程语言及其特点2.1.2 如何选择合适的编程语言2.2 算法和数据结构2.2.1 算法的基本概念和分类2.2.2 常用的数据结构及其应用第三章:软件工程与开发流程软件工程是软件开发的重要分支,本章将重点介绍软件开发的过程和流程,以及相关的工具和方法。
3.1 软件开发生命周期3.1.1 软件开发的阶段和任务3.1.2 常见的软件开发模型3.2 软件开发工具和方法3.2.1 集成开发环境 (IDE)3.2.2 版本控制和团队协作工具3.2.3 敏捷开发方法和持续集成第四章:软件测试与质量保证软件测试是软件开发过程中重要的一环,本章将介绍软件测试的基本原理和常见的测试方法,以及质量保证的重要性。
4.1 软件测试的基本原理4.1.1 软件测试的定义和目的4.1.2 常见的软件测试方法4.2 质量保证与软件开发4.2.1 质量保证的概念和重要性4.2.2 质量保证在软件开发中的应用第五章:常见软件开发应用领域软件开发可以应用于各个行业和领域,本章将介绍常见的软件开发应用领域,包括移动应用开发、网络应用开发等。
5.1 移动应用开发5.1.1 常用的移动应用开发平台5.1.2 移动应用开发的技术要点5.2 网络应用开发5.2.1 常用的网络应用开发技术5.2.2 网络应用开发的安全性问题第六章:软件开发的职业发展本章将介绍软件开发行业的职业发展前景和路径,以及如何提升自己的技能和竞争力,走上成功的软件开发之路。
JBPM4工作流介绍
工作流的基本概念 参考模型
应用场景JB基P本M概4念实J现BPM4
开发介绍 例子演示 系统整合
10
工作流的概述
描述 什么是工作流?
工具 什么是工作流引擎?
规范 什么是工作流管理系统?
JBPM工作流
11
什么是工作流?
工作流:
在一个工作群组中,为了达成某一个共同目的而需要 多人协力以串行或平行工作的形式来共同完成的任务。
16
WfMS具有的特点:
1 建立时期:定义和建模。 2 运行时期:调度。 3 运行交互功能:指在工作流运行中,WFMS与用户(业务
工作的参与者或控制者)及外部应用程序工具交互的功能。
JBPM工作流
WfMC工作流管理系统参考模型
JBPM工作流
18
功能模型与参考模型的对应关系
JBPM工作流
ห้องสมุดไป่ตู้
19
JBPM4的实现
串行:
JBPM工作流
30
流程之流转模型
循环:
JBPM工作流
31
流程之流转模型
并行:
JBPM工作流
32
流程之流转模型
聚合:
JBPM工作流
33
JBPM4流程控制最常用、最基本的活动
start
开始活动
分支/聚合
task
任务
state
状态活动
end
结束活动
判断活动
Sub-process 子流程
custom
JBPM工作流
14
什么是工作流管理系统?
工作流管理系统:
工作流管理系统即Workflow Management System, 简称WFMS,是定义、创建、执行、监控工作流的系 统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
jBPM开发入门指南(1)工作流虽然还在不成熟的发展阶段,甚至还没有一个公认的规范标准。
但其应用却已经在快速展开,这说明市场对工作流框架的需求是急迫而巨大的。
我们公司的后台短信管理系统涉及短信编发、领导层层审核等操作,这是一个比较典型的工作流系统。
过去我们用的工作流引擎是 shark ,然后在使用后发现其过于庞大,后台数据库操作频繁而未进行优化,直接导致的后果就是前台操作缓慢。
于是经研究决定,将工作流引擎由 shark 换成 jBPM 。
jBPM 之前是一个开源软件,后加入 JBoss 组织。
正好我们公司也是用 JBoss 的。
不过 jBPM 并没有绑定在 JBOSS 上, Tomcat 等也可以使用它。
jBPM 的正处在不断发展中,做为开源软件的特点,其设计变化往往很大。
所以一些过去的资料可能已经不适用了。
于是作者根据自己的使用经验,重新整理出这份文档,以备学习参考。
注:本文使用的 jBPM 版本为 3.1.1环境准备1、安装JDK所有 JAVA 开发第一个需要安装的,没什么好说的。
记得把系统变量 JAVA_HOME 设上。
2、安装AntAnt 是使用 jBPM 必须的一个工具。
jBPM 中的很多操作都要用到 Ant 。
安装方法:( 1 )先下载:/dist/ant/binaries/,选一个如: apache-ant-1.6.5-bin.zip 。
( 2 )解压到 D:\ant (当然其他目录也可以)。
( 3 )设置如下系统变量: ANT_HOME=d:\ant 。
( 4 )把 %ANT_HOME%\bin 加入到系统变量 PATH 中。
3、安装EclipseEclipse 不是开发 jBPM 必须的工具,但它是对 jBPM 开发很有帮助的工具,特别是 jBPM 提供了一个 Eclipse 插件用来辅助开发 jBPM 。
关于 Eclipse 的安装不赘述了,本文用的版本是: Eclipse3.2安装jBPMjBPM 的下载地址:/products/jbpm/downloads●JBoss jBPM 是jBPM 的软件包●JBoss jBPM Starters Kit 是一个综合包,它包括了jBPM 软件包、开发插件、一个配置好了的基于JBoss 的jBPM 示例、一些数据库配置文件示例。
●JBoss jBPM Process Designer Plugin 是辅助开发jBPM 的Eclipse 插件。
●JBoss jBPM BPEL Extension jBPM 关于BPEL 的扩展包本指南选择下载:JBoss jBPM Starters Kit 。
下载后解压到D:\jbpm-starters-kit-3.1 ,目录下含有五个子目录:●jbpm jBPM 的软件包●jbpm-bpel 只含有一个网页●jbpm-db 各种数据库hibernate 配置文件示例,有些还包含了相应的jdbc 驱动程序。
●jbpm-designer 辅助开发jBPM 的Eclipse 插件,具体在jbpm-gpd-feature 子目录中●jbpm-server 一个已经配置好了的基于JBoss 的jBPM 示例 .感觉下工作流前面我们说了,在 JBoss jBPM Starters Kit 的 jbpm-server 目录是一个已经配置好的了 jBPM 示例,那么让我们来感觉一下 jBPM 做出的东西吧。
双击 jbpm-server 目录下的 start.bat 文件,启动 JBoss 服务。
这时会打开一个 DOS 窗口,启动完成后,日志会不断输出,其中最后一句是“ 13:55:39,937 DEBUG [StaticNotifier] going to wait for (CMD_EXECUTOR,ng.Object@1df59bd) ”,这表示 jBPM 在开始工作了,它不断进行轮询。
打开网页:http://localhost:8080/jbpm/得到如下画面这是一个已经用 jBPM 开发好的用户定单流程,具有下单、审核、估价等流程。
它所用的数据库是一个内置的数据库。
以 cookie monster 用户登录,选择“ create new web sale order ”可以创建一个定单。
如下图所示,在图左边是填写的定单情况,右边一整个定货流程的示意图,红色框表示流程进行到哪一步了。
填写好定单好,选择“ Save and Close Task ”,完成定单提交。
选择右上角的“ Login as another user ”以另外一个用户名 ernie 登录。
这时可以看到 ernie 用户的任务列表中多了一项。
点进去后,显示如下画面。
这个示例对中文的支持不好,全都显示成了 unicode 码了。
不管这什么多,反正知道是这么回事就行了。
在 comment 项填写意见,选 OK 按钮,进入到下一步。
如果选择 more info needed 按钮,则打回给 cookie monster 用户修改定单。
下面的流程,这里就不再赘述了。
在这个很标准的工作流示例中,我们基本可以看到 jBPM 的应用范围还是比较广的。
而且从这个示例,我们是看不出有 jBPM 的,也就是说 jBPM 在后台起着作用。
从这个例子,还看不出 jBPM 的优势。
不过,如果在一个流程不确定,经常需要变动的项目中, jBPM 的好处将会显然出来。
应用 jBPM 后,改变流程只需改变流程描述文件,这将在后面的内容提到。
这是一个已做好的示例,接下来我们将仿造这个实例来开发一个请假流程。
4 数据库初始化jBPM 需要数据库支持, jBPM 会把自己的一个初始化数据存储到数据库,同时工作流的数据也是存储到数据库中的。
jBPM 使用 Hibernate 来做为自己的存储层,因此只要是 Hibernate 支持的数据库, jBPM 也就支持。
本文先以 MySQL 为例,然后再以 Oracle 为例,来谈谈 jBPM 的数据库初始化操作。
注:在上面的JBoss 自带的示例中,并没有设置数据库,那是因为jBPM 默认使用的是内存数据库hsqldb 。
4.1 MySQL1 、首先安装MySQL 。
MySQL 的安装比较简单,网上也有很多文章,本文不再赘述。
本指南所用 MySQL 版本为 MySQL 4.1 ( for windows )。
再找一个 MySQL 客户端,目的是方便查看数据库中的数据,本文推荐使用 MySQL 网站上免费提供的“ MySQL Query Brower ”,当然你用其他的客户端也行,比如 MySQL-Front 。
2 、建库MySQL 中创建一个库,库名: jbpm3 、生成建表的SQL 语句并建表将 jbpm-starters-kit-3.1.1 下的子目录 jbpm 改名为 jbpm.3 ,否则在执行下面的 ant 命令时会报如 jbpm.3 目录不存在的错误:D:\jbpm-starters-kit-3.1.1\jbpm-db\build.xml:361: The following error occurred while executing this line:D:\jbpm-starters-kit-3.1.1\jbpm-db\build.xml:68: BasedirD:\jbpm-starters-kit-3.1.1\jbpm.3 does not exist在 DOS 窗下,进入 D:\jbpm-starters-kit-3.1.1\jbpm-db 目录,执行如下命令:ant mysql.scripts执行成功后,在 D:\jbpm-starters-kit-3.1.1\jbpm-db\build\mysql\scripts 目录里生成了四个 sql 文件,它们做什么用的一看名字就知道了。
在 MySQL 客户端中执行“ mysql.create.sql ”脚本,这样将在 jbpm 库中创建一个个的数据表。
4.2 Oracle先安装好 Oracle 服务器。
我们公司有现存的 Oracle 服务器,也提供给了我一个属于我自己的用户名,一登录就可以任意在我的库之下创建表了。
所以这一步就省了,没有的自个先装好吧。
访问 Oracle 推荐用“ PLSQL Developer ”。
不过要连接 Oracle 还要在本机上装上 Oracle 自己的客户端程序,里面提供了 JDBC 包和一些配置。
要连接服务器还得配置一下,我一般都是不用 GUI 而直接改 tnsnames.ora 文件,在我的电脑里此文件的目录地址是:D:\oracle\ora92\network\ADMIN\tnsnames.ora ,内容如下 ( 两面有两个配置了 ) :# TNSNAMES.ORA Network Configuration File:E:\oracle\ora92\network\admin\tnsnames.ora# Generated by Oracle configuration tools.WXXRDB_192.168.3.2 =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.2)(PORT = 1521)))(CONNECT_DATA =(SID = wxxrDB)(SERVER = DEDICATED)))WXXRDB_192.168.4.2 =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.4.2)(PORT = 1521)))(CONNECT_DATA =(SID = wxxrDB)(SERVER = DEDICATED)))前面都是 Oracle 的一些知识,不会的 Google 一下吧。
最后配置好后,用 PLSQL Developer 输入你的用户名和密码联接到 Oracle ,就算 OK 了。
参考上面 MySQL 的步骤,基本一样:(1)将 jbpm 改名为 jbpm.3(2)再执行ant oracle.scripts(3)用 jbpm-db\build\oracle\scripts 目录的 oracle.create.sql 脚本,在 Oracle 中生成 jBPM 的所有表。
在“ PLSQL Developer ”中可以新建一个 Command Windows 窗口然后输入命令:@D:\jbpm-starters-kit-3.1.1\jbpm-db\build\oracle\scripts\oracle.create.sql5 安装jBPM 的Eclipse 开发插件有个辅助工具开发起来方便一点,只不过现在 jBPM 的开发工具插件功能还不算太强,也就一个“项目创建向导”的功能,让你:(1)不用再去配置 classpath 库的引用了(2)直接得到了一个 jBPM 的项目初始结构其实吧,开发 jBPM 也不需要什么插件工具,在熟练了以后,库引用了项目初始结构都可以手工创建。