`
hepx
  • 浏览: 151807 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JBPM学习心得

阅读更多

JBPM学习心得了解:
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同样安装即可。安装好后我们可以看到如下所示表示安装成功。
JBPM学习心得 - hepanxi - hepanxi的博客
4.myeclipse当中配置JBPM的运行环境.找到myeclipse当中window下的首选项找到JBoss JBPM下的Runtimes localhosts在右边的列表当中添加刚刚我们安装的JBPM就可以了,如下图:
JBPM学习心得 - hepanxi - hepanxi的博客
这样我们的准备工作就其本完成。
 
开发JBPM项目:
当然这是在前面准备工作完成后才可以做的。
新建一个JBPM项目如图:
JBPM学习心得 - hepanxi - hepanxi的博客
       
新建好的目录如下所示:
JBPM学习心得 - hepanxi - hepanxi的博客
       src/main/java
目录下存放我们在流程各个节点的事件action、转向action、任务分配action等业务逻辑。
       src/main/config目录下存放的是我们的配置文件,其中得要的是hibernate.cfg.xml,在这个文件当中我们要配置我们的数据库信息。
       src/test/java此目录用来存放我们的单元测试代码。
       src/main/jpdl这个下面是我们编写的流程定义文件,由于JBPM提供可视化的开发工具所以在开发这个流程文件的时候非常简单。选中这个目录然后单击右键在弹出的选项当中选择新建在列表中选择其它然后选中JBPM节点下的process Definition。如下所示:
JBPM学习心得 - hepanxi - hepanxi的博客
JBPM学习心得 - hepanxi - hepanxi的博客
要开发一个好的流程,必须要对所有的节点的内容和作用非常清楚。在VSS7.0项目下有一个有关JBPM开发指南的PDF文档。这个里面写的很详细对我们了解JBPM有很好的帮助。我下面的例子也是借用此文档当中的例子加以改进的。
示例如下:

JBPM学习心得 - hepanxi - hepanxi的博客src/main/java中我新建了actiondecisiontask三个包,这三个包中分中放置事件action、转向action和任务分配action。记住JBPM为不同的动作提供了不同的实现提口。例如:普通的事件action 实现   ActionHandler接口,此接口只提供了一个方法,我们可以在这个方法当中写我们的业务。如下:

JBPM学习心得 - hepanxi - hepanxi的博客
转向action 实现了 DecisionHandler 接口,此接口也只提供了一个方法。如下:

JBPM学习心得 - hepanxi - hepanxi的博客
任务分配action 实现 AssignmentHandler 接口,此接口也只提供了一个方法。如下:
 
JBPM学习心得 - hepanxi - hepanxi的博客

完成后的整体结构如下所示:
JBPM学习心得 - hepanxi - hepanxi的博客  发布JBPM项目到数据库:
这里有两个方法可以实现。
方法一:
       我用的是MYSQL数据库。其它的数据库是一样的。只要支持hibernate的数据库都支持JBPM。因为JBPM与底层数据库交互采用的是hibernate。前面的准备工作当中有说到在安装目录的\database是创建各种JBPM数据库的执行脚本,所以这里只要找到MYSQL的执行脚本导入数据库就可以了。然后要在项目当中的hibernate.cfg.xml中配置我们的MYSQL数据库。
配置如下:

JBPM学习心得 - hepanxi - hepanxi的博客
在这个配置文件当中有一点要注意,如下:hibernate.hbm2ddl.auto属性默认的值是create表示重新生成所有表,这样程序每运行一次就会重新创建一次所有表而之前的数据就会丢失。为了避免这样的问题所以我们改成update就可以了。

JBPM学习心得 - hepanxi - hepanxi的博客
经过测试只要在数据库当中新建一个空的数据库。然后在上面的hibernate.cfg.xml配置文件当中hibernate.commecntion.url指定你刚建的数据库,hibernate.hbm2ddl.auto属性第一次运行程序采用默认值create,这样第一次运行程序就会自动创建JBPM所有的表,省掉了上面执行SQL脚本的步骤。当然运行完第一次后记得将hibernate.hbm2ddl.auto的值改成update
 
如果我们只需要手工编写代码来发布流程定义的话以上的工作就可以实现了。
发布代码如下:

JBPM学习心得 - hepanxi - hepanxi的博客
这样我们就把我们的流程发布到MYSQL数据库,我们可以打开MYSQL来检查一下是否发布成功。

JBPM学习心得 - hepanxi - hepanxi的博客
这里我重复发布了一次我的流程,所以在数据库当中有两个相同名字流程定义数据项。
疑问:我们在程序当中获得我们的流程定义也是通过名字找到的。那现在有两个一样名字的流程定义,那JBPM是怎么来找到我所要找的那个流程定义呢?
我们看到上面的表当中有一个VERSION_字段(版本),在第一次发布JBPM流程时这个VERSION_的值是1以后每发布一次这个JBPM VERSION_的值将加1。所以查找有相同名字的流程定义,JBPM就会默认找出最后一个版本流程返回。如下:

JBPM学习心得 - hepanxi - hepanxi的博客
当然我们也可以找出指定版本的流程定义。如下:

JBPM学习心得 - hepanxi - hepanxi的博客 
方法二:
这个方法要相对于方法一复杂很多,要借用服务器和一个发布程序。这里我们用JBoss服务器说明。发布程序也不要我们去写,JBPM提供了这样的发布程序。记得我们在安装JBPM时有一步要指定一个JBoss服务器吗?指定这一步后在JBoss的安装目录\server\default\deploy\jbpm多出了一个jbpm目录,在这个目录当中就有JBPM提供的发布程序(jsf-console.war)。下面我们要对一些配置文件进行修改才可以运行JBoss和发布程序。
1.修改{jboss.home}\server\default\deploy\jbpm\jbpm-mysql-ds.xml配置如下(这里是我的配置):

JBPM学习心得 - hepanxi - hepanxi的博客
2.在表中插入以下数据。在这之前先要确定MYSQLJBPM表以创建。

JBPM学习心得 - hepanxi - hepanxi的博客
3. 配置jboss的认证管理。打开{jboss.home}/server/default/conf/login-config.xml文件,在文件中加入如下:

JBPM学习心得 - hepanxi - hepanxi的博客
4. 配置jboss-consoleweb.xml 使admin能登录进来。 打开${Jboss-Jbpm.hom}/jsf-console.war/WEB-INF/web.xml文件。在文件当中添加<role-name>admin</role-name>如下:

JBPM学习心得 - hepanxi - hepanxi的博客 
成功完成以上修改就可以启动JBoss了,然后在地址栏输入 http://localhost:8080/jbpm-console,admin/admin登录进去.
如下所示:已列出当前所有的流程信息:

JBPM学习心得 - hepanxi - hepanxi的博客
我们点击左边的Depoy a new process 就可以进入发布流程界面如下:

JBPM学习心得 - hepanxi - hepanxi的博客
这里我们要选择一个以*.jpdl结尾的文件进行发布。我们这里还没有这个文件,我们新建一个simple2.jpdl文件,然后到myeclipse下通过工具生成simple2.jpdl的文件内容。如下:

JBPM学习心得 - hepanxi - hepanxi的博客
在发布界面选择上面生面的simple2.jpdl文件点击deploy按纽。流程就发布到数据库了。
如下所示:

JBPM学习心得 - hepanxi - hepanxi的博客 
运行JBPM
之前我们建的是一个JBPM project 项目只是用来开发和发布流程。而现在我们是要在JAVA web project当中来运行这个JBPMJBPM提供了丰富的API这使得我们可以在程序当中很容易的得到我们发布的流程以及可以通过我们自己的业务去灵活控制整个流程的走向。
首先我们新建一个JAVA web project 项目,要用到JBPM,当然要把JBPM的库文件加入到我们的项目当中来,还有MYSQL驱动包。然后把JBPM projectsrc/main/java/下的包和包下面的所有类等一同复制到JAVA web project当中的src即可。还有只要把JBPM project src/main/config下的hibernate.cfg.xml复制到JAVA web project当中。这样JBPM的所有文件已经成功迁移到JAVA web project 我们就可以在web project 当中使用JBPM了。
我简单写了几个JSPservlet测试了下这个流程。整个目录如下:
JBPM学习心得 - hepanxi - hepanxi的博客
我是把取得流程定义、生成流程实例、控制流程走向的业务都写在servlet当中处理的。前面有说到过JBPM提供了丰富的API供我们去调用和控制流程。下面就简单说下一些servlet的内容和作用。
1.从数据库找到我们发布的流程定义,并创建流程实例。如下:

JBPM学习心得 - hepanxi - hepanxi的博客
2.任务委派(这个不是在servlet当中执行,是在task nodeaction当中执行的。这里主要是拿出来讲一下他的作用,使我们下面的讲解好理解)

JBPM学习心得 - hepanxi - hepanxi的博客
上面的任务只是委派了一上人manager.同样也可以委派给多个人的。代码如下:

JBPM学习心得 - hepanxi - hepanxi的博客
3.查找出当前用户所有等待的任务。下面是找出所有等待manager审批的任务:

JBPM学习心得 - hepanxi - hepanxi的博客
4.根据业务来控制流程的走向。如下:

JBPM学习心得 - hepanxi - hepanxi的博客
5.managerTakt.jsp页面如下:
JBPM学习心得 - hepanxi - hepanxi的博客
把程序发布到TOMCAT,然后启动TOMCAT进行测试:如下:
填写报销单界面:

JBPM学习心得 - hepanxi - hepanxi的博客
manager审批的界面:

JBPM学习心得 - hepanxi - hepanxi的博客
boss审批的界面:

JBPM学习心得 - hepanxi - hepanxi的博客
最后成功的页面:

JBPM学习心得 - hepanxi - hepanxi的博客
到这里程序运行就其本完成了。页面和业务都比较简单只是用来测试。这是最其本的东西,实际当中要复杂很多。
 
没有用到的节点
1.       fork(分支):一个fork把一个执行路线分割成多个执行路线。默认分支的行为是为每个离开分支转换建立一个子令牌,在令牌要到达的分支之间建立一个父母-子女关系。
2.       join(联合):默认联合(join)假设所有来自同一个父母的子令牌联合,当在上使用fork(分支)这个情形就出现了并且所有令牌分支建立,并且到达同一个联合(join)。当全部令牌都进入联合的时候联合就结束了, 然后联合将检查父母-子女, 当所有兄弟令牌到达联合(join),父母令牌将传播(唯一的)离开转换,当还有兄弟令牌活动时,联合的行为将作为等待状态。
3.       StateState节点也叫手工节点,进入到这种节点,整个流程的执行就会中断。直到系统外参与者发起继续执行的命令,即调用signalend方法,业务程序实例的执行才能够继续下去。其实这个节点可以替换task_node节点。task_node节点当中如果没有task的话其作用跟node节点一样不会等待而是一直执行下去。
 
留下的问题:
我的测试流程当中有一个sub_process的子流程。如图:
主流程:其中财务处理流程是一个子流程

JBPM学习心得 - hepanxi - hepanxi的博客
子流程:

JBPM学习心得 - hepanxi - hepanxi的博客
当程序每次执行到这个子流程时出现以下错误:

JBPM学习心得 - hepanxi - hepanxi的博客
上面的这个问题已经解决,问题出现在的原因是主、子流程之间没有建立关系导致错误的的出现。解决代码如下:

JBPM学习心得 - hepanxi - hepanxi的博客

分享到:
评论

相关推荐

    jbpm学习资料汇总

    本资料汇总主要针对jbpm的学习,通过《JBPM学习心得(西西日志)》这份文档,我们可以深入理解jbpm的核心概念和使用方法。文档可能涵盖了以下内容: 1. **jbpm基础**:介绍jbpm的基本架构,包括工作流引擎、任务服务...

    jBPM3的学习心得

    **jBPM3学习心得** jBPM3是一款开源的工作流管理系统,主要用于处理业务流程的自动化和管理。它提供了一套完整的解决方案,包括流程建模、执行和监控,旨在帮助企业提高工作效率,规范业务流程,并实现流程的灵活...

    JAVA工作流的学习心得(转)

    在IT行业中,工作流...而"java开源工作流(workflow)---jBPM学习心得总结(原创)from1to6.htm"这个文件很可能是关于这一系列学习过程的详细记录,包含了作者从初学到精通的全阶段经验分享,值得仔细研读和借鉴。

    jbpm配置心得体会(结合各种数据库)

    ### jBPM配置心得与多种数据库环境搭建详解 #### 一、环境介绍及软件准备 在本篇文章中,我们将深入探讨如何在特定环境下配置JBPM工作流引擎,并使其与多种数据库(MySQL、Oracle等)兼容。为了更好地理解配置过程...

    jBPM的学习心得 希望对你有帮助

    在学习和使用jBPM时,了解这些基础知识是非常关键的,它们构成了jBPM核心功能的基础。同时,不断实践和探索,结合官方文档和社区资源,可以帮助你更深入地理解和掌握jBPM的高级特性,比如动态流程、事件处理、任务...

    jbpm4 学习笔记 心得

    jbpm是一款免费开源的工作流引擎,虽然现在还不完善,但是用起来还是不错的..... 我学习jbpm的一些笔记心得

    JBPM4.3 学习笔记

    文件"JBPM4学习笔记.doc"可能包含了博主在学习过程中整理的详细笔记,涵盖了上述所有知识点的实践经验和心得,对于理解JBPM4.3的使用和开发有着重要的参考价值。 总结,JBPM4.3的学习笔记涵盖了流程建模、执行、...

    jbpm中文开发指南+用户手册+demo源码+学习笔记等

    学习笔记可能是一位有经验的开发者或学习者记录下的心得和体会,包含了他们在研究jbpm过程中遇到的问题、解决方案,以及一些实用的技巧和建议。这些笔记对于初学者来说尤其有价值,因为他们可以从中借鉴他人的经验,...

    jbpm4.2开发文档

    - **社区论坛**:活跃的社区氛围,可以交流心得、解决技术难题。 - **教程视频**:直观易懂的学习方式,适合初学者快速入门。 通过以上内容,可以了解到jbpm4.2作为一款成熟的工作流引擎,在企业级应用中有广泛的...

    jBPM4原创学习文档

    自己学习jBPM4.2过程中的一些心得以及对官方文档的整理

    将JBPM部署到Tomcat的心得

    经过大量的失败之后,以及网上各位大哥的指点,终于将JBPM成功部署到了TOMCAT上面,本文就是一些心得.希望能给初学者带来点好处,有不明白可以加我QQ:376969488,共同交流和学习.

    jbpm4.3 CHM 教程

    jbpm4.3是JBoss工作流和业务过程管理(Business Process Management)平台的一个重要版本。这个CHM教程是针对想要深入理解并掌握...在学习之余,与其他学习者交流心得和问题,无疑将加深对jbpm的理解,提高实践能力。

    jbpm例子.doc

    - **学习资源**: 按照《jBPM开发入门指南》实践,通过实际操作加深理解。 - **环境搭建**: 正确安装jBPM及相关工具,确保开发环境无误。 - **插件利用**: 利用jBPM Eclipse插件简化项目创建过程。 - **代码实践**: ...

    jBPM工作流应用开发指南目录和个人笔记

    总的来说,这个压缩包提供了一个全面的jBPM学习路径,从安装配置到深入开发,再到工作流理论,最后结合个人经验,帮助开发者系统地掌握jBPM工作流应用的开发。无论是新手还是有经验的开发者,都能从中受益匪浅。通过...

    jbpm4.4 练习代码

    在提供的链接博客中,作者黄嘉腾分享了他的学习和实践心得,可能包括遇到的问题、解决方案以及对jbpm4.4的理解。通过阅读和分析这些代码,开发者可以加深对jbpm工作原理的理解,提高自己在业务流程自动化领域的技能...

    JBPM工作流开发指南

    开源工作流产品JBPM的开发指南,是本人在学习JPBM过程中一点心得体会,希望能给各位开发者在使用JBPM过程中带来帮助.

    JavaEE学习实战笔记心得

    ### JavaEE学习实战笔记心得 #### JavaSE基础要点 - **环境配置**: - **JDK下载与安装**:确保下载与操作系统相匹配的JDK版本,完成安装。 - **环境变量设置**: - **JAVA_HOME**: 指向JDK的安装目录。 - **...

    javaeye热点阅读

    3. jbpm3与jbpm4实现对比:jbpm是一款流行的工作流管理系统,对比两个版本的实现,有助于开发者了解其演进和改进,选择适合项目的版本。 4. Java、PHPRPC、Hessian、Burlap、AMF3、XML序列化的效率对比:这些是不同...

    Java程序员简历最新版

    Java程序员简历最新版 Java程序员简历概述 ...* 学习上:是一个喜欢探索新技术、乐于分享心得的人 * 人际交往上:是一个易于沟通的人 期望 * 期望职位:Java工程师 * 期望工作地点:广州 * 期望年薪:200000

Global site tag (gtag.js) - Google Analytics