jbpm工作流指导大全

jbpm工作流指导大全
jbpm工作流指导大全

第 1 章导言

上一页下一页第 1 章导言

最好使用firefox浏览这份教程。在使用internet explorer的时候会有一些问题。

1.1. 许可证与最终用户许可协议

jBPM是依据GNU Lesser General Public License(LGPL)和JBoss End User License Agreement(EULA)中的协议发布的,请参考完整的LGPL协议和完整的最终用户协议。

1.2. 下载

可以从sourceforge上下载发布包。

https://www.360docs.net/doc/cf9775200.html,/projects/jbpm/files/

1.3. 源码

可以从jBPM的SVN仓库里下载源代码。

https://https://www.360docs.net/doc/cf9775200.html,/repos/jbpm/jbpm4/

1.4. 什么是jBPM

jBPM是一个可扩展、灵活的流程引擎,它可以运行在独立的服务器上或者嵌入任何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) 下载下来,然后解压到你的硬盘上的什么地方。

你将看到下面的子目录:

?doc: 用户手册,javadoc和开发指南

?examples: 用户手册中用到的示例流程

?install: 用于不同环境的安装脚本

?lib: 第三方库和一些特定的jBPM依赖库

?src: 源代码文件

?jbpm.jar: jBPM主库归档

?migration: 参考开发指南

2.2. 必须安装的软件

jBPM需要JDK (标准java)5或更高版本。

https://www.360docs.net/doc/cf9775200.html,/javase/downloads/index.jsp

为了执行ant脚本,你需要1.7.0或更高版本的apache ant:

https://www.360docs.net/doc/cf9775200.html,/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在Mac OSX平台下)。

打开命令控制台,进入目录${jbpm.home}/install。然后运行

或者

这将

?把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

?安装jBPM web控制台

?安装Signavio web建模器

当这些都完成后,JBoss(或Tomcat,根据demo.setup脚本中的选择)会在后台启动。一旦eclipse完成启动,你可以继续执行下面的教程第 3 章流程设计器(GPD)来开始编码你的jBPM业务流程。

或者你可以启动建模流程,通过Signavio web设计器。

或者使用jBPM控制台。你可以使用下面用户之一进行登陆:

表 2.1. 示例控制台用户:

目前存在的问题:现在,对于一些比较慢的机器,在初始化报表时,控制台的失效时间太短了,所以当你第一次请求报表时,会出现超时,控制台会崩溃。注销,然后再次登录,就可以避过这个问题。这个问题已经提交到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表

?https://www.360docs.net/doc/cf9775200.html,er.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:下载一个JBoss AS,已经测试过当前的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

作为可选方案,你可以在${user.home}/.jbpm4/build.properties 中设置自定义的参数值

2.5. 依赖库和配置文件

我们提供了自动安装jBPM的ant脚本。这些脚本会将正确的依赖库和正确的配置文件为你安装到正确的位置。如果你想在你的应用中创建自己的jBPM,可以参考开发指南获得更多信息。

2.6. JBoss

install.jbpm.into.jboss任务会把jBPM安装到你的JBoss 5中。进入安装目录下,执行ant -p可以获得更多信息。这个安装脚本会把jBPM安装为一个JBoss 的服务,因此所有应用都可以使用同一个jBPM的流程引擎。

可以指定-Djboss.home=PathToYourJBossInstallation 来修改你的JBoss的安装路径。

在JBoss中,ProcessEngine可以通过JNDI获得, new

InitialContext().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应用的一部分,可以使用

https://www.360docs.net/doc/cf9775200.html,er.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表,使用当前的引擎版本(key db.version)和ID生成器版本(key next.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表中使用key db.version用来在未来发布中精确指定标示符。

?ID生成策略是完全跨数据库的。下一个有效的ID是通过搜索所有包含主键列的表计算出的,保存在key next.dbid中在JBPM4_PROPERTY表中。

?流程语言设置为jpdl-4.0 用于所有已经存在的流程定义,对应key langid 在表JBPM4_DEPLOYPROP中。jPDL解析器对应 langid属性来读取流程文档以此支持向后的兼容。

2.11. 流程设计器(GPD)

图形化流程设计器(GPD)使用Eclipse作为其平台,这一节的内容将介绍如何获得和安装Eclipse,并把GPD插件安装到eclipse上。

2.11.1. 获得eclipse

你需要Eclipse3.5.0

使用实例安装或手工下载eclipse:Eclipse IDE for Java EE Developers (163 MB)

eclipse的传统版本无法满足要求,因为它没有XML编辑器。 Eclipse的Java 开发者版也可以工作。

2.11.2. 在eclipse中安装GPD插件

使用Eclipse软件升级(Software Update)机制安装设计器是非常简单的。在gpd目录下有一个install/src/gpd/jbpm-gpd-site.zip文件,这就是更新站点(archived update site)的压缩包。

在Eclipse里添加更新站点的方法:

?帮助 --> 安装新软件...

?点击添加...

?在添加站点对话框中,单击压缩包...

