第一步:定义流程定义文件: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() ;
}
}
}
分享到:
相关推荐
【jbpm4 s2sh 请假流程】是一个基于jbpm工作流引擎和SSH(Struts2、Spring、Hibernate)框架的简单示例应用,用于演示如何在Java Web环境中实现一个请假流程。在这个教程中,我们将深入理解jbpm4的工作原理以及如何...
当启动一个流程实例时,jBPM会根据流程定义创建实例,并进行状态跟踪。流程实例的生命周期包括启动、执行、暂停、恢复和终止等状态。 ### 4. **任务管理** jBPM提供了任务服务,允许用户处理流程中的任务。任务可以...
本篇我们将聚焦于Jbpm4中的流程定义文件——jpdl.xml,以及如何根据该文件绘制出对应的流程图。 首先,我们要理解什么是JPDL(Jbpm Process Definition Language)。JPDL是一种基于XML的语言,用于描述Jbpm中的业务...
- **任务节点**:"TN_WriteRequest"是第一个任务节点,员工在此填写请假申请,包括请假天数(变量`dayCount`)。 - **任务分配**:使用`WriteRequestAssignmentHandler`处理任务分配。 - **流程过渡**:完成申请...
JBPM的内核模型包括工作流引擎、流程定义、流程实例等核心元素,而其内核架构则涉及流程加载、启动、任务处理和流程监控等多个层面。 【基本处理步骤】 1. **加载(发布)流程定义**:通过Eclipse Designer或其他...
第一个流程 在开始jbpm流程开发之前,需要进行一些准备工作,包括安装jbpm开发环境、了解jbpm的基本概念等。Hello World例子是jbpm流程开发的入门级示例,旨在帮助读者快速了解jbpm的基本概念和开发流程。 学习...
2. 流程定义文件(.bpmn):完成设计后,会生成一个.bpmn文件,这是流程定义的XML格式表示。这个文件包含了流程的所有细节,如活动、约束、变量等。 3. 发布流程:在JBPM管理控制台,可以上传.bpmn文件进行流程发布...
4. **服务启动**:运行JBPM的服务器组件,通常是Kie Server,它可以部署和执行流程定义。启动脚本位于bin目录下,根据操作系统执行对应的start.bat或start.sh。 接下来,我们将探讨如何在Eclipse中安装和配置流程...
4. **第一个jbpm流程**:通过创建一个简单的示例流程,演示如何使用jbpm Designer设计和导出流程定义文件(.bpmn2.xml)。 5. **流程部署与执行**:讲解如何在jbpm控制台或代码中部署流程定义,以及如何启动和跟踪...
它提供了一个灵活的、可扩展的框架,用于构建和执行流程定义。jbpm4的主要组件包括: - **流程定义**:使用BPMN 2.0标准来创建流程模型,使得流程定义易于理解和维护。 - **流程引擎**:执行流程实例,管理流程变量...
jBPM是一个开源的BPM框架,它提供了全面的工作流解决方案,包括流程定义、执行、监控和优化等关键功能。 【描述】"JBPM视屏教程共9节"表明这是一个系列教程,旨在深入浅出地讲解jBPM的相关知识,而"设计请假流程"这...
jbpm4.4是JBoss Business Process Management Suite的第4.4版本,它是一个开源的工作流和业务流程管理系统,用于构建、部署和管理业务流程。本教程将深入探讨jbpm4.4中的核心功能,包括流程运转、驳回、分配组任务...
【描述】描述中的"JBPM视屏教程共9节 jBPM 4视频教程09流程图跟踪"暗示了这是一个完整的课程系列,其中的第九部分特别关注流程图的追踪功能。在jBPM中,流程图跟踪是理解流程执行情况的关键工具,帮助开发者和业务...
1. **LeaveJbpm**:这个示例可能是一个请假流程的应用,展示了如何在jbpm4中定义一个工作流,包括请假申请、审批等步骤。用户可以通过编写Java代码启动流程实例,同时也可以设置监听器来跟踪流程状态的变化,实现...
jbpm(JBoss Business Process Management)是一款开源的工作流和业务流程管理系统,用于设计、执行和管理业务流程。jbpm的扩展源代码意味着...对于想要深入了解jbpm和业务流程管理的人来说,这是一个宝贵的资源。
创建jbpm流程的第一步是编写流程定义文件,这是一个遵循特定语法的XML文件。jbpm提供了一个集成开发环境(IDE),即jbpm-jpdl-suite中的designer,它是一个基于Eclipse的插件。首先,需要从jbpm官网下载jbpm-jpdl-...
6. **创建流程项目**:通过插件的模板功能,可以快速创建包含流程定义、表单和部署文件的项目。 7. **设计流程**:使用BPMN2.0编辑器拖拽元素,设计业务流程图,并保存为`.bpmn`文件。 8. **编译和部署**:将流程...
【jbpm4之HelloWorld实例】是一个初学者入门教程,主要介绍了如何在Java环境中使用jbpm4(Business Process Management Suite 4)框架构建...通过这个"HelloWorld"实例,你将迈出使用jbpm4进行业务流程自动化的第一步。
1. **定义流程**:这是开发流程的第一步,涉及到在JBPM中创建和设计具体的业务流程模型。通常,这一步会利用图形化的工具如JBPM Designer或直接编辑JPDL/XML文件来完成,以确保流程逻辑的清晰和准确。 2. **部署...
1. **jbpm4.4**:jbpm4.4是jbpm的第4个主要版本,它提供了流程定义、流程实例管理和任务服务等功能。jbpm4.4支持BPMN 2.0标准,使得流程模型更接近业务人员的语言,同时也强化了对工作流的控制和监控。 2. **...