JBoss JBPM 实践系列(一)--- 安装配置(Tomcat 6.0 + mssql)
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状态图,如果你不熟悉UML状态图,那初学计算机语言的流程图应该熟悉吧,表达的方式和意思大同小异。jPdl详细定义了这个状态图的每个部分,如起始、结束状态,状态之间的转换等;其另一大特色就是集成Hibernate,确切的说是绑定,使用Hibernate来管理数据库,这样jBPM只专注于他的业务流程控制。
从上面可以看出,jBPM是一个业务流程管理引擎,是一个工作流引擎。除此之外,它同时实现了对jPDL和对BPEL的支持。它整合了Hibernate技术处理数据库,创建了一系列的数据库表,持久化工作流引擎所需的状态。因此,jBPM支持所有Hibernate支持的数据库,能够把Java对象持久化到数据库中,把Hibernate支持的Java类的对象保存到数据库中!
你完全可以像用 Java 的类库一样使用JBoss jBPM,而且通过配置JBoss jBPM也可以被部署在其它J2EE应用服务器上和任何数据库上。
在本文中,我们首先来创建我们的JBoss jBPM运行开发环境。在开始之前,请准备一下软件产品:
·JDK 1.5 或者更高版本, 这里使用JDK 6u10b
·Apache Tomcat 5.5.x或更高版本,这里使用Tomcat 6.0
·Mssql
·Apache Ant 1.7.0
·JBPM-3.2.3
·Eclipse Europa(Eclipse V3.3) for JavaEE Developers或更高, 这里使用Myeclipse
说明:JBoss jBPM的发布包中已经配置好了一套服务环境,是基于JBoss的。因为我们习惯了Tomcat 的小巧灵活,而且我们也不希望jBPM依赖JBoss。
1. 下载安装JDK,Tomcat, Ant, MySQL, 并设置相应的环境变量
此步骤不再熬述,具体请查阅官方文档
Jdk:http://java.sun.com/
Ant:http://ant.apache.org/
Tomcat:http://tomcat.apache.org/
Eclipse:http://www.eclipse.org/
2. 下载JBoss jBPM
JBoss jBPM 官方(http://www.jboss.org/jbossjbpm/)当前发布的版本为 3.2.3, 只需要下载jPDL Suite,下载后得到jbpm-jpdl-suite-3.2.3.zip,这个套件包含了所有的内容和资源,包括eclipse插件,示例,和流程管理控制应用。
解压jbpm-jpdl-suite-3.2.3.zip,这里解压后得到D:\jbpm-jpdl-3.2.3,其主要目录结构如下:
D:\jbpm-jpdl-3.2.3
|--- db 这里都是些sql定义和数据文件,如果改用其它数据库,可以使用这些资源来创建,服务还是很周到的。顺便
| 罗嗦一句,jBPM 默认使用的是内存数据库 hsqldb ,这个数据库还没研究过(嘿嘿---)
|
|--- deploy 用来部署你的应用的包和资源
|
|--- designer 这里是Eclipse插件,这样你就可以在图形界面来定义你的业务流程,骨灰级人物没他也能过日子
|
|--- doc 这里是jBPM相关组件的API 文档
|
|--- examples 这里是些学习的例子
|
|--- lib jBPM 的类库
|
|--- server 这里有一个JBoss 服务器,并且包含了本JBoss jBPM引擎,还部署了websale例子
|
|--- src 这里是JBoss jBPM的源代码
3. 配置数据库
jBPM需要把初始化数据和工作流定义存储到数据库中,它定义了一套数据结构来存储这些数据,这也是该容器本身的特点。
在mssql 中创建一个数据库 jbpmdb
在D:\jbpm-jpdl-3.2.3\db 找到jbpm.jpdl.mssql.sql, 该文件必须修改一下,以符合mssql的语法结构。具体就是在每条语句的末尾增加一个分号";"你可以借助 UltrEdit, EditPlus等工具来做这些事情(注意替换时要注意匹配大小写,有写表的字段中包含CREATE字符),如果是第一次创建这些数据库表,要删除create语句上面的alter和drop(这些表还都不存在)。
4. 准备jBPM包
这是个jbpm-jpdl流程管理控制台,就像Tomcat有个单独的Administrator应用用来管理配置和部署一样的东东。有了他你可以在图形界面来操作控制你的应用。
打开命令行控制台,切换到D:\jbpm-jpdl-3.2.3\deploy 目录,执行以下命令:
ant customize.console.for.tomcat
注意:请确保你的ant安装配置妥当,可以在命令行输入:ant -version 来检测ant 是否正确安装。命令执行后能看到ant的版本信息即OK
ant customize.console.for.tomcat 执行成功后,会在D:\jbpm-jpdl-3.2.3\deploy 目录下生成customized和target目录,其中customized目录下的jbpm-console.war即是我们想要的war包。
我们需要修改jbpm-console.war/WEB-INF/classes/hibernate.cfg.xml 文件,以适应我们的资源属性的需要。修改后的结果如下:
- <hibernate-configuration>
-
<session-factory>
-
-
-
<property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
-
-
-
<property name="hibernate.connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>
-
<property name="hibernate.connection.url">jdbc:jtds:sqlserver://localhost:1433;DatabaseName=jbpmdb</property>
-
<property name="hibernate.connection.username">sa</property>
-
<property name="hibernate.connection.password">123456</property>
-
-
-
<property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
-
- <!-- DataSource properties (begin) ==
-
<property name="hibernate.connection.datasource">java:/JbpmDS</property>
-
== DataSource properties (end) -->
-
<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
- ...
这里就是启用了 更换了默认的数据属性,JDBC connection properties ,还有自己定义的数据名字和帐号,另外需要注意的是用
- <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
代替JTATransactionFactory和CMTTransactionFactory,想用JTATransactionFactory或CMTTransactionFactory配置也可以,不过还没有研究过,有知道的朋友可以一起学习一下。
拷贝jboss-j2ee.jar包至jbpm-console.war/WEB-INF/lib 。发布包下(D:\jbpm-jpdl-3.2.3)很多地方都有这个包你可以找一下,比如 D:\jbpm-jpdl-3.2.3\server\client。
这里主要是用到了Java Transaction Architecture, 所以你可以用J2EE中的jta.jar包还替换jboss-j2ee.jar。jta相关信息请参考:http://java.sun.com/javaee/technologies/jta/index.jsp
拷贝commons-collections.jar 包至jbpm-console.war/WEB-INF/lib 。发布包下(D:\jbpm-jpdl-3.2.3)好几处都有这个包,比如 D:\jbpm-jpdl-3.2.3\server\server\jbpm\lib 。这个包是Apache Commons包,到处都找的的到。
拷贝jsf-api.jar和jsf-impl.jar包至jbpm-console.war/WEB-INF/lib ,你可以在D:\jbpm-jpdl-3.2.3\server\server\jbpm\deploy\jboss-web.deployer\jsf-libs种找到这两个包。
说明:因为jbpm-console是一个jsf应用,没这两个包,你访问时会报404或505错误。
网上下载jtds-1.2.jar 连接驱动jar包,包至jbpm-console.war/WEB-INF/lib下.
拷贝MySQL JDBC驱动程序包至%CATALINA_HOME%/lib (Tomcat 6)或%CATALINA_HOME%/common/lib(Tomcat 5.5)
拷贝修改后的jbpm-console至%CATALINA_HOME%/webapps
这样jBPM基本上配置完成,但是我们还不能访问他,还需要配置安全访问控制和初始的用户数据
5. 配置Tomcat 安全域
方法一:在%CATALINA_HOME%/conf/Catalina/localhost 创建一个jbpm-console.xml 文件,内容如下:
- <Context>
-
<Realm className="org.apache.catalina.realm.JDBCRealm"
-
driverName="com.mysql.jdbc.Driver"
-
connectionURL="jdbc:mysql://localhost:3306/jbpm"
-
connectionName="jbossjbpm"
-
connectionPassword="jbossjbpm"
-
userTable="JBPM_ID_USER u, JBPM_ID_MEMBERSHIP m, JBPM_ID_GROUP g"
-
userNameCol="g.TYPE_ = 'security-role' AND m.GROUP_ = g.ID_ AND m.USER_ = u.ID_ AND u.NAME_"
-
userCredCol="DISTINCT u.PASSWORD_"
-
userRoleTable="JBPM_ID_USER u, JBPM_ID_MEMBERSHIP m, JBPM_ID_GROUP g"
-
roleNameCol="g.NAME_" />
-
</Context>
方法二:修改 %CATALINA_HOME%/conf/tomcat-users.xml文件来设置安全域。为了不和tomcat已有的用户冲突,这里把 tomcat以前的登陆帐号username="admin" 修改为username="tadmin",修改后的文件如下:
- <?xml version='1.0' encoding='utf-8'?>
-
-
<tomcat-users>
-
-
<role rolename="user"/>
-
-
<role rolename="administrator"/>
-
-
<role rolename="manager"/>
-
-
<role rolename="sales"/>
-
-
<role rolename="hr"/>
-
-
<role rolename="admin"/>
-
-
<role rolename="participant"/>
-
-
<user username="user" password="user" roles="user,sales"/>
-
-
<user username="shipper" password="shipper" roles="user,hr"/>
-
-
<user username="manager" password="manager" roles="admin,hr,manager,user,sales"/>
-
-
<user username="tadmin" password="" roles="admin,manager"/>
-
<user username="admin" password="admin" roles="admin,user,hr"/>
-
</tomcat-users>
6. 初始化数据
在mssql jbpmdb数据库中插入以下数据
SET IDENTITY_INSERT [JBPM_ID_GROUP] ON
INSERT INTO JBPM_ID_GROUP(ID_ ,CLASS_ ,NAME_,TYPE_,PARENT_) VALUES(1,'G','sales','organisation',NULL);
INSERT INTO JBPM_ID_GROUP(ID_ ,CLASS_ ,NAME_,TYPE_,PARENT_) VALUES(2,'G','admin','security-role',NULL);
INSERT INTO JBPM_ID_GROUP(ID_ ,CLASS_ ,NAME_,TYPE_,PARENT_) VALUES(3,'G','user','security-role',NULL);
INSERT INTO JBPM_ID_GROUP(ID_ ,CLASS_ ,NAME_,TYPE_,PARENT_) VALUES(4,'G','hr','organisation',NULL);
INSERT INTO JBPM_ID_GROUP(ID_ ,CLASS_ ,NAME_,TYPE_,PARENT_) VALUES(5,'G','manager','security-role',NULL);
SET IDENTITY_INSERT [JBPM_ID_GROUP] OFF
- SET IDENTITY_INSERT [JBPM_ID_USER] ON
INSERT INTO JBPM_ID_USER(ID_ ,CLASS_ ,NAME_ ,EMAIL_ ,PASSWORD_) VALUES(1,'U','user','user@sample.domain','user');
INSERT INTO JBPM_ID_USER(ID_ ,CLASS_ ,NAME_ ,EMAIL_ ,PASSWORD_) VALUES(2,'U','manager','manager@sample.domain','manager');
INSERT INTO JBPM_ID_USER(ID_ ,CLASS_ ,NAME_ ,EMAIL_ ,PASSWORD_) VALUES(3,'U','admin','admin@sample.domain','admin');
INSERT INTO JBPM_ID_USER(ID_ ,CLASS_ ,NAME_ ,EMAIL_ ,PASSWORD_) VALUES(4,'U','shipper','shipper@sample.domain','shipper');
SET IDENTITY_INSERT [JBPM_ID_USER] OFF
- SET IDENTITY_INSERT [JBPM_ID_MEMBERSHIP] ON
INSERT INTO JBPM_ID_MEMBERSHIP(ID_,
CLASS_ ,NAME_ ,ROLE_ ,USER_ ,GROUP_ ) VALUES(1,'M',NULL,NULL,2,4);
INSERT INTO JBPM_ID_MEMBERSHIP(ID_,
CLASS_ ,NAME_ ,ROLE_ ,USER_ ,GROUP_ ) VALUES(2,'M',NULL,NULL,3,4);
INSERT INTO JBPM_ID_MEMBERSHIP(ID_,
CLASS_ ,NAME_ ,ROLE_ ,USER_ ,GROUP_ ) VALUES(3,'M',NULL,NULL,4,4);
INSERT INTO JBPM_ID_MEMBERSHIP(ID_,
CLASS_ ,NAME_ ,ROLE_ ,USER_ ,GROUP_ ) VALUES(4,'M',NULL,NULL,4,3);
INSERT INTO JBPM_ID_MEMBERSHIP(ID_,
CLASS_ ,NAME_ ,ROLE_ ,USER_ ,GROUP_ ) VALUES(5,'M',NULL,NULL,1,3);
INSERT INTO JBPM_ID_MEMBERSHIP(ID_,
CLASS_ ,NAME_ ,ROLE_ ,USER_ ,GROUP_ ) VALUES(6,'M',NULL,NULL,2,3);
INSERT INTO JBPM_ID_MEMBERSHIP(ID_,
CLASS_ ,NAME_ ,ROLE_ ,USER_ ,GROUP_ ) VALUES(7,'M',NULL,NULL,3,3);
INSERT INTO JBPM_ID_MEMBERSHIP(ID_,
CLASS_ ,NAME_ ,ROLE_ ,USER_ ,GROUP_ ) VALUES(8,'M',NULL,NULL,3,2);
INSERT INTO JBPM_ID_MEMBERSHIP(ID_,
CLASS_ ,NAME_ ,ROLE_ ,USER_ ,GROUP_ ) VALUES(9,'M',NULL,NULL,2,2);
INSERT INTO JBPM_ID_MEMBERSHIP(ID_,
CLASS_ ,NAME_ ,ROLE_ ,USER_ ,GROUP_ ) VALUES(10,'M',NULL,NULL,2,5);
INSERT INTO JBPM_ID_MEMBERSHIP(ID_,
CLASS_ ,NAME_ ,ROLE_ ,USER_ ,GROUP_ ) VALUES(11,'M',NULL,'boss',2,1);
INSERT INTO JBPM_ID_MEMBERSHIP(ID_,
CLASS_ ,NAME_ ,ROLE_ ,USER_ ,GROUP_ ) VALUES(12,'M',NULL,NULL,1,1);
SET IDENTITY_INSERT [JBPM_ID_MEMBERSHIP] OFF
7. 启动Tomcat 服务,查看控制台的日志,排除错误,数据库错误和支持库不完整都可能导致错误。
在浏览器中输入:http://localhost:8080/jbpm-console 能正常访问说明部署成功,你可以用页面上列出的用户和账号登陆进去体验一下。
分享到:
相关推荐
- 配置Tomcat 6.0作为WEB服务器,它是运行jbpm应用的容器。 - 安装MySQL 5.0数据库,jbpm将在这里存储流程实例和相关数据。 2. **jbpm-jpdl-suite-3.2.3下载与解压**: - 从官方网址...
jbpm-4.3-src.rar_bdf-jbpm4 src _jboss 4.3_jboss jbpm4.3_jbpm-4.3 这个压缩包文件包含的是JBOSS jBPM4.3的源代码,这是一个用于业务流程管理(BPM)的开源框架。jBPM是一个强大的工具,它提供了流程定义、执行和...
Tomcat是Apache软件基金会Jakarta项目的一部分,它是轻量级的,相对其他如JBoss、WebLogic等商业应用服务器来说,更易于配置和管理。 **Java Servlet技术** Java Servlet是一种Java编程语言的接口,允许Java代码在...
自2004年10月18日成为JBoss企业中间件平台的一部分以来,jBPM一直在不断发展,其核心特性是使用了JBoss jBPM Process Definition Language (jPDL)来定义业务流程,而不是遵循传统的WfMC's XPDL、BPML、ebXML或BPEL4...
"tomcat-6.0.10.exe"是Tomcat6.0的安装程序,其中".exe"是Windows操作系统中的可执行文件扩展名,表示这是一个用于在Windows环境下安装Tomcat6.0的程序。版本号"6.0.10"表示这是6.0系列中的第10个修订版。 **知识点...
在Linux环境下配置JBoss6.0与JDK7.0是一项关键的任务,因为这两个组件是许多企业级Java应用的基础。JBoss是一个流行的开源应用服务器,它支持Java EE规范,而JDK则是运行Java应用程序和应用服务器所必需的开发工具包...
《JBoss jBPM入门与实践》 一、引言:深入理解JBoss jBPM JBoss jBPM(jBusiness Process Management)是JBoss家族中的一个开源工作流引擎,用于实现业务流程管理(BPM)解决方案。它提供了一套完整的工具集,包括...
jboss jbpm 5.0 最新版jboss jbpm 5.0 最新版jboss jbpm 5.0 最新版jboss jbpm 5.0 最新版jboss jbpm 5.0 最新版jboss jbpm 5.0 最新版jboss jbpm 5.0 最新版
在Java企业级应用开发中,常常会涉及到不同的服务器平台,比如Tomcat和JBoss。这两个都是非常流行的开源应用服务器,它们各自具有独特的特性和优势。在将应用从一个服务器平台迁移到另一个时,可能会遇到兼容性问题...
在IT行业中,尤其是在Java企业级应用开发中,JBoss是一个非常知名的开源应用服务器,它提供了对Java EE规范的实现,让开发者能够部署和管理Java应用程序。"jboss-as-sprint-int-5.0.0.GA.jar" 和 "jboss-spring-int-...
JBoss jBPM 是一个复杂的可扩展的工作流管理系统. JBoss jBPM 有直观的流程语言来表示商业流程图的术语比如,任务,异步通讯的等待状态,定时器,自动操作等等.把这些操作绑在一起,, JBoss jBPM 就有了最强大和易扩展性...
【JBOSS+TOMCAT集成开发环境】是一种常见的企业级应用服务器组合,它结合了JBOSS的全面中间件服务和TOMCAT的轻量级Servlet容器特性,为开发者提供了一个高效且灵活的开发与部署平台。在这个“完整版”中,用户可以...
### JAVA-SERVLET-+-MYSQL-+-JBOSS-开发起步 #### 一、Java Servlet、Jboss、Mysql、Eclipse 开发介绍 在现代Web应用开发领域中,Java Servlet技术结合MySQL数据库以及JBoss应用服务器是构建企业级应用的常见组合...
针对新手用户,JBoss jBPM还提供了一系列快速入门指南,帮助他们更快地上手。 - **更改默认核心JBoss jBPM安装**:指导用户如何自定义安装路径和配置。 - **配置任务节点**:详细介绍如何设置流程中的任务节点,...
与像JBoss、WebLogic、WebSphere这样的全功能应用服务器相比,Tomcat更轻量级,专注于Servlet和JSP的部署,对于小型或中型应用来说,它的配置和管理相对简单。然而,对于需要完整Java EE支持的大型企业应用,可能...
标题 "jboss-native-2.0.8-windows-ssl" 暗示了我们要讨论的是JBoss Native在Windows环境下的一个版本,特别是针对SSL(Secure Socket Layer)支持的实现。JBoss Native是Red Hat JBoss中间件的一部分,它提供了一个...
"Tomcat6.0安装包"指的是Apache Tomcat的第6.0版本的安装程序,这是一个用于部署Java Servlet和JavaServer Pages(JSP)的应用服务器。Tomcat是Apache软件基金会Jakarta项目的一部分,它遵循Apache License开源协议...
《工作流框架JBoss+jBPM+jPDL用户开发手册》是针对企业级应用中工作流管理系统设计与实现的一份详尽指南。本手册旨在帮助开发者深入理解和运用JBoss、jBPM以及jPDL这三者之间的协作,构建高效的工作流程自动化解决...
Tomcat 6.0是一款广泛使用的开源Web服务器和Java应用服务器,主要负责运行基于Java Servlet和JavaServer Pages(JSP)的应用程序。由Apache Software Foundation维护,它遵循Apache License 2.0,允许免费使用、修改...
Tomcat6.0安装版提供了方便用户进行本地部署的安装程序,允许用户自定义安装路径,以适应不同的系统配置和需求。 在安装Tomcat6.0时,首先要确保你的计算机上已经安装了Java Development Kit (JDK),因为Tomcat运行...