?找到 install/src/gpd/jbpm-gpd-site.zip 并点击 '打开'

?点击确定在添加站点对话框中,会返回到 '安装'对话框

?选择出现的 jPDL 4 GPD 更新站点

?点击下一步.. 然后点击完成

?接受协议

?当它询问的时候重启eclipse

图 2.1. 添加设计器的更新站点

2.11.

3. 配置jBPM运行时

?点击 Window --> Preferences

?选择 JBoss jBPM --> jBPM 4 --> Runtime Locations

?点击 Add...

?在 Add Location 对话框中,输入一个名字,比如 jbpm-4.0 然后点击Search...

?在 Browse For Folder 对话框中,选择你的jbpm根目录,然后点击 OK ?点击 OK 在 Add Location 对话框中

图 2.2. 定义jBPM依赖库

2.11.4. 定义jBPM用户库

这一节演示如何在你的工作空间定义一个用户库,用来放置jBPM的库文件。如果你创建一个新工程,只需要将用户库全部添加到build path下

?点击窗口 --> 属性(Windows --> Preferences)

?选择Java --> 创建路径 --> 用户类库(Java --> Build Path --> User Libraries)

?点击新建(New)

?类型名字jBPM Libraries

?点击添加JARs(Add JARs...)

?找到jBPM安装程序下的lib目录

?选择lib下的所有jar文件并点击打开(Open)

?选择jBPM Libraries作为入口

?重新点击添加JARs(Add JARs)

?在jBPM的安装程序的根目录下选择jbpm.jar文件

?点击打开(Open)

?在jbpm.jar下选择源码附件(Source attachment)作为入口

?点击编辑(Edit)

?在源码附件的配置(Source Attachment Configuration)对话框中,点击目录(External Folder...)

?找到jBPM安装程序下的src目录

?点击选择(Choose)

?点击两次'确定'(Ok)会关闭所有对话框

图 2.3. 定义jBPM类库

2.11.5. 在目录中添加jPDL4模式

如果你想直接编辑XML源码,最好是在你的XML目录中指定一下模式(schema),这样当你在编辑流程源码的时候,可以更好的帮助你编写代码。

?点击窗口 --> 属性(Windows --> Preferences)

?选择XML --> 目录(XML --> CataLog)

?点击添加(Add)

?添加XML目录(Add XML Catalog Entry)的窗口打开

?点击map-icon的图标下面的按钮并选择文件系统(File System)

?在打开的对话框中,选择jBPM安装目录下src文件夹中jpdl.xsd文件

?点击打开(Open)并且关闭所有的对话框

图 2.4. 在目录中添加jPDL4模式

2.11.6. 导入示例

这一节我们会在Eclipse的安装程序下导入示例工程

?选择文件 --> 导入(File --> Import)

?选择正常 --> 工作区中已有的工程(General --> Existing Projects into Workspace)

?点击下一步(Next)

?点击浏览去选择一个根目录(Browse)

?通向jBPM安装程序的根目录

?点击好(Ok)

?示例工程会自动找到并且选中

?点击完成(Finish)

在配置了jBPM用户依赖库也导入了实例后,所以的例子可以作为JUnit测试运行了。在一个测试上右击,选择'Run As' --> 'JUnit Test'。

设置完成,现在你可以开始享受这个最酷的Java流程技术。

2.11.7. 使用ant添加部分文件

你可以使用eclipse和ant整合来处理流程的发布。我们会告诉你它是如何在例子里工作地。然后你可以把这些复制到你的项目中。首先,打开ant视图。

?选择Window --> Show View --> Other... --> Ant --> Ant

?例子项目中的构建文件build.xml,从包视图拖拽到ant视图。

第 3 章流程设计器(GPD)

这一章我们讲述了怎样使用流程设计器,在安装流程设计器和配置好例子之后,你会看到jPDL流程文件都有一个对应的特殊图标,在包视图的下面双击某一个这种图标文件,就会在流程设计器中打开一个jPDL流程文件。

图 3.1. 流程设计器

3.1. 创建一个新的流程文件

Ctrl+N将打开向导选择器。

图 3.2. 选择向导对话框

选择 jBPM --> jPDL 4 文件(File). 点击下一步( Next >). 然后新的jPDL 4文件(New jPDL 4 File),就会打开向导。

图 3.3. 创建一个新的流程对话框

选择上一级目录,输入一个文件名字并点击'完成'(Finish),你便创建了第一个jPDL流程文件。

3.2. 编辑流程文件的源码

GPD里有一个可以修改XML内容的'Source'标签。可以在标签里直接进行编辑,当你切换到图形时,图形视图会反映出刚才进行的修改。

图 3.4. 使用source视图编辑jPDL

第 4 章部署业务归档

业务归档是一系列文件的集合分发在一个jar格式的文件里。。业务归档中的文件可以使jPDL流程文件,表单,类,流程图和其他流程资源。

4.1. 部署流程文件和流程资源

流程文件和流程资源必须部署到流程资源库里并保存到数据库中。

这儿有一个jBPM的ant任务来部署业务流程归档

