第一步:定义流程定义文件:processdefinition.xml
<?xml version="1.0" encoding="UTF-8"?>
<process-definition
xmlns="urn:jbpm.org:jpdl-3.1" name="HelloWorld">
<start-state name="start">
<transition name="to_state1" to="state1"></transition>
</start-state>
<end-state name="end"></end-state>
<state name="state1">
<transition name="to_end" to="end"></transition>
</state>
</process-definition>
第2步:发布流程
import java.util.List;
import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmContext;
import org.jbpm.db.GraphSession;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ProcessInstance;
import org.jbpm.graph.exe.Token;
import junit.framework.TestCase;
public class HelloWorldBdTest extends TestCase {
public static JbpmConfiguration jbpmConfiguration = null;
public static JbpmContext jbpmContext = null ;
static {
//构造一个jbpmConfiguration 实例
jbpmConfiguration = JbpmConfiguration.parseXmlString(
"<jbpm-configuration>" +
" <jbpm-context>" +
" <service name='persistence' " +
" factory='org.jbpm.persistence.db.DbPersistenceServiceFactory' />" +
" </jbpm-context>" +
" <string name='resource.hibernate.cfg.xml' " +
" value='hibernate.cfg.xml' />" +
" <string name='resource.business.calendar' " +
" value='org/jbpm/calendar/jbpm.business.calendar.properties' />" +
" <string name='resource.default.modules' " +
" value='org/jbpm/graph/def/jbpm.default.modules.properties' />" +
" <string name='resource.converter' " +
" value='org/jbpm/db/hibernate/jbpm.converter.properties' />" +
" <string name='resource.action.types' " +
" value='org/jbpm/graph/action/action.types.xml' />" +
" <string name='resource.node.types' " +
" value='org/jbpm/graph/node/node.types.xml' />" +
" <string name='resource.varmapping' " +
" value='org/jbpm/context/exe/jbpm.varmapping.xml' />" +
"</jbpm-configuration>"
);
}
public void testBD(){
//创建数据库表结构
dbCreate();
//流程定义和部署
deployProcessDefinition();
//流程启动
processInstence();
//流程执行继续
processContinues();
}
// 数据库表创建
public void dbCreate(){
//创建jbpm的数据库表结构
jbpmConfiguration.createSchema() ;
System.out.println("创建jbpm数据库表结构成功!");
//销毁所有创建的数据库表
//jbpmConfiguration.dropSchema();
}
//流程定义和部署
public void deployProcessDefinition(){//
//xml文件部署
ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("helloworld/processdefinition.xml");
//创建jbpmContext操作对象。
jbpmContext = jbpmConfiguration.createJbpmContext() ;
try{
//发布定义的流程
jbpmContext.deployProcessDefinition(processDefinition);
}catch(Exception e){
e.printStackTrace();
}finally{
//使用jbpmContext对象操作完成后必须进行关闭,在创建jbpmContext对象是时开始了事务控制,知道
//jbpm关闭,才进行事务的提交。把所有的操作持久化到数据库中
jbpmContext.close() ;
}
}
//流程的启动和执行
public void processInstence(){
//取得jbpmContext操作对象.
jbpmContext = jbpmConfiguration.createJbpmContext();
try{
//取得grapgSession 进行对数据库的操作
GraphSession graphSession = jbpmContext.getGraphSession() ;
//利用graphSession取得流程定义对象
ProcessDefinition processDefinition = graphSession.findLatestProcessDefinition("HelloWorld") ;
//创建一个流程定义实例,启动一个流程
ProcessInstance processInstance=processDefinition.createProcessInstance();
//取得流程定义的 根令牌,这里得到的是流程定义中的start-state节点
Token token = processInstance.getRootToken() ;
System.out.println("节点:"+token.getNode().getName());
//通过signal使流程往下执行执行到了 name = ‘s’的节点
token.signal() ;
System.out.println("token.signal()------------------------ nodeName :"+token.getNode().getName());
//保存当前流程实例
jbpmContext.save(processInstance) ;
}finally{
jbpmContext.close() ;
}
}
//流程的继续执行
public void processContinues(){
//创建jbpmContext 对象
jbpmContext = jbpmConfiguration.createJbpmContext() ;
try{
//取得GraphSession
GraphSession graphSession = jbpmContext.getGraphSession() ;
//取得流程定义
ProcessDefinition processDefinition = graphSession.findLatestProcessDefinition("HelloWorld");
//根据流程定义id 取得该流程所有的实例list
List piList = graphSession.findProcessInstances(processDefinition.getId());
//取得流程实例
ProcessInstance processInstance = (ProcessInstance)piList.get(0);
//流程实例发送信令 流程执行到下一步
Token token = processInstance.getRootToken();
System.out.println("node 执行到 :"+token.getNode().getName());
processInstance.signal() ;
System.out.println("node 下一节点:"+processInstance.getRootToken().getNode().getName());
//保存流程实例
jbpmContext.save(processInstance);
}finally{
jbpmContext.close() ;
}
}
}
分享到:
相关推荐
一、流程定义的基本概念: 二、流程执行的基本概念: 三、流程引擎核心调度过程 ----------------------- jbpm的实现流程图全文共3页,当前为第1页。 jbpm的实现流程图全文共3页,当前为第2页。 ࠀ࠘ࠚࠜࣾऀंऄआ...
1.JPDL的流程定义元素 1)第一层:GraphElement 这个容易理解,因为在画流程定义时,每个拖拉的对象都是一个graph的元素。GraphElement有四个属性: (1)processDefine 表示当前元素属于哪个流程定义 (2)events 表示可以...
第一章 概述 1 1.1 什么是jBPM? 1 1.2 概览 2 1.3 核心引擎 3 1.4 Eclipse编辑器 4 1.5 基于Web的设计器 5 1.6 jBPM控制台 5 1.7 文档结构 6 第二章 获得开始 7 2.1 下载 7 2.2 获得开始 7 2.3 社区 8 2.4 资源 8 ...
第一章 概述 1 1.1 什么是jBPM? 1 1.2 概览 2 1.3 核心引擎 3 1.4 Eclipse编辑器 4 1.5 基于Web的设计器 5 1.6 jBPM控制台 5 1.7 文档结构 6 第二章 获得开始 7 2.1 下载 7 2.2 获得开始 7 2.3 社区 8 2.4 资源 8 ...
二、第一个流程 5 2.1、开始前的准备 5 2.2 、Hello World 例子 6 三、学习JPDL 11 3.1 、简介 11 3.2 、流程版本(Version) 11 3.3 、流程定义 12 3.3.1 process-definition(流程定义) 12 3.3.2 node(自动节点) 13...
第一篇 jBPM工作流开发基础 1 第1章 工作流基础 2 1.1 工作流概念 2 1.1.1 工作流管理思想之于企业现代化管理 2 1.1.2 工作流技术在企业中的应用 5 1.1.3 如何从一个开发者的角度看工作流技术 6 1.2 工作流管理系统...
jbpm相关jPDL的流程定义元素 第一层级:GraphElement第二层级:node;processDefinition;Transition;Task 它们都inherited from GraphElement,反正不要积分下下来看看吧
第一章 概述 6 1.1 什么是jBPM? 6 1.2 概览 7 1.3 核心引擎 9 1.4 Eclipse编辑器 9 1.5 基于Web的设计器 10 1.6 jBPM控制台 11 1.7 文档结构 12 第二章 获得开始 13 2.1 下载 13 2.2 获得开始 13 2.3 社区 14 2.4 ...
第一章:介绍 第二章 开始 第三章. 讲座 第四章....第五章 发布 第六章 永久化 第七章....第八章 上下文 ...第12章....第13章. jBPM 流程定义语言 (JPDL) 第14章 安全 第15章. TDD适合工作流 第16章 可插入架构
jbpm基础入门实例,包括数据库创建,部署流程定义,创建公文,将公文提交到第一个环节,公文当前所处的环节是什么?,如何得知在某个用户手上有哪些待审公文?,如何得知在某个用户手上有哪些待审公文?,如何得知从...
java-ssh jbpm&ativity项目专题系统 可以直接拿到企业中使用, 采用原生的activity插件jnpm 项目包含流程定义部署、请假、任务审批等工作环节, 非常适合有一定基础的开发学习。
12.灵活的在线流程定义 13.灵活的嵌入式部署、独立部署 14.灵活的在线表单定义及版本管理(支持按内表及外部表及视图生成表单) 15.灵活的第三方表单集成 16.开放式的流程体系 17.灵活的组织结构支持 18.流程的导入...
1, jBPM4.4包含了一个图形化设计流程的工具(GPD),它是eclipse插件,是用来设计jPDL的图形化流程的,支持的版本为Eclipse3.5。 2, 插件所在的路径为:install/src/gpd/jbpm-gpd-site.zip。 3, 安装方法:在...
Activiti是一个开源的工作流引擎,它实现了BPMN 2.0规范,可以发布设计好的流程定义,并通过api进行流程调度。 Activiti 作为一个遵从 Apache 许可的工作流和业务流程管理开源平台,其核心是基于 Java 的超快速、超...
这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。 ACT_RU_*: 'RU'表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些...
第一步: 为每条实例记录,添加查看流程图函数 ('<s:property value="#processInstance.id"/>');">查看流程图 function showPng(pid){ alert("查看" + pid + "对应流程图"); } 第二步: 流程图查看Action ...
本人最近买了“深入浅出ExtJS第2版”的书,随书光盘的内容大于我目前的上传,不能一次上传,故分着上传,现在的内容包括:jbpm4视频(jBPM 4视频教程...jBPM 4视频教程02管理流程定义;jBPM 4视频教程03管理流程实例)
提供流程定义、流程设置、流程版本更变,流程任务管理,流程实例管理,流程表单管理,流程表单在线义、模板表单,流程历史查询,查看我的任务,任务回退等丰富流程开发管理。 9 人力管理 10 报表管理 11 公文管理 ...
第8章使用jBPM定义流程-项目jBPM 第9章构建样本应用程序-项目sampleApplication 第10章测试-项目测试 第11章集成-项目集成 附录自定义运算符-项目CEP 其他的项目: 项目bankingcore-包含银行业务领域模型,报告...