jbpm工作流指导大全.docx
《jbpm工作流指导大全.docx》由会员分享,可在线阅读,更多相关《jbpm工作流指导大全.docx(108页珍藏版)》请在冰豆网上搜索。
jbpm工作流指导大全
第 1 章 导言
上一页
下一页
第 1 章 导言
最好使用firefox浏览这份教程。
在使用internetexplorer的时候会有一些问题。
1.1. 许可证与最终用户许可协议
jBPM是依据GNULesserGeneralPublicLicense(LGPL)和JBossEndUserLicenseAgreement(EULA)中的协议发布的,请参考完整的LGPL协议和完整的最终用户协议。
1.2. 下载
可以从sourceforge上下载发布包。
1.3. 源码
可以从jBPM的SVN仓库里下载源代码。
https:
//anonsvn.jboss.org/repos/jbpm/jbpm4/
1.4. 什么是jBPM
jBPM是一个可扩展、灵活的流程引擎,它可以运行在独立的服务器上或者嵌入任何Java应用中。
1.5. 文档内容
在这个用户指南里,我们将介绍在持久执行模式下的jPDL流程语言。
持久执行模式是指流程定义、流程执行以及流程历史都保存在关系数据库中,这是jBPM实际通常使用的方式。
这个用户指南介绍了jBPM中支持的使用方式。
开发指南介绍了更多的、高级的、定制的、没有被支持的选项。
1.6. 从jBPM3升级到jBPM4
没办法实现从jBPM3到jBPM4的升级。
可以参考开发指南来获得更多迁移的信息。
1.7. 报告问题
在用户论坛或者我们的支持门户报告问题的时候,请遵循如下模板:
===环境==============================
-jBPMVersion:
你使用的是哪个版本的jBPM?
-Database:
使用的什么数据库以及数据库的版本
-JDK:
使用的哪个版本的JDK?
如果不知道可以使用'java-version'查看版本信息
-Container:
使用的什么容器?
(JBoss,Tomcat,其他)
-Configuration:
你的jbpm.cfg.xml中是只导入了jbpm.jar中的默认配置,
还是使用了自定义的配置?
-Libraries:
你使用了jbpm发布包中完全相同的依赖库的版本?
还是你修改了其中一些依赖库?
===Process==================================
这里填写jPDL流程定义
===API===================================
这里填写你调用jBPM使用的代码片段
===Stacktrace==============================
这里填写完整的错误堆栈
===Debuglogs==============================
这里填写调试日志
===Problemdescription=========================
请保证这部分短小精悍并且切入重点。
比如,API没有如期望中那样工作。
或者,比如,ExecutionService.SignalExecutionById抛出了异常。
聪明的读者可能已经注意到这些问题已经指向了可能导致问题的几点原因:
)特别是对依赖库和配置的调整都很容易导致问题。
这就是为什么我们在包括安装和使用导入实现建议配置机制时花费了大量的精力。
所以,在你开始在用户手册覆盖的知识范围之外修改配置之前,一定要三思而行。
同时在使用其他版本的依赖库替换默认的依赖库之前,也一定要三思而行。
第 2 章 安装配置
2.1. 发布
只需要把jBPM(jbpm-4.X.zip)下载下来,然后解压到你的硬盘上的什么地方。
你将看到下面的子目录:
∙doc:
用户手册,javadoc和开发指南
∙examples:
用户手册中用到的示例流程
∙install:
用于不同环境的安装脚本
∙lib:
第三方库和一些特定的jBPM依赖库
∙src:
源代码文件
∙jbpm.jar:
jBPM主库归档
∙migration:
参考开发指南
2.2. 必须安装的软件
jBPM需要JDK(标准java)5或更高版本。
为了执行ant脚本,你需要1.7.0或更高版本的apacheant:
http:
//ant.apache.org/bindownload.cgi
2.3. 快速上手
这个范例安装是最简单的方式开始使用jBPM。
这一章介绍了完成范例安装的步骤。
如果你之前下载过jboss-5.0.0.GA.zip,你可以把它放到${jbpm.home}/install/downloads目录下。
否则脚本会为你下载它,但是它会消耗一些时间(与你的网络情况有关)。
eclipse-jee-galileo-win32.zip也一样(或者eclipse-jee-galileo-linux-gtk(-x86_64).tar.gz在linux平台下和eclipse-jee-galileo-macosx-carbon.tar.gz在MacOSX平台下)。
打开命令控制台,进入目录${jbpm.home}/install。
然后运行
antdemo.setup.jboss
或者
antdemo.setup.tomcat
这将
∙把JBoss安装到${jbpm.home}/jboss-5.0.0.GA目录
∙把jBPM安装到JBoss中。
∙安装hsqldb,并在后台启动。
∙创建数据库结构
∙在后台启动JBoss
∙根据示例创建一个examples.bar业务归档,把它发布到jBPM数据库中
∙从${jbpm.home}/install/src/demo/example.identities.sql,读取用户和组。
∙安装eclipse到${jbpm.home}/eclipse
∙启动eclipse
∙安装jBPMweb控制台
∙安装Signavioweb建模器
当这些都完成后,JBoss(或Tomcat,根据demo.setup脚本中的选择)会在后台启动。
一旦eclipse完成启动,你可以继续执行下面的教程第 3 章流程设计器(GPD)来开始编码你的jBPM业务流程。
或者你可以启动建模流程,通过Signavioweb设计器。
或者使用jBPM控制台。
你可以使用下面用户之一进行登陆:
表 2.1. 示例控制台用户:
用户名
密码
alex
password
mike
password
peter
password
mary
password
目前存在的问题:
现在,对于一些比较慢的机器,在初始化报表时,控制台的失效时间太短了,所以当你第一次请求报表时,会出现超时,控制台会崩溃。
注销,然后再次登录,就可以避过这个问题。
这个问题已经提交到JIRA中了JBPM-2508
2.4. 安装脚本
jBPM下载包中包含了一个install目录,目录中有一个ant的build.xml文件,你可以使用它来把jBPM安装到你的应用环境中。
最好严格按照这些安装脚本,进行安装和发布jBPM配置文件。
我们可以自定义jBPM配置文件,但这是不被支持的。
要想调用安装脚本,打开命令行,进入${jbpm.home}/install目录。
使用ant-p你可以看到这里可以使用的所有脚本。
脚本的参数都设置了默认值,可以快速执行,下面列表给出了可用脚本的概况:
∙demo.setup.jboss:
安装jboss,把jbpm安装到jboss中,启动jboss,创建jbpm数据库表结构,部署实例,加载实例身份认证信息,安装并启动eclipse
∙demo.setup.tomcat:
安装tomcat,把jboss安装到tomcat中,启动tomcat,创建jbpm数据库表结构,部署实例,加载实例身份认证信息,安装并启动eclipse
∙clean.cfg.dir:
删除${jbpm.home}/install/generated/cfg文件夹。
∙create.cfg:
创建一个配置在${jbpm.home}/install/generated/cfg下,基于当前的参数。
∙create.jbpm.schema:
在数据库中创建jbpm表
∙create.user.webapp创建一个基本的webapp在${jbpm.home}/install/generated/user-webapp中
∙delete.jboss:
删除安装的jboss
∙delete.tomcat:
删除安装的Tomcat
∙demo.teardown.jboss:
删除jbpm数据库的表并停止jboss
∙demo.teardown.tomcat:
停止tomcat和hsqldb服务器(如果需要)
∙drop.jbpm.schema:
从数据库中删除jbpm的表
∙get.eclipse:
下载eclipse如果它不存在
∙get.jboss:
下载一个JBossAS,已经测试过当前的jBPM版本,如果它不存在
∙get.tomcat:
下载一个Tomcat,已经测试过当前的jBPM版本,如果它不存在
∙hsqldb.databasemanager:
启动hsqldb数据库管理器
∙install.eclipse:
解压eclipse,下载eclipse如果它不存在
∙install.jboss:
下载JBoss如果它不存在,并解压
∙install.jbpm.into.jboss:
把jBPM安装到JBoss中
∙install.tomcat:
把tomcat下载到${tomcat.distro.dir}如果tomcat不存在,并解压tomcat
∙install.jbpm.into.tomcat:
把jBPM安装到tomcat中
∙install.examples.into.tomcat:
部署所有的实例流程
∙install.signavio.into.jboss:
把signavio安装到jboss中
∙install.signavio.into.tomcat把signavio安装到tomcat中
∙load.example.identities:
读取实例用户和用户组数据到数据库
∙reinstall.jboss:
删除之前的jboss安装,并重新安装jboss
∙reinstall.jboss.and.jbpm:
删除之前的jboss安装,并重新安装jboss并把jbpm安装到它里面
∙reinstall.tomcat:
删除之前的tomcat安装,并重新安装tomcat
∙reinstall.tomcat.and.jbpm:
删除之前的tomcat安装,并重新安装tomcat并把jbpm安装到它里面
∙start.eclipse:
启动eclipse
∙start.jboss:
启动jboss,等待到jboss启动完,然后让jboss在后台运行
∙start.tomcat:
启动Tomcat,等待到Tomcat启动完,然后让Tomcat在后台运行
∙stop.jboss:
通知jboss停止,但是不等到它完成
∙stop.tomcat通知Tomcat停止,但是不等到它完成
∙upgrade.jbpm.schema:
更新数据库中的jBPM表到当前版本
要想指定你的配置文件,使用上面的脚本(比如DB表结构生成),最简单的方法是修改对应的配置文件,在目录${jbpm.home}/install/jdbc。
对应的配置文件会被脚本加载,根据对应的DB。
下面的参数也可以自定义。
∙database:
默认值是hsqldb。
可选值为mysql,oracle和postgresql
∙jboss.version:
默认值是5.0.0.GA。
可选值是5.1.0.GA
如果想要自定义这些值,只需要像这样使用-D
ant-Ddatabase=postgresqldemo.setup.jboss
作为可选方案,你可以在${user.home}/.jbpm4/build.properties中设置自定义的参数值
2.5. 依赖库和配置文件
我们提供了自动安装jBPM的ant脚本。
这些脚本会将正确的依赖库和正确的配置文件为你安装到正确的位置。
如果你想在你的应用中创建自己的jBPM,可以参考开发指南获得更多信息。
2.6. JBoss
install.jbpm.into.jboss任务会把jBPM安装到你的JBoss5中。
进入安装目录下,执行ant-p可以获得更多信息。
这个安装脚本会把jBPM安装为一个JBoss的服务,因此所有应用都可以使用同一个jBPM的流程引擎。
可以指定-Djboss.home=PathToYourJBossInstallation来修改你的JBoss的安装路径。
在JBoss中,ProcessEngine可以通过JNDI获得,newInitialContext().lookup("java:
/ProcessEngine"),相同的流程引擎可以通过Configuration.getProcessEngine()获得。
2.7. Tomcat
install.jbpm.into.tomcat任务会把jBPM安装到你的Tomcat中。
2.8. Signavio基于web的流程编辑器
使用install.signavio.into.jboss和install.signavio.into.tomcat任务可以将Signavio基于web的流程编辑器安装到JBoss或Tomcat中。
2.9. 用户web应用
如果你希望把jBPM部署为你的web应用的一部分,可以使用create.user.webapp这个安装任务。
这会创建一个包含jBPM的web应用,在${jbpm.home}/install/generated/user-webapp目录下。
如果你在JBoss上或其他包含jta.jar的应用服务器上部署了你的应用,你需要把${jbpm.home}/install/generated/user-webapp/WEB-INF/lib/jta.jar删除。
2.10. 数据库
安装脚本也包含了执行数据库的操作比如创建表,如果你是第一次安装jBPM,或者更新数据库使用之前版本的表结构。
删除表也是可选的。
使用任何数据库操作的前提条件是在${jbpm.home}/install/jdbc中指定你的连接参数。
2.10.1. 创建或删除表结构
要想创建表结构,执行create.jbpm.schema任务在${jbpm.home}/install目录下。
作为创建表、约束的一部分,涉及的任务会初始化JBPM4_PROPERTY表,使用当前的引擎版本(keydb.version)和ID生成器版本(keynext.dbid)。
要想删除表结构,只要执行drop.jbpm.schema任务。
注意这个操作会删除jBPM表中的所有数据。
2.10.2. 更新已存在的数据库
要想更新,执行upgrade.jbpm.schema任务在${jbpm.home}/install目录下。
更新是一个两步操作。
前一步是添加额外的表,列或者约束这些是在新版本中的。
下一步,插入种子数据。
从4.0到4.1,表JBPM4_VARIABLE添加了一个新列CLASSNAME_用来支持设置流程变量的值的自定义类型,hibernate的类型映射。
这个列是可为null的,因为这个功能在4.0中没有支持,所以没有初始值。
从4.1到4.2,更新过程更有趣一些。
∙一个新表JBPM4_PROPERTY被用来保存引擎范围的数据。
∙jBPM版本保存在JBPM4_PROPERTY表中使用keydb.version用来在未来发布中精确指定标示符。
∙ID生成策略是完全跨数据库的。
下一个有效的ID是通过搜索所有包含主键列的表计算出的,保存在keynext.dbid中在JBPM4_PROPERTY表中。
∙流程语言设置为jpdl-4.0用于所有已经存在的流程定义,对应keylangid在表JBPM4_DEPLOYPROP中。
jPDL解析器对应langid属性来读取流程文档以此支持向后的兼容。
2.11. 流程设计器(GPD)
图形化流程设计器(GPD)使用Eclipse作为其平台,这一节的内容将介绍如何获得和安装Eclipse,并把GPD插件安装到eclipse上。
2.11.1. 获得eclipse
你需要Eclipse3.5.0
使用实例安装或手工下载eclipse:
EclipseIDEforJavaEEDevelopers(163MB)
eclipse的传统版本无法满足要求,因为它没有XML编辑器。
Eclipse的Java开发者版也可以工作。
2.11.2. 在eclipse中安装GPD插件
使用Eclipse软件升级(SoftwareUpdate)机制安装设计器是非常简单的。
在gpd目录下有一个install/src/gpd/jbpm-gpd-site.zip文件,这就是更新站点(archivedupdatesite)的压缩包。
在Eclipse里添加更新站点的方法:
∙帮助-->安装新软件...
∙点击添加...
∙在添加站点对话框中,单击压缩包...
∙找到install/src/gpd/jbpm-gpd-site.zip并点击'打开'
∙点击确定在添加站点对话框中,会返回到'安装'对话框
∙选择出现的jPDL4GPD更新站点
∙点击下一步..然后点击完成
∙接受协议
∙当它询问的时候重启eclipse
图 2.1. 添加设计器的更新站点
2.11.3. 配置jBPM运行时
∙点击Window-->Preferences
∙选择JBossjBPM-->jBPM4-->RuntimeLocations
∙点击Add...
∙在AddLocation对话框中,输入一个名字,比如jbpm-4.0然后点击Search...
∙在BrowseForFolder对话框中,选择你的jbpm根目录,然后点击OK
∙点击OK在AddLocation对话框中
图 2.2. 定义jBPM依赖库
2.11.4. 定义jBPM用户库
这一节演示如何在你的工作空间定义一个用户库,用来放置jBPM的库文件。
如果你创建一个新工程,只需要将用户库全部添加到buildpath下
∙点击窗口-->属性(Windows-->Preferences)
∙选择Java-->创建路径-->用户类库(Java-->BuildPath-->UserLibraries)
∙点击新建(New)
∙类型名字jBPMLibraries
∙点击添加JARs(AddJARs...)
∙找到jBPM安装程序下的lib目录
∙选择lib下的所有jar文件并点击打开(Open)
∙选择jBPMLibraries作为入口
∙重新点击添加JARs(AddJARs)
∙在jBPM的安装程序的根目录下选择jbpm.jar文件
∙点击打开(Open)
∙在jbpm.jar下选择源码附件(Sourceattachment)作为入口
∙点击编辑(Edit)
∙在源码附件的配置(SourceAttachmentConfiguration)对话框中,点击目录(ExternalFolder...)
∙找到jBPM安装程序下的src目录
∙点击选择(Choose)
∙点击两次'确定'(Ok)会关闭所有对话框
图 2.3. 定义jBPM类库
2.11.5. 在目录中添加jPDL4模式
如果你想直接编辑XML源码,最好是在你的XML目录中指定一下模式(schema),这样当你在编辑流程源码的时候,可以更好的帮助你编写代码。
∙点击窗口-->属性(Windows-->Preferences)
∙选择XML-->目录(XML-->CataLog)
∙点击添加(Add)
∙添加XML目录(AddXMLCatalogEntry)的窗口打开
∙点击map-icon的图标下面的按钮并选择文件系统(FileSystem)
∙在打开的对话框中,选择jBPM安装目录下src文件夹中jpdl.xsd文件
∙点击打开(Open)并且关闭所有的对话框
图 2.4. 在目录中添加jPDL4模式
2.11.6. 导入示例
这一节我们会在Eclipse的安装程序下导入示例工程
∙选择文件-->导入(File-->Import)
∙选择正常-->工作区中已有的工程(General-->ExistingProjectsintoWorkspace)
∙点击下一步(Next)
∙点击浏览去选择一个根目录(Browse)
∙通向jBPM安装程序的根目录
∙点击好(Ok)
∙示例工程会自动找到并且选中
∙点击完成(Finish)
在配置了jBPM用户依赖库也导入了实例后,所以的例子可以作为JUnit测试运行了。
在一个测试上右击,选择'RunAs'-->'JUnitTest'。
设置完成,现在你可以开始享受这个最酷的Java流程技术。
2.11.7. 使用ant添加部分文件
你可以使用eclipse和ant整合来处理流程的发布。
我们会告诉你它是如何在例子里工作地。
然后你可以把这些复制到你的项目中。
首先,打开ant视图。
∙选择Window-->ShowView-->Other...-->Ant-->Ant
∙例子项目中的构建文件build.xml,从包视图拖拽到ant视图。
第 3 章 流程设计器(GPD)
这一章我们讲述了怎样使用流程设计器,在安装流程设计器和配置好例子之后,你会看到jPDL流程文件都有一个对应的特殊图标,在包视图的下面双击某一个这种图标文件,就会在流程设计器中打开一个jPDL流程文件。
图 3.1. 流程设计器
3.1. 创建一个新的流程文件
Ctrl+N将打开向导选择器。
图 3.2. 选择向导对话框
选择jBPM-->jPDL4文件(File).点击下一步(Next>).然后新的jPDL4文件(NewjPDL4File),就会打开向导。
图 3.3.