(org.jbpm.pvm.internal.ant.JbpmDeployTask)。 JbpmDeployTask可以部署

单独的流程文件和流程归档。它们通过JDBC连接直接部署到数据库中。所以在你部署流程之前需要保证数据库正在运行。

创建和部署流程归档的例子可以在发布包的examples目录下找到ant脚本(build.xml)。让我们看一下相关部分。首先,path用来声明包含jbpm.jar 和它的所有依赖库。

你使用的数据库的JDBC驱动jar应该也包含在path中。 MySQL, PostgreSQL

和HSQLDB的驱动都包含在发布包中。但是oracle的驱动你必须从oracle网站上单独下载,因为我们没有被允许重新分发这个文件。

当一个业务归档被发布时,jBPM扫描业务归档中所有以.jpdl.xml结尾的文件。所以那些文件会被当做jPDL流程解析,然后可以用在运行引擎中。业务归档中所有其他的资源也会作为资源保存在部署过程中,然后可以通过RepositoryService类中的 InputStream getResourceAsStream(long deploymentDbid, String resourceName);访问。

为了创建一个业务归档,可以使用jar任务。

在jbpm-deploy被使用之前,它需要像这样进行声明:

然后可以像这样使用ant任务

表 4.1. jbpm-deploy属性:

表 4.2. jbpm-deploy元素

4.2. 部署java类

从4.2版本开始,jBPM拥有了一个像jBPM3一样的流程类加载器机制。

从流程中引用的类必须至少在下面三种方式之一是有效的:

?业务存档中的.class文件。和jBPM3中不同,现在存档文件的根被用来搜索类资源。所以当类com.superdeluxsandwiches.Order 在流程文件中引用时,它会找到,当它在相同的业务归档中的入门名称

com/superdeluxsandwiches/Order.class 类会被缓存(key是结合了发布和上下文类加载器),所以它应该比jBPM 3中执行的更好。

?在调用jBPM的web应用中可用的类。当jBPM部署到服务器端的jboss或tomcat 中,jBPM会找到你的 web应用或企业应用,调用jBPM的类。这是因为你使用了当前上下文类加载器,在流程执行过程中查找类时。

?服务器端可用的类文件。比如像是在 tomcat和jboss的lib目录下的jar。

在实例中,一个包含了所有类的examples.jar被创建了,并把它放在了JBoss 服务器配置的lib目录下。 tomcat下操作相同。参考

install.examples.into.tomcat 和install.examples.into.jboss任务。在未来的一个发布版中我们可能切换到业务存档自身包含的类。

第 5 章服务

5.1. 流程定义,流程实例和执行

一个流程定义式对过程的步骤的描述。比如,一个保险公司可以有一个贷款流程定义描述公司如何处理贷款请求的步骤的描述。

图 5.1. 贷款流程定义示例

流程实例代表着流程定义的特殊执行例子,例如:上周五John Doe提出贷款买船,代表着一个贷款流程定义的流程实例。

一个流程实例包括了所有运行阶段,其中最典型的属性就是跟踪当前节点的指针。

图 5.2. 贷款流程实例的例子

假设汇款和存档可以同时执行,那么主流程实例就包含了2个用来跟踪状态的子节点:

图 5.3. 贷款执行例子

一般情况下,一个流程实例是一个执行树的根节点,当一个新的流程实例启动时,实际上流程实例就处于根节点的位置,这时只有它的"子节点"才可以被激活。

使用树状结构的原因在于,这一概念只有一条执行路径,使用起来更简单。业务API不需要了解流程实例和执行之间功能的区别。因此, API里只有一个执行类型来引用流程实例和执行。

5.2. ProcessEngine流程引擎

在jBPM内部通过各种服务相互作用。服务接口可以从ProcessEngine中获得,它是从Configuration构建的。

流程引擎是线程安全的,它可以保存在静态变量中,甚至JNDI中或者其他重要位置。在应用中,所有线程和请求都可以使用同一个流程引擎对象,现在就告诉你怎么获得流程引擎。

这章中涉及到的代码和下一章中关于流程部署的代码,都来自

org.jbpm.examples.services.ServicesTest 例子。

上面的代码演示了如何通过classpath根目录下默认的配置文件jbpm.cfg.xml 创建一个ProcessService。如果你要指定其他位置的配置文件,请使用setResource()方法:

还有其他setXxxx()方法可以获得配置内容,例如:从InputStream中、从xml 字符串中、从InputSource中、从URL中或者从文件(File)中。

我们可以根据流程引擎得到下面的服务:

JBPM工作流演示系统使用说明

JBPM工作流演示系统使用说明 安装讲明 本系统在JDK1.5的基础上编译,请选择支持JDK1.5及以上版本的WEB 容器,举荐使用Tomcat5.5,不保证与其他WEB服务器兼容,理论上应该可不能显现兼容性咨询题。 如果要编辑源代码,请使用Eclipse3.3+MyEclipse6.0版本,JBPM版本为3. 2.3,其他版本可能会显现文件无法打开或编译的情形。 本系统在Spring2.0+Struts1.2+Hibernate3.1基础上构建,与低版本不兼容。 数据库为MySql5.0,编码采纳utf-8。 系统架构

