传智播客--JBPM的核心API使用总结(汤阳光)
2010-01-08 21:51
288 查看
我们从今天开始学习 OA 办公自动化项目了. 在学习这个项目之前,我们要先学习另一个门基础技术.就是 JBPM 的使用.JBPM 全称是Java
Business Process
Management。是一种基于J2EE的轻量级工作流管理系统,jBPM是公开源代码项目。我们将用两天的时间来学习它.为我们的 OA
项目做准备. JBPM 是各个软件公司使用的非常多,这对我们快速找到一份工作是有非常大的帮助的.
1.对jbpm
3.2.2包结构的介绍.
Config文件夹,放的是配置文件.
Db文件夹,是需要的数据库脚本.
Designer文件夹,是对Eclipse的一个设计器插件.
Doc文件夹,是文档.
Lib文件夹,jbpm需要的第三方类库.
Server文件夹,一个服务器,对刚开始学习时,测试很有帮助.
Src文件夹,源文件.
Jbpm- identity.jar/jbpm-jpdl.jar是最主要的jbpm实现包.
2.加上必要的jar包后,还要配
置好配置文件.
hibernate.cfg.xml.Jbpm的数据持久层是由 Hibernate 来实现的,所以我们可以利用 Hibernate 的
<property name="hbm2ddl.auto">update</property> 属性,来创建 JBPM
需要的表.成功初始化表后是32 张.这里的表我们不能修改.
jbpm.cfg.xml 这个文件打开后是空的.不能不添加.jbpm 会自动加载默认的配置文件.
log4j.perperties这个是可选的,不配置也可以,但没有日志信息.
这三个配置文件的名字不能更改.
3.编写
processdefinition.xml 这个文件的名字不能更改的.
processimage.jpg 这个文件是可选的.流程图片.如果没有这个文件就不会显示流程图片.
gpd.xml是流程图片的定位文件,也是可选的.
4.部署流程定义
这里有6个方法,三种方式.
ProcessDefinition pd = null;
1, xml 文件,指定的是资源的相对路径(相对于classpath)
pd =
ProcessDefinition.parseXmlResource("helloworld/processdefinition.xml");
// pd =
ProcessDefinition.parseXmlInputStream(inputStream);
// pd =
ProcessDefinition.parseXmlReader(reader);
2, zip 文件(流程定义文档),指定的是资源的相对路径(相对于classpath)
// pd =
ProcessDefinition.parseParResource("helloworld/helloworld.zip");
// pd =
ProcessDefinition.parseParZipInputStream(zipInputStream);
3, String
// pd =
ProcessDefinition.parseXmlString(xmlString);
JbpmConfiguration
jbpmConfiguration = JbpmConfiguration.getInstance("/jbpm.cfg.xml");
4. 创建Session,开始事务
JbpmContext jbpmContext =
jbpmConfiguration.createJbpmContext();
jbpmContext.deployProcessDefinition(pd);
总结:
这个是在部署流程定义失败的时候,进行回滚.这句话的功能不是直接进行回滚,而是做个回滚标记.在关闭的时候做回滚.
jbpmContext.setRollbackOnly();
千万要注意,打开的资源一定要记得关闭.不然系统因为这个出现问题,很难定位.
jbpmContext.close();
//
提交/回滚 事务,关闭Session
JbpmConfiguration
jbpmConfiguration = JbpmConfiguration.getInstance();
这个是单实例,多次调用,其
实就初始化一次,最好设成全局.一次声明,多次使用.
5.创建流程实例
ProcessDefinition pd =
jbpmContext.getGraphSession().findLatestProcessDefinition("helloworld");
ProcessInstance pi =
pd.createProcessInstance();
这里是不用手动保存的,jbpm会自动执行这个操作.
jbpmContext.save(pi);
创建一个流程实例
pi.getRootToken().signal();
关闭打开的资源.Java会自动回收没有引用的对象,但不会回收没有关闭的资源.
jbpmContext.close();
6.获取任务实例列表
1)创建Session,开始事务
JbpmContext jbpmContext =
jbpmConfiguration.createJbpmContext();
List<TaskInstance> list =
jbpmContext.getTaskList(actorId);
2)开始任务
TaskInstance ti =
jbpmContext.getTaskInstance(taskInstanceId);
ti.start();
3)结束任务
TaskInstance ti =
jbpmContext.getTaskInstance(taskInstanceId);
ti.end();
上面的API的操作,都是核心的代码.代码还不健壮.不能真正的使用到项目中去.
7.使用模板代码.把上面的
API 核心代码进行套用.
ProcessDefinition pd =
ProcessDefinition.parseXmlResource("helloworld/processdefinition.xml");
JbpmConfiguration
jbpmConfiguration = JbpmConfiguration.getInstance("/jbpm.cfg.xml");
JbpmContext jbpmContext =
jbpmConfiguration.createJbpmContext(); // 创建Session,开始事务
try {
....
} catch (RuntimeException
e) {
jbpmContext.setRollbackOnly();
throw e;
} finally {
jbpmContext.close();
// 提交/回滚 事务,关闭Session
}
感觉学习的内容很多,不过对API的掌握还有待提高.老师说了,对技术的把握不是会用那么简单.而是要用已经掌握的知识来合理的解决问题才是最主要的.
Business Process
Management。是一种基于J2EE的轻量级工作流管理系统,jBPM是公开源代码项目。我们将用两天的时间来学习它.为我们的 OA
项目做准备. JBPM 是各个软件公司使用的非常多,这对我们快速找到一份工作是有非常大的帮助的.
1.对jbpm
3.2.2包结构的介绍.
Config文件夹,放的是配置文件.
Db文件夹,是需要的数据库脚本.
Designer文件夹,是对Eclipse的一个设计器插件.
Doc文件夹,是文档.
Lib文件夹,jbpm需要的第三方类库.
Server文件夹,一个服务器,对刚开始学习时,测试很有帮助.
Src文件夹,源文件.
Jbpm- identity.jar/jbpm-jpdl.jar是最主要的jbpm实现包.
2.加上必要的jar包后,还要配
置好配置文件.
hibernate.cfg.xml.Jbpm的数据持久层是由 Hibernate 来实现的,所以我们可以利用 Hibernate 的
<property name="hbm2ddl.auto">update</property> 属性,来创建 JBPM
需要的表.成功初始化表后是32 张.这里的表我们不能修改.
jbpm.cfg.xml 这个文件打开后是空的.不能不添加.jbpm 会自动加载默认的配置文件.
log4j.perperties这个是可选的,不配置也可以,但没有日志信息.
这三个配置文件的名字不能更改.
3.编写
processdefinition.xml 这个文件的名字不能更改的.
processimage.jpg 这个文件是可选的.流程图片.如果没有这个文件就不会显示流程图片.
gpd.xml是流程图片的定位文件,也是可选的.
4.部署流程定义
这里有6个方法,三种方式.
ProcessDefinition pd = null;
1, xml 文件,指定的是资源的相对路径(相对于classpath)
pd =
ProcessDefinition.parseXmlResource("helloworld/processdefinition.xml");
// pd =
ProcessDefinition.parseXmlInputStream(inputStream);
// pd =
ProcessDefinition.parseXmlReader(reader);
2, zip 文件(流程定义文档),指定的是资源的相对路径(相对于classpath)
// pd =
ProcessDefinition.parseParResource("helloworld/helloworld.zip");
// pd =
ProcessDefinition.parseParZipInputStream(zipInputStream);
3, String
// pd =
ProcessDefinition.parseXmlString(xmlString);
JbpmConfiguration
jbpmConfiguration = JbpmConfiguration.getInstance("/jbpm.cfg.xml");
4. 创建Session,开始事务
JbpmContext jbpmContext =
jbpmConfiguration.createJbpmContext();
jbpmContext.deployProcessDefinition(pd);
总结:
这个是在部署流程定义失败的时候,进行回滚.这句话的功能不是直接进行回滚,而是做个回滚标记.在关闭的时候做回滚.
jbpmContext.setRollbackOnly();
千万要注意,打开的资源一定要记得关闭.不然系统因为这个出现问题,很难定位.
jbpmContext.close();
//
提交/回滚 事务,关闭Session
JbpmConfiguration
jbpmConfiguration = JbpmConfiguration.getInstance();
这个是单实例,多次调用,其
实就初始化一次,最好设成全局.一次声明,多次使用.
5.创建流程实例
ProcessDefinition pd =
jbpmContext.getGraphSession().findLatestProcessDefinition("helloworld");
ProcessInstance pi =
pd.createProcessInstance();
这里是不用手动保存的,jbpm会自动执行这个操作.
jbpmContext.save(pi);
创建一个流程实例
pi.getRootToken().signal();
关闭打开的资源.Java会自动回收没有引用的对象,但不会回收没有关闭的资源.
jbpmContext.close();
6.获取任务实例列表
1)创建Session,开始事务
JbpmContext jbpmContext =
jbpmConfiguration.createJbpmContext();
List<TaskInstance> list =
jbpmContext.getTaskList(actorId);
2)开始任务
TaskInstance ti =
jbpmContext.getTaskInstance(taskInstanceId);
ti.start();
3)结束任务
TaskInstance ti =
jbpmContext.getTaskInstance(taskInstanceId);
ti.end();
上面的API的操作,都是核心的代码.代码还不健壮.不能真正的使用到项目中去.
7.使用模板代码.把上面的
API 核心代码进行套用.
ProcessDefinition pd =
ProcessDefinition.parseXmlResource("helloworld/processdefinition.xml");
JbpmConfiguration
jbpmConfiguration = JbpmConfiguration.getInstance("/jbpm.cfg.xml");
JbpmContext jbpmContext =
jbpmConfiguration.createJbpmContext(); // 创建Session,开始事务
try {
....
} catch (RuntimeException
e) {
jbpmContext.setRollbackOnly();
throw e;
} finally {
jbpmContext.close();
// 提交/回滚 事务,关闭Session
}
感觉学习的内容很多,不过对API的掌握还有待提高.老师说了,对技术的把握不是会用那么简单.而是要用已经掌握的知识来合理的解决问题才是最主要的.
相关文章推荐
- JBPM的核心API使用总结(汤阳光)
- Nodejs进阶:核心模块Buffer常用API使用总结
- Node.js高级编程:用Javascript构建可伸缩应用(4)2.4 核心API基础-使用Buffer处理,编码,解码二进制数据
- activiti学习-02环境准备+安装流程设计器+对流程设计器的使用+对流程设计器的使用+核心API的认识
- xilinx SDK开发 GPIO使用API总结
- Protocol Buffers Lua API总结 -- 内置类型的repeated使用append() 复合类型的repeated使用add()
- HBase客户端Java API使用总结
- spark streaming kafka1.4.1中的低阶api createDirectStream使用总结
- webkit研究日记3:webkit api使用总结(如何打开webkit组件)
- Java基础学习总结(67)——Java接口API中使用数组的缺陷
- 淘宝api使用心得和总结,更新中
- 使用微博API的一点总结
- iOS 本地通知推送 iOS10.0 新API使用总结
- HBase总结(十一)hbase Java API 介绍及使用演示样例
- [导入]Eclipse中Job API使用总结如下三
- JSTL使用总结(1) 核心标签库和SQL标签库
- uci的api接口的使用(总结)
- 2015.08 知识分享 :Java核心API在DMS项目中的使用
- lucene学习总结篇--lucene全文检索的基本原理和lucene API简单的使用
- JBPM6 核心篇 API