- 浏览: 1049072 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (538)
- 奇文共赏 (36)
- spring (13)
- hibernate (10)
- AOP/Aspectj (9)
- spring security (7)
- lucence (5)
- compass (3)
- jbmp (2)
- jboss rule(drools) (0)
- birt (1)
- jasper (1)
- cxf (3)
- flex (98)
- webgis (6)
- 设计模式 (1)
- 代码重构 (2)
- log4j (1)
- tomcat (9)
- 神品音乐 (1)
- 工作计划 (2)
- appfuse (1)
- svn (4)
- 寻章摘句 (3)
- eclipse (10)
- arcgis api for flex (1)
- 算法 (5)
- opengis-cs (1)
- bug心得 (13)
- 图标 (1)
- software&key (14)
- java (17)
- 搞笑视频 (13)
- sqlserver (9)
- postgresql (1)
- postgis (0)
- geoserver (5)
- 日子 (50)
- 水晶报表 (1)
- 绝对电影 (3)
- Alternativa3D (1)
- 酷站大全 (10)
- c++ (5)
- oracle (17)
- oracle spatial (25)
- flashbuilder4 (3)
- TweenLite (1)
- DailyBuild (6)
- 华山论贱 (5)
- 系统性能 (5)
- 经典古文 (6)
- SOA/SCA/OSGI (6)
- jira (2)
- Hadoop生态圈(hadoop/hbase/pig/hive/zookeeper) (37)
- 风水 (1)
- linux操作基础 (17)
- 经济 (4)
- 茶 (3)
- JUnit (1)
- C# dotNet (1)
- netbeans (1)
- Java2D (1)
- QT4 (1)
- google Test/Mock/AutoTest (3)
- maven (1)
- 3d/OSG (1)
- Eclipse RCP (3)
- CUDA (1)
- Access control (0)
- http://linux.chinaunix.net/techdoc/beginner/2008/01/29/977725.shtml (1)
- redis (1)
最新评论
-
dove19900520:
朋友,你确定你的标题跟文章内容对应???
tomcat控制浏览器不缓存 -
wussrc:
我只想说牛逼,就我接触过的那点云计算的东西,仔细想想还真是这么 ...
别样解释云计算,太TM天才跨界了 -
hw_imxy:
endpoint="/Hello/messagebr ...
flex+java代码分两个工程 -
gaohejie:
rsrsdgrfdh坎坎坷坷
Flex 与 Spring 集成 -
李涤尘:
谢谢。不过说得有点太罗嗦了。
Oracle数据库数据的导入及导出(转)
http://blog.csdn.net/pengchua/archive/2008/07/14/2647369.aspx
一.安装及配置
http://www.jboss.org/jbossjbpm/jpdl_downloads/下载jbpm-starters-kit-3.1.4 包里就有,目录地址如下: D:\jbpm-starters-kit-3.1.1\jbpm-designer\jbpm-gpd-feature\eclipse ,插件的安装方式是链接式还是直接复制式,任选吧。
安装jBPM的开发插件步骤如下:
(1) 打开Eclipse选择菜单“Help->Software Updates->Find and Install”;
(2) 弹出窗口中选择“Search for new features to install”,然后点击“Next >”;如图
(3) 点击按扭“New Local Site…”选择插件目录,位于jbpm-designer\jbpm-gpd-feature\eclipse目录下,如:E:\Java\tools\jbpm-starters-kit-3.1.4\jbpm-designer\jbpm-gpd-feature\eclipse。选定后点“OK”,如图
(4) 选中“jbpm-gpd-feature/eclipse”,然后点击“Finish”,如图
(5) 然后选择同意条款,接提示步骤安装就可以了。
(6) 如果安装成功,则 Eclipse 首选项里多了一个 JBoss jBPM ,另外我们也需要到这个 jBPM 的首选项里做一些配置工作――指定 jBPM 的安装路径(如下图所示)。这个配置主要是为了找到 jbpm 下的各种 jar 包,好让 Eclipse 设置项目的库引用。本文指向路径是 d:\jbpm-starters-kit-3.1.1\jbpm.3
二. 新建jBPM项目
主菜单“文件->新建->项目”,在弹出的对话框里,有“ Process Project ”项,如下图所示:
选上好,单击“下一步”,起个名“ myjbpm ”,然后就可以单击“完成”了。然后就生成了如下图所示的一个项目结构:
这个项目和通常 Eclipse 的项目结构有点不同,不过这是一个现在非常流行的项目结构, src/java 存放源文件, test/java 存放相应的 JUnit 单元测试代码。如果你用 Maven 来编译构建项目,对这种目录结构一定不陌生。
项目创建起了,介绍一下里面的文件吧:
l MessageActionHandler ,自动生成的一个 ActionHandler 。不想要可以删掉。
l ehcache.xml cache 的配置文件,里面有很详解的英文说明。没有必要可以不用改它。
l hibernate.cfg.xml jBPM 是用 Hibernate 进行工作流的数据存储的,这个就是 Hibernate 的配置文件。后面我们将讲到如何配置这个文件。
l jbpm.cfg.xml jbpm 本身的配置文件。现在是空的,它用的是缺省配置,你想知道有哪些配置就去看这个文件 D:\jbpm-starters-kit-3.1.1\jbpm.3\src\java.jbpm\org\jbpm\default.jbpm.cfg.xml
l log4j.properties 这个是日志 API 包 log4j 的配置文件,用过 log4j 的都知道。
l SimpleProcessTest.java 这个是对最重要的流程配置文件的 processdefinition.xml 单元测试代码。这里表扬一点, jBPM 的优良设计使得它的可测试性非常之高,喜欢写 t 单元测试的人有福了。
l gpd.xml 用于生成流程图的定义文件。都是一些方框的坐标和长宽
l processdefinition.xml 这个是对最重要的流程配置文件,以后写流程要经常和它打交道。
l processimage.jpg 一个流程图
从项目结构来看,我们没有看到 JSP 网页程序,也没有看到 GUI 客户端程序,这些代码都是要我们以后开发中来写的。但本文不准备用 JSP 、 GUI ( Swing 、 SWT )来做示例,而是用 JUnit 代码来做使用 jBPM 客户端来演示。因为 jBPM 实际上是一个后台框架,至于前台是 JSP 还是 Swing 还是无界面的 java.class 都是无关紧要的。在教程里用无界面的 java.class 来做客户端则更方便一些,如果进一步采用 JUnit ,则这样的 java.class 同时还具备了单元测试的功能。以后就是用 JSP 写了 WEB 页面,我们还是可以用这些 JUnit 程序来做单元测试,避免了频繁的鼠标点按 WEB 页面这样的力气活。所以在 jBPM 自带的英文教程里都是一个 JUnit 程序,不仔佃看还真摸不着头脑。
三. 初始化数据库
jBPM 需要数据库支持, jBPM 会把自己的一个初始化数据存储到数据库,同时工作流的数据也是存储到数据库中的。 jBPM 使用 Hibernate 作为的存储层。将jbpm-starters-kit-3.1.4下的子目录jbpm改名为jbpm.3,否则在执行下面的ant命令时会报jbpm.3 目录不存在的错误:
在 DOS 窗下,进入E:\Java\tools\jbpm-starters-kit-3.1.4\jbpm-db目录,执行ant oracle.scripts命令。执行成功后在E:\Java\tools\jbpm-starters-kit-3.1.4\jbpm-db\build\oracle\scripts目录里生成以下四个sql 文件:
l oracle.create.sql —— 创建表结构的sql语句
l oracle.drop.sql —— 删除表结构的sql语句
l oracle.drop.create.sql —— 先删除表结构再创建的sql语句
l oracle.clean.sql —— 清除所有表中数据的sql语句
在Oracle 数据库中执行@E:\Java\tools\jbpm-starters-kit-3.1.4\jbpm-db\build\oracle\scripts\ oracle.create.sql,进行建表。
如果是mysql, ant mysql.scripts
用source XXXX/mysql.create.sql导入sql
四. hibernate.cfg.xml
hibernate.cfg.xml 的默认设置是用 HSQL ,这是一个内存数据库,这种内存数据库用来代替项目实际所用的数据库来做单元测试挺不错的。不过我们这里是要试试用 MySQL 、 Oracle ,那就改一下设置吧。
注:配置值可参考 D:\jbpm-starters-kit-3.1.1\jbpm-db 对应子目录下的 hibernate.properties 文件。
1 、 MySQL 的更改如下:
2 、 Oracle 的更改如下:
如果你装了 Oracle 的客户端,并且 D:\oracle\ora92\network\ADMIN\tnsnames.ora 里做了如下的设置
则 Oracle 的 hibernate.connection.url 项也可以设为: jdbc:oracle:oci:@WXXRDB_192.168.123.10
五. 完善库引用
虽然 jBPM 在创建项目之初给我们设置好了库引用,如下图
但后面运行时还是报一些 NoClassDefFoundError 异常,如没有对 hibernate3.jar 的引用导致下面的错误
java.lang.NoClassDefFoundError: org/hibernate/Session
at org.jbpm.persistence.db.DbPersistenceServiceFactory.openService(DbPersistenceServiceFactory.java:55)
at org.jbpm.svc.Services.getService(Services.java:136)
.......
所以我们要为本文的实例完善库引用。主要是把 MySQL 和 Oracle 的 JDBC 库、以及 Hibernate 的 hibernate3.jar 加入到项目的库引用中。
(1) 找到缺少的 jar 包
l mysql 的 jdbc 包,在 D:\jbpm-starters-kit-3.1.1\jbpm-db\mysql\lib 目录里
l oracle 的 jdbc 包, jbmp 中没有包含(可能是没拿到 oracle 授权),我们可以自已去 oracle 网站上下载,或者去 oracle 安装目录 D:\oracle\ora92\jdbc\lib 找 ojdbc14.jar (我们公司用的是 Oracle9i )
l Hibernate3.jar 在目录 D:\jbpm-starters-kit-3.1.1\jbpm.3\lib\hibernate 里。
(2) 在项目里创建一个 lib 目录,将这三个 jar 复制到 lib 目录。
(3) 如下图设置三 jar 包的库引用
六. 开始HellorWorld
这里是一个很简单的请假流程,请假人提交假单给经理审批,经理审批后结束。要说明的是,这个流程并不严谨,比如经理不通过流程应该到哪?不过这并不防碍拿它来做示例,螃蟹还得一个一个的吃。我们先拿这一杆子捅到底的流程做一个最简单的示例,从整体上对 jBPM 工作流开发有概念先。然后我们再慢慢丰富。
1 、定义流程
流程的定义文件是 processdefinition.xml ,这个是一个关键文件, jBPM 的很大一部份内容都是关于它的。在这里我们把原来自动生成的内容,稍做改动:
说明:
流程的名称改成了 helloworld 。(呵呵,也就是这里和 helloworld 有关了)
<controller> 标签定义了三个数据:姓名、请假天数、说明。
<transition> 标签定了 request 节点的一个流程转向,这里是转到 confirm 节点。
<action> 标签定义了流程由一个节点转到另一个节点时,所要执行的动作,动作封装在一个 ActionHandler 类中。比如这里当 request 到 confirm 结点时将执行 RequestAction 类的 execute 方法。
FinishAction 下面还有一个 <reason> (请假理由),它对应于 FinshAction 的属性 String reason 。
2 、 编写 ActionHandler
在上面 processdefinition.xml 里我们定义了两个 ActionHandler : RequestAction 、 ConfirmAction 。其代码如下:
说明: ExecutionContext 是一个贯通流程的容器。它是个大宝箱,里面啥玩意都有,后面将更深入的提到。这里的 reason 就是 processdefinition.xml 中的 ” 我要请假 ”
OK ,后台的程序就算写完了(前台客户端的程序还没写),下面开始部署。
七. 部署processdefinition.xml
我们要把 processdefinition.xml 的流程定义的数据部署到数据库中,因为 jBPM 在正式运行的时候不是去读 processdefinition.xml 文件,而是去读数据库中的流程定义。 这里写了一个个 JUnit 程序来部署 processdefinition.xml ,当然你用普通的 Java Main 也可以。
运行此程序,在控制台打印了一些日志,通过。如果出错,仔佃阅读出错信息以判断错误原因,并确定你按照前面两节:“修改 hibernate.cfg.xml ”和“完善库引用”的内容做好了设置。
八. 从数据库中的查看部署效果
无论是 MySQL 还是 Oracle ,查询 jbpm_processdefinition 表,你会发现多了一条记录,如下图 ( 以 PLSQL Developer 的显示为例 )
依次检查各表我们可以发现有如下变化:
并由此简单判断出各表的作用,表中各字段的作用由字段名也能知晓一二。
jbpm_processdefinition
一个流程定义文件对应一条记录,可记录多个流程定义文件,可记录一个流程定义文件的对个版本。
jbpm_action
记录 ActionHandler 的对象实例(以名称为标识)
jbpm_delegation
记录了 ActionHandler 全类名,以便于用反射方式来加载
jbpm_envent
它的 transition 引用了 Jbpm_transition 表的 id ,再看其它字段,估计此表是表示流程转向事件的一个实例,或者是一个各表之间的联接表。
jbpm_node
流程结点
jbpm_transition
流程的转向定义
jbpm_variableaccess
流程中携带的变量。 ACCESS 字段是这些变量的读写权限
一.安装及配置
http://www.jboss.org/jbossjbpm/jpdl_downloads/下载jbpm-starters-kit-3.1.4 包里就有,目录地址如下: D:\jbpm-starters-kit-3.1.1\jbpm-designer\jbpm-gpd-feature\eclipse ,插件的安装方式是链接式还是直接复制式,任选吧。
安装jBPM的开发插件步骤如下:
(1) 打开Eclipse选择菜单“Help->Software Updates->Find and Install”;
(2) 弹出窗口中选择“Search for new features to install”,然后点击“Next >”;如图
(3) 点击按扭“New Local Site…”选择插件目录,位于jbpm-designer\jbpm-gpd-feature\eclipse目录下,如:E:\Java\tools\jbpm-starters-kit-3.1.4\jbpm-designer\jbpm-gpd-feature\eclipse。选定后点“OK”,如图
(4) 选中“jbpm-gpd-feature/eclipse”,然后点击“Finish”,如图
(5) 然后选择同意条款,接提示步骤安装就可以了。
(6) 如果安装成功,则 Eclipse 首选项里多了一个 JBoss jBPM ,另外我们也需要到这个 jBPM 的首选项里做一些配置工作――指定 jBPM 的安装路径(如下图所示)。这个配置主要是为了找到 jbpm 下的各种 jar 包,好让 Eclipse 设置项目的库引用。本文指向路径是 d:\jbpm-starters-kit-3.1.1\jbpm.3
二. 新建jBPM项目
主菜单“文件->新建->项目”,在弹出的对话框里,有“ Process Project ”项,如下图所示:
选上好,单击“下一步”,起个名“ myjbpm ”,然后就可以单击“完成”了。然后就生成了如下图所示的一个项目结构:
这个项目和通常 Eclipse 的项目结构有点不同,不过这是一个现在非常流行的项目结构, src/java 存放源文件, test/java 存放相应的 JUnit 单元测试代码。如果你用 Maven 来编译构建项目,对这种目录结构一定不陌生。
项目创建起了,介绍一下里面的文件吧:
l MessageActionHandler ,自动生成的一个 ActionHandler 。不想要可以删掉。
l ehcache.xml cache 的配置文件,里面有很详解的英文说明。没有必要可以不用改它。
l hibernate.cfg.xml jBPM 是用 Hibernate 进行工作流的数据存储的,这个就是 Hibernate 的配置文件。后面我们将讲到如何配置这个文件。
l jbpm.cfg.xml jbpm 本身的配置文件。现在是空的,它用的是缺省配置,你想知道有哪些配置就去看这个文件 D:\jbpm-starters-kit-3.1.1\jbpm.3\src\java.jbpm\org\jbpm\default.jbpm.cfg.xml
l log4j.properties 这个是日志 API 包 log4j 的配置文件,用过 log4j 的都知道。
l SimpleProcessTest.java 这个是对最重要的流程配置文件的 processdefinition.xml 单元测试代码。这里表扬一点, jBPM 的优良设计使得它的可测试性非常之高,喜欢写 t 单元测试的人有福了。
l gpd.xml 用于生成流程图的定义文件。都是一些方框的坐标和长宽
l processdefinition.xml 这个是对最重要的流程配置文件,以后写流程要经常和它打交道。
l processimage.jpg 一个流程图
从项目结构来看,我们没有看到 JSP 网页程序,也没有看到 GUI 客户端程序,这些代码都是要我们以后开发中来写的。但本文不准备用 JSP 、 GUI ( Swing 、 SWT )来做示例,而是用 JUnit 代码来做使用 jBPM 客户端来演示。因为 jBPM 实际上是一个后台框架,至于前台是 JSP 还是 Swing 还是无界面的 java.class 都是无关紧要的。在教程里用无界面的 java.class 来做客户端则更方便一些,如果进一步采用 JUnit ,则这样的 java.class 同时还具备了单元测试的功能。以后就是用 JSP 写了 WEB 页面,我们还是可以用这些 JUnit 程序来做单元测试,避免了频繁的鼠标点按 WEB 页面这样的力气活。所以在 jBPM 自带的英文教程里都是一个 JUnit 程序,不仔佃看还真摸不着头脑。
三. 初始化数据库
jBPM 需要数据库支持, jBPM 会把自己的一个初始化数据存储到数据库,同时工作流的数据也是存储到数据库中的。 jBPM 使用 Hibernate 作为的存储层。将jbpm-starters-kit-3.1.4下的子目录jbpm改名为jbpm.3,否则在执行下面的ant命令时会报jbpm.3 目录不存在的错误:
在 DOS 窗下,进入E:\Java\tools\jbpm-starters-kit-3.1.4\jbpm-db目录,执行ant oracle.scripts命令。执行成功后在E:\Java\tools\jbpm-starters-kit-3.1.4\jbpm-db\build\oracle\scripts目录里生成以下四个sql 文件:
l oracle.create.sql —— 创建表结构的sql语句
l oracle.drop.sql —— 删除表结构的sql语句
l oracle.drop.create.sql —— 先删除表结构再创建的sql语句
l oracle.clean.sql —— 清除所有表中数据的sql语句
在Oracle 数据库中执行@E:\Java\tools\jbpm-starters-kit-3.1.4\jbpm-db\build\oracle\scripts\ oracle.create.sql,进行建表。
如果是mysql, ant mysql.scripts
用source XXXX/mysql.create.sql导入sql
四. hibernate.cfg.xml
hibernate.cfg.xml 的默认设置是用 HSQL ,这是一个内存数据库,这种内存数据库用来代替项目实际所用的数据库来做单元测试挺不错的。不过我们这里是要试试用 MySQL 、 Oracle ,那就改一下设置吧。
注:配置值可参考 D:\jbpm-starters-kit-3.1.1\jbpm-db 对应子目录下的 hibernate.properties 文件。
1 、 MySQL 的更改如下:
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/jbpm</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property> <property name="hibernate.cache.provider_class"> org.hibernate.cache.HashtableCacheProvider </property>
2 、 Oracle 的更改如下:
<property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property> <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <property name="hibernate.connection.url">jdbc:oracle:thin:@192.168.123.10:1521:wxxrDB</property> <property name="hibernate.connection.username">chengang</property> <property name="hibernate.connection.password">chengang</property>
如果你装了 Oracle 的客户端,并且 D:\oracle\ora92\network\ADMIN\tnsnames.ora 里做了如下的设置
WXXRDB_192.168.123.10 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.123.10)(PORT = 1521)) ) (CONNECT_DATA = (SID = wxxrDB) (SERVER = DEDICATED) ) )
则 Oracle 的 hibernate.connection.url 项也可以设为: jdbc:oracle:oci:@WXXRDB_192.168.123.10
五. 完善库引用
虽然 jBPM 在创建项目之初给我们设置好了库引用,如下图
但后面运行时还是报一些 NoClassDefFoundError 异常,如没有对 hibernate3.jar 的引用导致下面的错误
java.lang.NoClassDefFoundError: org/hibernate/Session
at org.jbpm.persistence.db.DbPersistenceServiceFactory.openService(DbPersistenceServiceFactory.java:55)
at org.jbpm.svc.Services.getService(Services.java:136)
.......
所以我们要为本文的实例完善库引用。主要是把 MySQL 和 Oracle 的 JDBC 库、以及 Hibernate 的 hibernate3.jar 加入到项目的库引用中。
(1) 找到缺少的 jar 包
l mysql 的 jdbc 包,在 D:\jbpm-starters-kit-3.1.1\jbpm-db\mysql\lib 目录里
l oracle 的 jdbc 包, jbmp 中没有包含(可能是没拿到 oracle 授权),我们可以自已去 oracle 网站上下载,或者去 oracle 安装目录 D:\oracle\ora92\jdbc\lib 找 ojdbc14.jar (我们公司用的是 Oracle9i )
l Hibernate3.jar 在目录 D:\jbpm-starters-kit-3.1.1\jbpm.3\lib\hibernate 里。
(2) 在项目里创建一个 lib 目录,将这三个 jar 复制到 lib 目录。
(3) 如下图设置三 jar 包的库引用
六. 开始HellorWorld
这里是一个很简单的请假流程,请假人提交假单给经理审批,经理审批后结束。要说明的是,这个流程并不严谨,比如经理不通过流程应该到哪?不过这并不防碍拿它来做示例,螃蟹还得一个一个的吃。我们先拿这一杆子捅到底的流程做一个最简单的示例,从整体上对 jBPM 工作流开发有概念先。然后我们再慢慢丰富。
1 、定义流程
流程的定义文件是 processdefinition.xml ,这个是一个关键文件, jBPM 的很大一部份内容都是关于它的。在这里我们把原来自动生成的内容,稍做改动:
<?xml version="1.0" encoding="GBK"?> <process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="helloworld"> <!-- 申请 --> <start-state name="request"> <task> <controller> <variable name="name" /> <variable name="day" /> <variable name="note" /> </controller> </task> <!-- 流程转向 --> <transition name="to_confirm" to="confirm"> <action name="requestAction" class ="cn.com.chengang.jbpm.RequestAction"> <reason> 我要请假 </reason> </action> </transition> </start-state> <!-- 审批 --> <state name="confirm"> <transition name="to_end" to="end"> <action name="finishAction" class ="cn.com.chengang.jbpm.ConfirmAction" /> </transition> </state> <!-- 结束 --> <end-state name="end" /> </process-definition>
说明:
流程的名称改成了 helloworld 。(呵呵,也就是这里和 helloworld 有关了)
<controller> 标签定义了三个数据:姓名、请假天数、说明。
<transition> 标签定了 request 节点的一个流程转向,这里是转到 confirm 节点。
<action> 标签定义了流程由一个节点转到另一个节点时,所要执行的动作,动作封装在一个 ActionHandler 类中。比如这里当 request 到 confirm 结点时将执行 RequestAction 类的 execute 方法。
FinishAction 下面还有一个 <reason> (请假理由),它对应于 FinshAction 的属性 String reason 。
2 、 编写 ActionHandler
在上面 processdefinition.xml 里我们定义了两个 ActionHandler : RequestAction 、 ConfirmAction 。其代码如下:
package cn.com.chengang.jbpm; import org.jbpm.graph.def.ActionHandler; import org.jbpm.graph.exe.ExecutionContext; public class RequestAction implements ActionHandler { private static final long serialVersionUID = 1L; private String reason; public String getReason() { return reason; } public void setReason(String reason) { this .reason = reason; } public void execute(ExecutionContext context) throws Exception { context.getContextInstance().setVariable("note", reason); } }
说明: ExecutionContext 是一个贯通流程的容器。它是个大宝箱,里面啥玩意都有,后面将更深入的提到。这里的 reason 就是 processdefinition.xml 中的 ” 我要请假 ”
package cn.com.chengang.jbpm; import org.jbpm.graph.def.ActionHandler; import org.jbpm.graph.exe.ExecutionContext; public class ConfirmAction implements ActionHandler { private static final long serialVersionUID = 1L; public void execute(ExecutionContext context) throws Exception { context.getContextInstance().setVariable("note", " 准假 " ); } }
OK ,后台的程序就算写完了(前台客户端的程序还没写),下面开始部署。
七. 部署processdefinition.xml
我们要把 processdefinition.xml 的流程定义的数据部署到数据库中,因为 jBPM 在正式运行的时候不是去读 processdefinition.xml 文件,而是去读数据库中的流程定义。 这里写了一个个 JUnit 程序来部署 processdefinition.xml ,当然你用普通的 Java Main 也可以。
package com.sample; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import junit.framework.TestCase; import org.jbpm.JbpmConfiguration; import org.jbpm.JbpmContext; import org.jbpm.graph.def.ProcessDefinition; /** * 部署 processdefinition.xml * * @author chengang * */ public class DeployProcessTest extends TestCase { /** * 在本方法执行完毕后,检查 jbpm_processdefinition 表会多了一条记录 * * @throws FileNotFoundException */ public void testDeployProcessDefinition() throws FileNotFoundException { // 从 jbpm.cfg.xml 取得 jbpm 的配置 JbpmConfiguration config = JbpmConfiguration.getInstance(); // 创建一个 jbpm 容器 JbpmContext jbpmContext = config.createJbpmContext(); // 由 processdefinition.xml 生成相对应的流程定义类 ProcessDefinition ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("helloworld/processdefinition.xml"); // 利用容器的方法将流程定义数据部署到数据库上 jbpmContext.deployProcessDefinition(processDefinition); // 关闭 jbpmContext jbpmContext.close(); } }
运行此程序,在控制台打印了一些日志,通过。如果出错,仔佃阅读出错信息以判断错误原因,并确定你按照前面两节:“修改 hibernate.cfg.xml ”和“完善库引用”的内容做好了设置。
八. 从数据库中的查看部署效果
无论是 MySQL 还是 Oracle ,查询 jbpm_processdefinition 表,你会发现多了一条记录,如下图 ( 以 PLSQL Developer 的显示为例 )
依次检查各表我们可以发现有如下变化:
并由此简单判断出各表的作用,表中各字段的作用由字段名也能知晓一二。
jbpm_processdefinition
一个流程定义文件对应一条记录,可记录多个流程定义文件,可记录一个流程定义文件的对个版本。
jbpm_action
记录 ActionHandler 的对象实例(以名称为标识)
jbpm_delegation
记录了 ActionHandler 全类名,以便于用反射方式来加载
jbpm_envent
它的 transition 引用了 Jbpm_transition 表的 id ,再看其它字段,估计此表是表示流程转向事件的一个实例,或者是一个各表之间的联接表。
jbpm_node
流程结点
jbpm_transition
流程的转向定义
jbpm_variableaccess
流程中携带的变量。 ACCESS 字段是这些变量的读写权限
相关推荐
【JBPM入门】 JBPM,全称是Java Business Process Management,是一个开源的工作流管理系统,用于实现业务流程自动化。它提供了一套完整的工具集,包括设计、建模、执行和监控业务流程,支持BPMN2.0标准,使得业务...
### jBPM 白皮书:介绍 jBPM 入门 #### 一、引言与背景 在当今数字化转型的时代背景下,业务流程管理(Business Process Management,简称 BPM)成为了企业提升效率、优化流程的关键技术之一。BPM 提供了一种程序...
斯坦福特jbpm入门资料,内容不错,由浅入深,系统讲解了jbpm,是不错的入门资料噢
jbpm入门例子收藏 jBPM(Java Business Process Management)是一个开源的工作流管理系统,由JBoss组织开发。它主要用于管理业务流程,支持流程定义、执行、监控和优化。jBPM提供了一整套工具,包括Eclipse插件,...
在jbpm入门过程中,首先需要理解的是它的核心概念: 1. **流程定义**:jbpm使用BPMN 2.0(Business Process Model and Notation)标准来定义流程。BPMN是一种图形化的语言,用于描述业务流程的逻辑,包括开始事件、...
**jbpm入门实践** jbpm 是一款开源的工作流管理系统,主要用于设计、执行和管理业务流程。本文主要针对jbpm 5.2版本进行入门实践,适合初级用户学习。首先,我们要进行必要的安装与配置。 **一、jbpm的准备工作** ...
首先,"jBPM 开发入门指南"提供了一个系统性的引导,涵盖了jBPM的基本概念、安装配置、工作流设计、任务管理和事件处理等内容。它通常会讲解如何创建第一个流程定义,以及如何使用jBPM提供的工具进行流程建模。通过...
jBPM,全称Java Business Process Management,是一个由JBoss组织开发的开源工作流管理系统,主要负责业务流程的建模、执行和管理。它提供了一套完整的工具链,包括Eclipse插件,使得开发者能够方便地设计、部署和...
【jbpm的入门1--简单实例】 jbpm(Java Business Process Management)是一个开源的工作流管理系统,它提供了完整的业务流程管理解决方案,包括流程设计、执行、监控和优化。本实例将带你初探jbpm的世界,通过一个...
《jbpm开发入门指南》和《jbpm开发指南》是两本针对jbpm框架的重要参考资料,对于初学者和有经验的开发者来说都是宝贵的资源。它们通常会涵盖以下核心知识点: 1. **jbpm概述**:介绍jbpm的基本概念,包括它的工作...
三、jbpm入门示例 在这个"myjbpm"压缩包中,你可能找到了一个简单的jbpm流程示例,通常包括以下组成部分: 1. 流程定义文件(.bpmn20.xml):用BPMN 2.0标准定义的流程图,描述了流程的任务和流转规则。 2. 图形文件...
本资源是oa办公自动化中工作流的插件,使用比较方面
jbpm入门** jbpm的入门学习通常从理解其核心概念开始,如流程定义(Process Definition)、任务(Task)、事件(Event)和工作流实例(Process Instance)。流程定义使用BPMN语言编写,通过jbpm提供的图形化编辑器...
### jBPM入门教程知识点详解 #### 一、jBPM简介与理解 - **jBPM**(**j**ava **B**usiness **P**rocess **M**odeling)是一个开源的工作流引擎,用于自动化业务流程。它不仅提供了一个灵活的流程执行引擎,还支持...
二、jbPM入门 1. **安装与配置**: 首先,你需要下载jbPM的最新版本并进行安装。通常,这包括获取jbPM工具集,如jbPM Workbench,用于图形化设计流程,以及jbPM服务仓库,用于运行流程实例。 2. **环境准备**: 为了...
**JBPM4.4入门开发实例** JBPM(Java Business Process Management)是一个开源的工作流程管理系统,专注于业务流程的建模、执行和监控。版本4.4是JBPM的一个早期版本,尽管现在已经有更新的版本,但这个入门实例...
JBPM4.4 小例子,入门级别,下载后请修改jbpm.hibernate.cfg.xml数据库配置文件,运行http://localhost:port/workflowOfHoliday/leave?zzg=deploy,希望对大家有用
**jbpm入门示例** 1. **安装与配置**:首先,你需要下载jbpm的最新版本并解压,然后配置相关的环境变量,如JAVA_HOME和JBOSS_HOME。同时,确保Maven或Gradle已安装,用于构建jbpm项目。 2. **创建第一个流程**:...
**jbpm入门第二步——流程设计器的安装** 在IT领域,`jbpm`(Java Business Process Management)是一款流行的工作流管理系统,它允许开发者设计、执行和管理业务流程。本篇将详细讲解如何安装并使用jbpm的流程设计...
1.2 jBPM入门套件 入门套件提供了一个完整的开发环境,包括预配置的Jboss应用服务器、图形化流程设计工具(eclipse插件)、数据库兼容包、核心jBPM组件以及BPEL扩展参考。预配置的服务器集成了核心jBPM服务、集成...