功能讲明 本应用要紧用于演示JBPM工作流的使用,数据均储备在数据库中,包括两大模块:权限操纵和流程操纵。权限操纵模块是为流程操纵模块服务的,为了讲明在实际应用中如何动态指定审批执行者。但实际上其代码量并不比工作流的代码少。 流程图 功能详解 1、创建请假条 创建请假条时必须输入请假天数和请假缘故,系统会对数据进行检查。同时,会自动显示当前有效的审批人,包括经理审批和老总审批。审批者是能够自定义的,而且只有一个有效,其他自动设为无效。有效的审批设置自动显示在新建请假条页面。 2、送审 新建请假条后,如果数据输入无误,自动跳转到“送审请假条”页面,该页面显示所有刚刚定义的请假条,可用操作有“送审”、“重写”。每个请假条的详细信息以列表形式显示。 术语讲明: 送审:请假条定义后,请假条处于等待审批状态,要点击“送审”按钮流程才会往下走,即交给经理审批。 重写:如果输入的信息有出入,能够点此按钮编辑请假信息。进入重写页面后,将显示该请假条在什么时候编辑过。如下图: 3、我发起的所有任务

Activiti工作流入门详解完整教学教程

Activiti入门教程详解完整教程 1.A ctiviti介绍 Activiti是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理,工作流,服务协作等领域的一个开源,灵活的,易扩展的可执行流程语言框架。 Activiti基于Apache许可的开源BPM平台,创始人Tom Baeyens是JBoss JBPM的项目架构师,它的特色是提供了eclipse插件,开发人员可以通过插件直接绘画出业务流程图。 1.1工作流引擎 ProcessEngine对象,这是Activiti工作的核心。负责生成流程运行时的各种实例及数据,监控和管理流程的运行。 1.2BPMN 业务流程建模与标注(Business Process Model and Notation,BPMN),描述流程的基本符号,包括这些图元如何组合成一个业务流程图(Business Process Diagram)

2.准备环境 2.1Activiti软件环境 1)JDK1.6或者更高版本 2)支持的数据库有:h2,mysql,oracle,mysql,db2等 3)支持Activiti运行的jar包,可以通过maven依赖引入 4)开发环境为Eclipse3.7或者以上版本,myeclipse为8.6版本2.2安装流程设计器(eclipse插件) 1)打开Help →Install New Software →Add 输入Name: Activiti Designer Location: https://www.360docs.net/doc/cf9775200.html,/designer/update/ 输入完成后,单击OK按钮等待下载完成后安装。 安装完成后在菜单选项中会出现Activiti的目录选项

jBPM开发入门指南(1)

环境准备 1、安装JDK 所有 JAVA 开发第一个需要安装的,没什么好说的。记得把系统变量 JAVA_HOME 设上。 2、安装Ant Ant 是使用 jBPM 必须的一个工具。 jBPM 中的很多操作都要用到 Ant 。 安装方法: ( 1 )先下载:https://www.360docs.net/doc/cf9775200.html,/dist/ant/binaries/,选一个如: apache-ant-1.6.5-bin.zip 。 ( 2 )解压到 D:\ant (当然其他目录也可以)。 ( 3 )设置如下系统变量: ANT_HOME=d:\ant 。 ( 4 )把 %ANT_HOME%\bin 加入到系统变量 PATH 中。 3、安装Eclipse Eclipse 不是开发 jBPM 必须的工具,但它是对 jBPM 开发很有帮助的工具,特别是 jBPM 提供了一个 Eclipse 插件用来辅助开发 jBPM 。关于 Eclipse 的安装不赘述了,本文用的版本是: Eclipse3.2 安装jBPM jBPM 的下载地址:https://www.360docs.net/doc/cf9775200.html,/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开发实例精解

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啊。那我们来解释一下这是个什么东西呢,我们看看我们的需求,员工要写一个报销单,然

jBPM4.4详细讲解

jBPM4.4 一、什么是jBPM JBPM是一个扩展性很强的工作流系统,百分百用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.css 2、在以上配置文件中的jBPM.hibernate.cfg.xml,实际上就是我们熟悉的 hibernate.cfg.xml,这里,要修改为连接我们的数据库。 oracle.jdbc.driver.OracleDriver

jbpm和shark工作流引擎对比

jbpm和shark工作流引擎对比 Xpdl:xml process definition language? Bpel:Business Process execution language? Jpdl:JBoss Jpbm Process definition language.

