在第一篇中我讲过怎样用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的最新版本可以从官方指定的源获取,例如在SourceForge上...
本笔记主要涉及如何创建JBPM所需数据库,定义流程,以及发布流程。 1. **创建JBPM数据库** - JBPM提供了针对不同数据库的SQL脚本,例如在`D:\jbpm-starters-kit-3.1.4\jbpm-db\build`目录下,可以找到针对Oracle的...
通常,流程定义以.bpmn或.xml文件的形式存在,可以通过jbpm提供的工具或API进行部署。在部署过程中,我们还需要理解流程版本管理和热更新的概念,以便在不影响运行中的流程实例的情况下进行流程修改。 执行阶段,...
JBPM4.3提供的工具不仅限于流程设计器,还包括监控工具、管理工具等,学习笔记可能会介绍如何使用这些工具进行流程的部署、监控、调试等操作。 六、文档资料 文件"JBPM4学习笔记.doc"可能包含了博主在学习过程中...
【JBPM4.3学习笔记及请假流程代码】 JBPM(Java Business Process Management)是一个开源的工作流管理系统,它提供了一套完整的解决方案,用于管理和执行业务流程。JBPM4.3是该系统的其中一个版本,它包含了流程...
**JBPM3学习笔记** JBPM(Java Business Process Management)是一个开源的工作流管理系统,它提供了对业务流程的建模、部署、执行和监控的能力。在本文中,我们将深入探讨JBPM3的核心概念、功能和使用方法,以帮助...
通过BPMN,开发者可以清晰地定义流程中的各个活动、决策点、并行分支等,并且这些流程定义可以被JBPM执行引擎理解和执行。 在API方面,JBPM提供了丰富的Java接口和类,例如: 1. `ProcessEngine`:这是与JBPM交互...
4. **部署流程定义**:解释如何将创建的流程定义打包成.jbpm文件,并在jBPM执行环境中部署,以便实例化和执行。 5. **流程实例的管理**:探讨如何启动新的流程实例,以及如何监控实例的状态,如挂起、激活、完成等...
jPDL(jBPM Process Definition Language)是jBPM用来描述和执行业务流程的一种专用语言,它基于XML,简洁且易于理解,允许开发者以声明式的方式定义流程逻辑。 1、系统环境部署: 在开始jBPM-jPDL的学习之前,首先...
下面,我们将通过学习笔记,了解jBPM-jPDL的流程设计与控制机制。 流程设计 在jBPM-jPDL中,流程设计是指定义业务流程的结构和行为。流程设计通常包括定义流程的各个节点、 переход和操作。jPDL(Java ...
【JBPM-web开发部署在Tomcat中的流程实现详解】 JBPM(Java Business Process Management)是一个开源的工作流管理系统,用于设计、执行和管理业务流程。它提供了丰富的API和工具,允许开发者构建灵活、可扩展的...
《jBPM-jPDL学习笔记——流程设计与控制》 在IT行业中,流程管理和自动化是企业提升效率的关键。jBPM(Java Business Process Management)是一个开源的工作流和业务流程管理套件,它允许开发者通过定义流程定义...
本视频教程聚焦于“管理流程定义”这一关键环节,旨在帮助学习者掌握如何在jBPM 4环境中定义和管理流程。 在jBPM 4中,流程定义是通过流程定义语言(Business Process Definition Language, BPD或BPMN)进行的,这...
它提供了一系列的元素和指令,让开发者能够清晰地定义流程的各个阶段、任务分配、决策逻辑以及流程间的交互。在jBPM-jPDL学习笔记中,你将了解到以下关键知识点: 1. **流程定义**:jPDL通过流程图中的节点(如开始...
压缩包中的"hello4"和"hello4web"文件可能包含了一个简单的JBPM4流程示例,包括流程定义文件(可能是bpmn2格式)和相关的Web应用程序代码,用于展示如何在实际项目中部署和运行流程。 通过这个示例,你可以学习如何...
通过API,开发者可以加载、部署和执行这些流程定义。 2. **工作流引擎**:jbpm的工作流引擎是整个系统的中心,负责解析流程定义,管理流程实例和任务。它提供了启动流程、完成任务、查询流程状态等接口。 3. **...
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,这是一个广泛使用的开源Java工作流管理系统,它提供了一整套工具和服务来支持流程的建模、部署和执行。 JBPM是Business Process Management(业务流程管理)的缩写...