在第一篇中我讲过怎样用ant命令安装部署jbpm,ant确实很强大,减轻了我们很多工作,假如你已经成功安装了jbpm(用${jbpm.home}表示安装的根目录),那么请看根目录下的\examples\target中有个examples.jar,这个文件在jbpm中表示一个“业务流程归档”,它存在的意义是什么呢。
当我们的业务流程设计开发完毕后,会有很多的相关文件散着在,比如什么,定义流程的jpdl文件,流程图片文件,人机交互的表单页面,java类文件,等等,我们假如一个个滴手动往服务器上部署,可以,但是会累死你,所以,jbpm4支持将流程定义以及其相关资源打包成一个jar(java归档)格式的文件,部署到服务器上。
那么jbpm4工作流引擎就提供了一个基于ant任务的api来部署业务流程归档叫做JbpmDeployTask,它不仅可以部署单个业务流程归档,也可以部署一组业务流程归档到服务器上。它通过读取jbpm.cfg.xml中的JDBC数据连接信息直接将业务流程归档部署到数据库中。在使用之前,确保你的数据库服务器正在运行。
由于在之前我们已经ant过了,所以examples.jar就直接生成了,当然数据库也已经部署了。
这里我们看一下jbpm是怎样处理这个业务流程归档的,首先它扫描业务流程归档中所有以.jpdl.xml结尾的文件,并解析,然后用来发起流程实例,业务流程归档中所有其他资源也会在部署过程中被持久化到数据库中。所有这些资源被统一编号保存在数据库表jbpm4_lob中,可以查看一下。我们可以通过jbpm4提供的RepositoryService.getResourceAsStream API随时访问这些资源。
在这里,先写点api的知识,你可以通过api来进行部署工作,如下
package testmain;
import org.jbpm.test.JbpmTestCase;
/**
*
* @author 阿飞哥 JbpmTestCase继承了Junit的TestCase类,是jbpm4对Junit框架
* 的扩展
*/
public class Test extends JbpmTestCase {
// 这个成员域为单元测试保存流程定义的部署ID
String deploymentId;
// 一般在单元测试的初始化方法(setUp)中,执行流程定义的部署工作
// 这是jBPM单元测试的约定,在后面的单元测试代码中,都将默认执行此约定
@Override
protected void setUp() throws Exception{
super.setUp();
/*
* repository
* 1.存放处, 储藏室
* 2.仓库;宝库
* 3.学识渊博的人;智囊;知识宝典
*/
//使用RepositoryService提供的API方法从classpath中部署流
//程定义
deploymentId=repositoryService.createDeployment
().addResourceFromClasspath
("my_process_define.jpdl.xml").deploy();
//当然,在这里可以多次调用addResourceFromClasspath方法,
//将流程定义的其他资源都部署到数据库中
}
//一般在单元测试的结束方法(tearDown)中,执行删除流程定义部署的工作
@Override
protected void tearDown() throws Exception{
//调用下面方法,将物理清楚deploymentId对应的流程定义及其所有相关资
//源,并关联清楚基于此流程定义的流程实例,
//活动实例,任务,历史流程实例等所有运行时以及历史的流程实体记录
repositoryService.deleteDeploymentCascade(deploymentId);
super.tearDown();
}
}
JbpmTestCase作为jbpm4框架的单元测试超类,为我们做了如下6个流程引擎服务的初始化工作
Protected static ProcessEngine processEngine=null;
//资源库服务
Protected static RepositoryService repositoryService;
//执行服务
Protected static ExecutionService executionService;
//管理服务
Protected static ManagementService managementService;
//任务服务
Protected static TaskService taskService;
//历史服务
Protected static HistoryService historyService;
//身份认证服务
Protected static IdentiryService identiryService;
JbpmTestCase在其initialize方法中式这样初始化上面的各种引擎服务的:
If(processEngine=null){
//根据默认配置,生成工作流引擎对象
processEngine=Configuration.getProcessEngine();
//利用工作流引擎对象,获取6个流程引擎服务
repositoryService=processEngine.get(Repository.class);
.……
……
}
这篇主要讲了通过ant和调用jbpmapi方法发布到jbpm的数据库持久化环境中,使得流程定义得到保存,为后续的流程实例化运行提供模板基础。
下一篇将介绍一个在网上看到的例子 我觉得挺不错的,讲解一下api的一些使用,以便于完整的讲解各种API服务。
分享到:
相关推荐
jbpm学习笔记:安装插件、配置环境、发布流程定义、查看流程定义
主要关于如何使用jbpm,使用jbpm里的方法,如定义流程,流程实例如何与公文绑定,如何让公文流转到下一步,查看我手上有多少公文等,以及如何把jbpm集成到其它项目里面。
JBPM创建数据库,流程定义以及发布学习笔记
6.2部署流程定义 19 6.3删除流程定义 20 6.4查询流程定义 21 6.5获取流程定义文档的资源 22 7 执行流程实例 22 7.1启动流程实例 22 7.2查询我的未完成的个人任务 23 7.3办理任务 24 7.4查询已经完成的任务 25 8流程...
jbpm学习日记,我在学习中的体会有很大帮助
jpdl描述工作流《jBPM学习笔记_框架设计简介》
个人学习jbpm的文档,其中包括一些bug的修改。主要以《jbpm流程》一书为参考
jBPM2-流程图与JBPM API.ppt jBPM2-流程图与JBPM API.ppt
火龙果软件工程技术中心 相关资料:《jBPM学习笔记(V3.2环境部署)》《jBPM学习笔记(流程设计与控制)》概述:jBPM(JBossBusinessProcessManagement业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域...
这是我在吉林大学学习时的笔记,Java,工作流,JBPM,学习笔记
jBPM-jPDL学习笔记——流程设计与控制
最近通过使用jbpm,学习了一下,自己整理的一份jbpm的学习笔记,,希望对你们有帮助
火龙果软件工程技术中心 相关资料:《jBPM学习笔记(V3.2环境部署)》《jBPM学习笔记(框架设计简介)》背景本片文章,我们将从业务流程的设计开始,通过带领大家完成一个完整工作流的程序设计,来学习jPDL的使用。...
jbpm学习资料,jBPM-jPDL学习笔记,很详细。。。。。。。。。。。jbpm教程
开源工作流JBPM3.2.2开发环境部署 Ant Eclipse插件安装以及数据库
jBPM(JBoss Business Process Management业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。 jPDL是构建于jBPM框架上的流程语言之一。在jPDL...
入门材料 jbpm-jpdl 学习笔记 jbpm-jpdl 学习笔记 jbpm-jpdl 学习笔记
eclipse3.4解压版带jbpm流程定义插件,很简单,只需解压即可使用