三亠 -出 1 (shark '^ B f Q M ) “tpcrfwwr 一 WfPmcrw 寥w ^C C E 王亍s- l t l l c -p =8 fe. n 2 Q ? su E wurhlt 1: 纟 - ory "&□.At vnsMk - uriflg jiubkd ehbunKk F t h 4- B c pruccan ^y t l i w &s.g n a l l l ) ^d 」2=-l £.x n ??=e *§9 mzr W n^ecIH ?- 一 dcunptF: nrinm 4 二-ring priority 二- 3g S u s - =Hat proc? uatm: FnxcfsFtl =J4lllh_og u cum- sutci) r M ^J C I F E J ,&d ?rcwinwO umin ?Ej ?r i - Mlm 一as- M K C d n i ) 亍 m E p whi fpenu =一一 —Jtiap :Tun??lu^::u~c 一 g JH*【 c.s-y 』。.:乂 ring bvi-yfuunc: ■王 £ l k .3 ?"『ring -2 l -x 2n : s z i n ? 2l -=^l -5-^ -]C 3.=V\3&dscBtAud r 卫 mmF. 二? H 4U ? ^u d l ,u n - ^urw sWtc : ?3a w daU “ NmeV flocs d H n : A . l _ ? I g 工 i ?亍1 £ ? ? 2 ??f& V j.i I s v v p g .gnugEvcfltAJidh ^evnerc-JJCy: ctring *l 3c c s l - 5 -il r g d remircc ndmc : K 3

Activiti工作流入门详解完整教程

A c t i v i t i工作流入门详 解完整教程 Prepared on 24 November 2020

Activiti入门教程详解完整教程 1.Activiti介绍 Activiti是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理,工作流,服务协作等领域的一个开源,灵活的,易扩展的可执行流程语言框架。 Activiti基于Apache许可的开源BPM平台,创始人TomBaeyens是JBossJBPM 的项目架构师,它的特色是提供了eclipse插件,开发人员可以通过插件直接绘画出业务流程图。 1.1工作流引擎 ProcessEngine对象,这是Activiti工作的核心。负责生成流程运行时的各种实例及数据,监控和管理流程的运行。 1.2BPMN 业务流程建模与标注(BusinessProcessModelandNotation,BPMN),描述流程的基本符号,包括这些图元如何组合成一个业务流程图(BusinessProcessDiagram) 2.准备环境 2.1Activiti软件环境 1)或者更高版本 2)支持的数据库有:h2,mysql,oracle,mysql,db2等 3)支持Activiti运行的jar包,可以通过maven依赖引入 4)开发环境为或者以上版本,myeclipse为版本 安装流程设计器(eclipse插件) 1)打开HelpInstallNewSoftwareAdd

输入Name:ActivitiDesigner designer/update/ 输入完成后,单击OK按钮等待下载完成后安装。 安装完成后在菜单选项中会出现Activiti的目录选项 设置eclipseactivit插件的画流程图选项 打开菜单Windows-->Preferences-->Activiti-->Save下流程图片的生成方式 勾选上Createprocessdefinitionimagewhensavingthediagram操作,勾选上这个操作后在画流程图后保存eclipse会自动生成对应的流程图片。 准备开发环境 Activiti依赖 在eclipse左边工作栏右键New选择创建MavenProject项目,创建一个名为ActivitiTest的项目 点击Finish完成。 右键项目选择Properties,选择ProjectFacets勾选上图中的选项,点击Apply,再点击OK 然后将项目转换成web项目,右键项目选择Properties,在ProjectFacets中做如下勾选,然后点击Appy应用和OK确定 然后右键项目Properties,选择DeploymentAssembly,将test相关目录Remove掉之保留main下面需要发布的内容,如下图 然后点击Appply和OK 然后在文件中添加以下依赖

jbpm数据库说明

jBPM,全称是Java Business Process Management,是一种基于J2EE 的轻量级 工作流管理系统。 一、介绍下大背景工作流的应用市场部分内容就不提了。首先提一下目前工作流域 的两种主流方向 1、workflow 。 代表osworkflow 等。 workflow 的特点为:其主要侧重于对流程的处理模型方面,也就是说它关注的重心是流程的处理 2、BPM商业逻辑流程模型 BPM的重心为商业逻辑流程模型的处理 其中以JBPM为代表 这是两者最大的区别,也就是切入点不同。不过对我们实际应用来说,选哪个区别都不是很大说到工作流就要提到WFM组织,这个组织是国际上一些厂商组成的一个工作流的组织,该组织给出了一个他们自己定义的工作流的定义,及XPDL语义。 该定义将工作流的定义包括为至少以下五部分内容: 1、工作流过程活动 2、转移信息 3、参与者声明 4、外部应用程序声明 5、相关数据 并给出了标准的语法来描述上述元数据 1:workflow process 2:activity 3:transition 4:application 5:date field 由于JBPM不符合上述语法定义,因此JBPM是不符合该WFM规范的不过上述每部分内容在JBPM都有自己的定义来描述 二、JBPM流程的一个基本的处理步骤 1、加载(发布)流程定义 2、启动流程 3、处理任务 4、记录流程的相关状态 1、加载(发布)流程定义 这个意思是,我们通过jbpm 的designer 插件,或者是用其他工具,制定出processDefinition (可以是String ,可以是包文件,也可以是流数据等),然后将其加载到应用中的过程。这个加载可以是写入内存中,或者是直接 写入数据库等 2、启动流程

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 多三条,

