Jbpm工作流(一)
了解一下什么是Jbpm及特点。
jBPM,全称是Java Business Process Management,是一种基于J2EE的轻量级工作流管理系统。jBPM是公开源代码项目,它使用要遵循 Apache License。jBPM在2004年10月18日,发布了2.0版本,并在同一天加入了JBoss,成为了JBoss企业中间件平台的一个组成部分,它的名称也改成JBoss jBPM。
jBPM最大的特色就是它的商务逻辑定义没有采用目前的一些规范,如WfMC´s XPDL, BPML, ebXML, BPEL4WS等,而是采用了它自己定义的JBoss jBPM Process definition language (jPdl)。jPdl认为一个商务流程可以被看作是一个UML状态图。jPdl就是详细定义了这个状态图的每个部分,如起始、结束状态,状态之间的转换等。
jBPM的另一个特色是它使用Hibernate来管理它的数据库。Hibernate是目前Java领域最好的一种数据持久层解决方案。通过Hibernate,jBPM将数据的管理职能分离出去,自己专注于商务逻辑的处理。
说不如做,下面做个例子感受以下吧。
1、 环境准备
Jdk1.5安装不在赘述。
Eclipse安装不在赘述。 jBPM 提供了一个 Eclipse 插件用来辅助开发 jBPM 。
本文用的版本是: Eclipse3.2+ MyEclipse 5.5.1 GA
2、 安装jbpm
jBPM 的下载地址: http://www.jboss.com/products/jbpm/downloads
按下图红色标记处下载:
介绍一下上面的Package:
JBoss jBPM jPDL是 jBPM 的软件包
JBoss jBPM jPDL Suite 是一个综合包,它包括了 jBPM 软件包、开发插件、一个配置好了的基于JBoss 的 jBPM 示例、一些数据库配置文件示例。
JBoss jBPM Process Designer Plugin 是辅助开发 jBPM 的 Eclipse 插件。
JBoss jBPM BPEL Extension jBPM 关于 BPEL 的扩展包
本指南选择下载:JBoss jBPM jPDL Suite 。下载后解压到 D:\ jbpm-starters-kit-3.1.4,目录下含有五个子目录:
jbpm jBPM 的软件包
jbpm-bpel 只含有一个网页
jbpm-db 各种数据库 hibernate 配置文件示例,有些还包含了相应的 jdbc 驱动程序。
jbpm-designer 辅助开发 jBPM 的 Eclipse 插件,具体在 jbpm-gpd-feature 子目录中
jbpm-server 一个已经配置好了的基于 JBoss 的 jBPM 示例
3、 Jbpm例子
jbpm-server 目录是一个已经配置好的了 jBPM 示例。
例子用的框架是Jsf+Hibernate,数据库是 hsqldb(一个内存数据库)。
双击 jbpm-server 目录下的 start.bat 文件,启动 JBoss 服务。这时会打开一个 DOS 窗口,启动完成后,日志会不断输出,其中最后一句是“ 13:55:39,937 DEBUG [StaticNotifier] going to wait for (CMD_EXECUTOR, java.lang.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工作流(二)》中将介绍这些。
4、创建jbpm项目
4.1要引入可视化插件
jbpm提供了在eclipse下的一个可视化插件,通过它我们可以方便的定义工作流,介绍一下eclipse如何添加该插件?
打开jbpm-starters-kit-3.1.4\jbpm-designer\jbpm-gpd-feature目录,我们可以看到下面有一个eclipse文件夹,这里我们通过link的方式为eclipse添加该插件。
在{eclipse_home}/link文件夹下新建jbpm-designer.link文件,用记事本打开该文件加入如下一行:
path=D:\\jbpm-starters-kit-3.1.4\\jbpm-designer\\jbpm-gpd-feature
后面的路径即为该插件的存放路径,根据个人情况修改。注意,这里的分隔符使用双斜杠\\或者用单斜杠/。
当插件引入成功后,
打开Eclipse----window----Preferences
出现JBoss jBPM的目录,表示插件引入成功。
4.2 引入jbpm包,使eclipse具有jbpm环境
Eclipse编译jbpm可视化流程图,有时特别慢,甚至会导致死机,原因是未导入jbpm包的问题,可视化流程图需要有jbpm环境,介绍一下如何解决这个问题?
打开Eclipse----window----Preferences
如下图
点击【Add】,如下图:
Name:随便录入
Location: D:\jbpm-starters-kit-3.1.4\jbpm-starters-kit-3.1.4\jbpm,此路径为下载的
jbpm-starters-kit-3.1.4包中的jbpm文件夹,即jBPM 的软件包。
4.3 创建我们自己的jbpm
打开eclipse---new--Project,如下图:
选择Process Project,点击【Next】,如下图
name:工程名称,随意录入。
Location:就是在上面所讲的jBPM 的软件包。点击【finish】后,创建如下项目:
以上就创建了一个jbpm的项目,里面的代码和流程图会自动创建,也说明你的eclipse已具有jbpm环境。
Jbpm工作流(一)的更多相关文章
- JBPM工作流入门总结
关于JBPM工作流 1.工作流 工作流是一项分离业务操作和系统流程的技术.工作流由实体(Entity).参与者(Participant).流程定义(Flow Definition).工作流引擎(Eng ...
- 转发 JBPM工作流小结
JBoss 题记:某部门领导有天突发奇想,把我们几个人叫过去,曰:最近出去开会,老有人推销自己的工作流产品,说的这好那好,你们几个给我研究研究.正好刚做完的xxx子系统里有一个申请审批的流程,你们按这 ...
- JBPM——工作流概念
一.概念 工作流(Workflow),就是"业务过程的部分或总体在计算机应用环境下的自己主动化",它主要解决的是"使在多个參与者之间依照某种提前定义的规 ...
- JBPM工作流
一.开发环境的搭建 1.下载Jbpm4.4 1.1下载地址: https://sourceforge.net/projects/jbpm/files/jBPM%204/jbpm-4.4/ 1.2解压后 ...
- jbpm 工作流(二)
1 概述 本文主要介绍如何将JBPM+Struts+Spring+Hibernate整合在一块.并通过一个简单实例来说明.此实例为一个申请审批的简单流程,并将申请人和审批人记录到数 ...
- JBPM工作流(一)——实现一个简单的工作流例子
一.JBPM定义 JBPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理.工作流.服务协作等领域的一个开源的.灵活的.易扩展的可执行流 ...
- python调用Java代码,完毕JBPM工作流application
1.缘由 有一庞大Python django webproject,要引入工作流引擎,像OA一样.方便的流程控制与管理.Python或django关于工作流的开源插件,稀少,并且弱爆了,终于选用jav ...
- 【Java EE 学习 67 下】【OA项目练习】【SSH整合JBPM工作流】【JBPM项目实战】
一.SSH整合JBPM JBPM基础见http://www.cnblogs.com/kuangdaoyizhimei/p/4981551.html 现在将要实现SSH和JBPM的整合. 1.添加jar ...
- 【Java EE 学习 67 上】【OA项目练习】【JBPM工作流的使用】
OA项目中有极大可能性使用到JBPM框架解决流程控制问题,比如请假流程.报销流程等等. JBPM:JBoss Business Process Management,翻译过来就是业务流程管理.实际上就 ...
随机推荐
- 【Unity Shader实战】卡通风格的Shader(一)
写在前面 本系列其他文章: 卡通风格的Shader(二) 呜,其实很早就看到了这类Shader,实现方法很多,效果也有些许不一样.从这篇开始,陆续学习一下接触到的卡通类型Shader的编写. 本篇的最 ...
- 初次见面 你好EF
EF(yif),第一次听到这个名字的时候,以为是一个帅帅的魔术师,在小编的傻傻的梦想里,就是有一天,有一个魔术师站在小编面前,变出一大捧的玫瑰花,然后,然后不要钱`(*∩_∩*)′,然而在我们的编程世 ...
- A*寻路算法入门(一)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...
- Android开发技巧——使用PopupWindow实现弹出菜单
在本文当中,我将会与大家分享一个封装了PopupWindow实现弹出菜单的类,并说明它的实现与使用. 因对界面的需求,android原生的弹出菜单已不能满足我们的需求,自定义菜单成了我们的唯一选择,在 ...
- MariaDB存储引擎
MariaDB存储引擎 存储引擎就是指表的类型.数据库的存储引擎决定了表在计算机中的存储方式.存储引擎的概念是MariaDB的特点,而且是一种插入式的存储引擎概念.这决定了MariaDB数据库中的表可 ...
- RTB--Real TimeBidding模式的互联网广告(实时竞价的广告投放)
RTB(real time bidding)实时竞价允许广告买家根据活动目标.目标人群以及费用门槛等因素对每一个广告及每次广告展示的费用进行竞价.竞价成功后获得广告展示机会,在展示位置上展示广告. 其 ...
- 《java入门第一季》之泛型类引入
首先用一个例子引入泛型类. 我定义一个Object类: package cn.it_03; public class ObjectTool { private Object obj; public O ...
- Dynamics CRM 2011/2013 section的隐藏
代码如下 Xrm.Page.ui.tabs.get("TabName").sections.get("SectionName").setVisi ...
- curl命令备注
curl是利用URL语法在命令行方式下工作的开源文件传输工具.它被广泛应用在Unix.多种Linux发行版中,并且有DOS和Win32.Win64下的移植版本.1.get请求:curl "h ...
- JSP编译成Servlet(一)语法树的生成——语法解析
一般来说,语句按一定规则进行推导后会形成一个语法树,这种树状结构有利于对语句结构层次的描述.同样Jasper对JSP语法解析后也会生成一棵树,这棵树各个节点包含了不同的信息,但对于JSP来说解析后的语 ...