Activiti5基于jBPM4的开源工作流系统10分钟入门指南

https://www.360docs.net/doc/cf9775200.html, 觉得activiti设计得简单而强大,尝试翻译一下他的10分钟入门指南: 10分钟入门指南 通过一个(非常简单的)业务流程,介绍一些基本的Activiti工作流感念和API接口。 使用案例 这个用例叫干脆(straightfoward):有一个公司,暂且叫它BPMCorp。在BPMCorp内部,会计部门每个月都要写一份财务报告给公司的股东。但在发送给所有股东之前必须经过上级部门的批准。下面涉及的所有文件及代码片段均可以通过Activiti分发的examples范例包中找到,请查看包 https://www.360docs.net/doc/cf9775200.html,ertask的内容。 流程图 如上所述的业务流程可以使用Activiti的可视化流程编辑器 Activiti Modeler查看及编辑。使用BPMN2.0的标准符号则如下图所示: 这里没有什么特殊的东西,图中看到的是一个none start event(左边的圆圈),其次是两个user tasks:"撰写财务报告"和”批准财务报告",以 none end event (右边边框加粗型的圆圈)结束。XML表示 上述业务流程的XML表示形式如下所示(FinancialReportProcess.bpmn20.xml). 流程中包含一些主要的元素(通过点击链接可以查看更详细的BPMN 2.0 元素的说明): ?none start event 让我们认识到要开始一个流程。 ?user tasks声明一个基于用户操作的流程任务. 注意第一个任务是分派用户组accountancy的, 而第二个任务是分派到用户组management的. 查看分派用户任务章节可以得到更多怎样分派任务到用户或组的信息。

jbpm工作流入门教程

jbpm工作流入门教程 1.jBPM的简单介绍 jBPM是JBOSS下的一个开源java工作流项目,该项目提供eclipse插件,基于Hibernate实现数据持久化存储。 参考 https://www.360docs.net/doc/cf9775200.html,/products/jbpm 2.jBPM和myeclipse的冲突 当eclipse安装了myeclipse和jBPM时候,可能有冲突,具体表现在jBPM 的流程设计器不能在eclipse中使用。 3.Hibernate连接mysql数据库的一般参数 下面的配置参数,根据需要可以修改: jbpmtest是mysql中的schema的名字; GBK是字符集,可以根据需要修改; username=root,mysql数据库的用户名是root; password=mysql,mysql数据库的用户密码是mysql; hibernate.dialect=org.hibernate.dialect.MySQLDialect hibernate.connection.driver_class=com.mysql.jdbc.Driver hibernate.connection.url=jdbc:mysql://localhost/jbpmtest?useUnicode=true&characterEncoding= GBK

https://www.360docs.net/doc/cf9775200.html,ername=root hibernate.connection.password=mysql hibernate.show_sql=true hibernate.c3p0.min_size=1 hibernate.c3p0.max_size=3 4.Hibernate连接Oracle数据库的一般参数 hibernate.dialect=org.hibernate.dialect.Oracle9Dialect hibernate.connection.driver_class=oracle.jdbc.driver.OracleDriver hibernate.connection.url=jdbc:oracle:thin:@localhost:1521:orcl https://www.360docs.net/doc/cf9775200.html,ername =jbpm hibernate.connection.password=jbpm 5.为jBPM创建数据库表等内容 5.1.为mysql创建数据库以及数据内容 JbpmSessionFactory.buildJbpmSessionFactory().getJbpmSchema().dropSchema(); JbpmSessionFactory.buildJbpmSessionFactory().getJbpmSchema().createSchema(); 这2个语针对mysq有效. 5.2.为oralce创建数据库以及数据内容 JbpmSessionFactory.buildJbpmSessionFactory().getJbpmSchema().dropSchema();

jbpm学习笔记

Jbpm学习 工作流(系统)主要概念 * 流程定义:预先定义的业务流转逻辑 * 流程实例:业务的一次实际流转过程 * 参与者:任务的执行者 * 活动(任务):组成流程定义的节点 * 活动实例:组成流程实例的元素 * 流转:从一个节点到另一个节点这一行为 * 工作列表:当前需要办理的任务集合 * 工作流引擎:工作流的核心组件,对流程实例,任务实例以及其状态进行管理工作流系统研究入口点 * 如何编写流程定义 * 如何部署流程 * 如何加载流程 * 如何启动流程 * 如何执行任务 * 如何完成任务 概念:ProcessEngine * 定义了流程的业务逻辑,包括业务节点和流转。是有向图结构 概念:ProcessDefination * ProcessDefination执行期间的体现 * 包含流程定义被解释之后的一些信息,诸如开始时间,结束时间 * 其它相关的信息 概念:Task TaskInstance * task 是ProcessDefination的组成部分,定义了活动的具体内容 * TaskInstance Task被解释执行的信息,开始时间,结束时间,参与者id Create start end三种状态 概念:actor * 活动的参与者 * JBPM目前只需要actor的id,对actor的解释主要由业务应用程负责 *任务创建时可以指定任务的参与者,也可以不指定 在一般的系统中,不建议采用JBPM的identity组件

配置运行环境 * 添加依赖库 Jbpm.jar以及lib下所有的jar文件 * 添加配置文件 进入F:\实验室\jbpm\jbpm-4.4\examples\src拷贝jbpm.cfg.xml,jbpm.hibernate.cfg.xml,jbpm.mail.properties,jbpm.mail.templates.xml,logging.properties配置文件 管理流程定义 启动流程引擎ProcessEngine processEngine;对processEngine进行初始化processEngine = Configuration.getProcessEngine(); * 发布流程定义 发布是由repositoryService实现的 RepositoryService repositoryService = processEngine .getRepositoryService(); repositoryService.createDeployment().addResourceFromClasspath( "helloworld.jpdl.xml").deploy(); * 查看流程定义 搜索所有已发布流程定义 List list = repositoryService.createProcessDefinitionQuery().list(); * 删除流程定义 // 删除流程引擎 repositoryService.deleteDeploymentCascade(deploymentId);

2020年(BPM业务流程管理)jbpm工作流全程笔记

(BPM业务流程管理)jbpm工作流全程笔记

1.工作流 <1>工作流(Workflow):就是自动运作的业务过程部分或整体,表现为参与者对文件、信息或任务按照规程采取行动,并令其在参与者之间传递。简单地说,工作流就是一系列相互衔接、自动进行的业务活动或任务。工作流是针对工作中具有固定程序的常规活动而提出的一个概念。通过将工作活动分解成定义良好的任务、角色、规则和过程来进行执行和监控,达到提高生产组织水平和工作效率的目的。 <2>工作流就是工作流程的计算机化,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。工作流要解决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递文档、信息或者任务。 <3>通俗的说,就是多个人在一起合作完成某件事情。 <4>工作流可实现业务或公文的申请、审批、会签、登记、操作等环节的管理,可将工作过程进行记录,便于日后检查。并实现数据的规范化录入、查询、统计和存档。OA(办公自动化)主要技术之一就是工作流。 2.工作流管理系统(WorkflowManagementSystem,WfMS) <1>主要功能是通过计算机技术的支持去定义、执行和管理工作流,协调工作流执行过程中工作之间以及群体成员之间的信息交互。工作流需要依靠工作流管理系统来实现。 <2>工作流管理系统是定义、创建、执行工作流的系统,应能提供以下三个方面的功能支持: ①定义工作流:包括具体的活动、规则等; ②运行控制功能:在运行环境中管理工作流过程,对工作流过程中的活动进行调度; ③运行交互功能:指在工作流运行中,WfMS与用户(活动的参与者)及外部应用程序工具交互的功能。 3.JBPM,全称是JavaBusinessProcessManagement <1>JBPM是一种基于J2EE的轻量级工作流管理系统,jBPM是公开源代码项目,官方主页为:http:///jbossjbpm <2>Jbpm的使用 **步骤 *编写流程定义(定义规则); *部署流程定义到系统中; *执行流程(使用指定的流程定义); ①编写流程定义 举例:员工报销费用的流程描述:员工需要先填写报销单据;交给其经理进行审批;审批(通过)后到财务去领款。 以上流程由三个步骤组成,每个步骤即是一个任务,分别由一个角色执行。应该使用jBPM提供的JPDL (jBPMProcessDefinitionLanguage)来描述这个流程,这样使用了jBPM的系统才能看的懂。jPDL:是一种直观的流程语言,可以使用任务、等待状态、定时器、自动化动作等等图形化地表示流程。jPDL 认为一个商务流程可以被看作是一个UML状态图。

jBPM 4.4 入门指南

1.工作流与工作流管理系统 1.1. 工作流(Work Flow) 工作流就是工作流程的计算机模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。工作流要解决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递文档、信息或者任务。通俗的说,流程就是多个人在一起合作完成某件事情的步骤,把步骤变成计算机能理解的方式就是工作流。 公司内采用纸张表单,手工传递的方式,一级一级审批签字,工作效率低下,对于统计报表功能则不能实现。而采用工作流软件,使用者只需在电脑上填写有关表单,会按照定义好的流程自动往下跑,下一级审批者将会收到相关资料,并可以根据需要修改、跟踪、管理、查询、统计、打印等,大大提高了效率,实现了知识管理,提升了公司的核心竞争力。 作为一个成熟稳定的工作流产品,不仅提供日常办公和关键业务流程智能化管理,而且能根据公司的特殊实际要求轻松方便地随时定制各种流程,并可实现不同角色不同的跟踪、查询、统计、打印等强大功能 1.2.工作流管理系统(Workflow Management System) 工作流管理系统(WfMS)的主要功能是通过计算机技术的支持去定义、执行和管理工作流,协调工作流执行过程中工作之间以及群体成员之间的信息交互。工作流需要依靠工作流管理系统来实现。工作流管理系统是定义、创建、执行工作流的系统,应能提供以下三个方面的功能支持: 1.定义工作流:包括具体的活动、规则等 2.运行控制功能:在运行环境中管理工作流过程,对工作流过程中的活动进行调度 3.运行交互功能:指在工作流运行中,WfMS与用户(活动的参与者)及外部应用程 序工具交互的功能。 一、定义工作流 二、执行工作流

jBPM

jBPM-jPDL学习笔记—框架设计简介(一) 概述: jBPM(JBoss Business Process Management业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。 jPDL是构建于jBPM框架上的流程语言之一。在jPDL中提供了任务(tasks)、待处理状态(wait states)、计时器(timers)、自动处理(automated actions)…等术语,并通过图型化的流程定义,很直观地描述业务流程。 jPDL可以部署于Java语言的任何应用环境下,JavaSE Application(Swing/SWT)、JavaEE Application(Application Server) jPDL分发包组成 目前jPDL的最新版本是3.2.2,您可以在以下地址: https://www.360docs.net/doc/cf9775200.html,/jbossjbpm/jpdl_downloads/ 获得官方下载包。下载包分为两种,一种是标准包(jbpm-jpdl-3.2.2.zip)只有20M左右;一种是套件包(jbpm-jpdl-suite-3.2.2.zip)将近80M。两者最大的区别是套装包自带一个已经配置好的jboss服务,下载解压缩后,可直接运行。 jPDL的核心程序包(jbpm-jpdl.jar) 它是一个典型的jar文件,它涵盖对流程定义和运行时流程实例上下文环境的操作API。在最简化的业务流程样例中,jPDL将流程定义存储与XML格式的定义文件中,在运行时载入内存,在内存里记录完整的业务实例和执行过程的环境变量,并完成全部操作。显然,在实际应用中,流程信息必须被持久化的存储于数据库中。jPDL使用了Hibernate作为其对象持久化的API。 Graphical Process Designer插件(jbpm-jpdl-designer-3.1.2.zip) 它是一个基于Eclipse的图型编辑插件。使用它可以对业务流程进行可视化的定制,而无须手动编辑XML文件。该插件还提供了流程定义上传功能,可以将新定义的流程发布到在线运行的jPDL系统上。

JBPM源码浅析

JBPM源码浅析 关键字: jbpm workflow 工作流 离职啦,工作交接中,记录一下。 就如同了解Servlet规范、Servlet容器设计和实现一样,学会一种workflow 的建模、引擎设计和实现也是必备的。工作流这东西是业务系统的一个核心模块,现在的大多数企业业务系统大多数是业务驱动的,如新闻行业采编发、制造业的采供销、金融保险的审批等,协同OA就不用说了。BPM、ESB、SOA现在很火啊! 下面的总结肯定欠成熟,70%合理就不错啦,看到这篇blog的朋友,一定要批判接受哦。 当前我指的JBPM是3.2版本,因为从JBPM2.0到3.0,其API从package到class 都完全重新设计了,以及其背后的建模思想和架构。在2.0版本里,是按照Spring+Hibernate那种Transaction Script方式组织的,OO的概念比较弱,里面是大量的interface、impl、service。而3.0版本,完全按Domain Model方式组织,Hibernate透明持久化,它是我见到的O/R Mapping最优雅的应用。 在当前的3.2版本里,其整体架构可以这么去理解:领域对象,如ProcessDefinition、ProcessInstance、Node、Token、Transition等,都是Rich Model,里面的方法主要是处理业务,以及建立领域对象之间的关联,持久化则完全放在XXXSession中,如TaskMgmtSession,GraphSession等,也可以认为这些XXXSession是DAO,负责处理持久化。另外, org.jbpm.persistence.db.DbPersistenceService这些类相当于最底层的数据库Helper类。总之,JBPM的技术架构非常清晰易懂,也是非常典型的Domain Driven Design,在这种架构中,分层的概念被弱化了。 上面是从架构的角度看待JBPM设计,其引擎设计和实现,则隐藏在架构下。了解其引擎设计思想,我的建议是,先仔细读读JBPM的User Guide第四章Graph Oriented Programming,专门探讨流程建模的理论,里面附带了一个微型的JBPM 实现,几乎包括流程建模的绝大部分,如顺序流、并行、分支等: https://www.360docs.net/doc/cf9775200.html,/jbpm/gop/jbpm.gop.zip,我建议研读JBPM源码前,先把这个理解透,JBPM的流程引擎核心代码和它非常相似,包括类名,只是扩展了一些。 我用代码统计工具统计了一下,JBPM源码总共4w多行,除去注释和空行,约2万6千行。需要我们hack的核心、比较难、代码多的类约40个(共400多),反正它花了我整四天的时间,现在基本都弄清楚了。我主要是通过一个请假流程的部署、创建、任务执行来动态debug、静态查看的。JBPM源码中最难读懂的那部分是引擎调度,也就是org.jbpm.graph相关的几个包,最重要的是GraphElement和其子类Transition等、Node及其子类Fork等、ExecuteContext 和Token。而引擎调度这部分, JBPM附带了一个微型JBPM实现,我在前面介绍

相关文档
最新文档