`
jonsamwang
  • 浏览: 36134 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

jbpm实现第一个流程定义

    博客分类:
  • jbpm
阅读更多

第一步:定义流程定义文件: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() ;
           
        }
       
    }
   
}

 

0
0
分享到:
评论

相关推荐

    jbpm的实现流程图.doc

    一、流程定义的基本概念: 二、流程执行的基本概念: 三、流程引擎核心调度过程 ----------------------- jbpm的实现流程图全文共3页,当前为第1页。 jbpm的实现流程图全文共3页,当前为第2页。 ࠀ࠘ࠚࠜࣾऀंऄआ...

    jbpm安装及使用方法

    1.JPDL的流程定义元素 1)第一层:GraphElement 这个容易理解,因为在画流程定义时,每个拖拉的对象都是一个graph的元素。GraphElement有四个属性: (1)processDefine 表示当前元素属于哪个流程定义 (2)events 表示可以...

    JBPM5 用户指南

    第一章 概述 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 ...

    JBPM5权威指南

    第一章 概述 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 ...

    JBPM工作流开发指南

    二、第一个流程 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...

    JBPM4工作流应用开始指南.rar

    第一篇 jBPM工作流开发基础 1 第1章 工作流基础 2 1.1 工作流概念 2 1.1.1 工作流管理思想之于企业现代化管理 2 1.1.2 工作流技术在企业中的应用 5 1.1.3 如何从一个开发者的角度看工作流技术 6 1.2 工作流管理系统...

    jbpm一些资料

    jbpm相关jPDL的流程定义元素 第一层级:GraphElement第二层级:node;processDefinition;Transition;Task 它们都inherited from GraphElement,反正不要积分下下来看看吧

    jBPM5 用户指南-中文

    第一章 概述 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 ...

    很全面的jbpm 的中文文档----下载不扣分,回帖加1分,欢迎下载,童叟无欺

    第一章:介绍 第二章 开始 第三章. 讲座 第四章....第五章 发布 第六章 永久化 第七章....第八章 上下文 ...第12章....第13章. jBPM 流程定义语言 (JPDL) 第14章 安全 第15章. TDD适合工作流 第16章 可插入架构

    jbpm基础入门

    jbpm基础入门实例,包括数据库创建,部署流程定义,创建公文,将公文提交到第一个环节,公文当前所处的环节是什么?,如何得知在某个用户手上有哪些待审公文?,如何得知在某个用户手上有哪些待审公文?,如何得知从...

    java项目第10期-jbpm&amp;activity专题系统.zip

    java-ssh jbpm&ativity项目专题系统 可以直接拿到企业中使用, 采用原生的activity插件jnpm 项目包含流程定义部署、请假、任务审批等工作环节, 非常适合有一定基础的开发学习。

    基于jbpm与activiti的工作流平台技术架构介绍

    12.灵活的在线流程定义 13.灵活的嵌入式部署、独立部署 14.灵活的在线表单定义及版本管理(支持按内表及外部表及视图生成表单) 15.灵活的第三方表单集成 16.开放式的流程体系 17.灵活的组织结构支持 18.流程的导入...

    使用过滤器和监听器_第9页_下载资料

    1, jBPM4.4包含了一个图形化设计流程的工具(GPD),它是eclipse插件,是用来设计jPDL的图形化流程的,支持的版本为Eclipse3.5。 2, 插件所在的路径为:install/src/gpd/jbpm-gpd-site.zip。 3, 安装方法:在...

    Activiti6.0教程例子下载

    Activiti是一个开源的工作流引擎,它实现了BPMN 2.0规范,可以发布设计好的流程定义,并通过api进行流程调度。 Activiti 作为一个遵从 Apache 许可的工作流和业务流程管理开源平台,其核心是基于 Java 的超快速、超...

    Activiti工作流学习资料.zip

    这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。 ACT_RU_*: 'RU'表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些...

    javaee三大框架整合宅急送项目lib包

    第一步: 为每条实例记录,添加查看流程图函数 ('&lt;s:property value="#processInstance.id"/&gt;');"&gt;查看流程图 function showPng(pid){ alert("查看" + pid + "对应流程图"); } 第二步: 流程图查看Action ...

    深入浅出ExtJS第2版(随书光盘)之六

    本人最近买了“深入浅出ExtJS第2版”的书,随书光盘的内容大于我目前的上传,不能一次上传,故分着上传,现在的内容包括:jbpm4视频(jBPM 4视频教程...jBPM 4视频教程02管理流程定义;jBPM 4视频教程03管理流程实例)

    Joffice2.1操作手册

    提供流程定义、流程设置、流程版本更变,流程任务管理,流程实例管理,流程表单管理,流程表单在线义、模板表单,流程历史查询,查看我的任务,任务回退等丰富流程开发管理。 9 人力管理 10 报表管理 11 公文管理 ...

    droolsbook:自动从code.google.compdroolsbook导出

    第8章使用jBPM定义流程-项目jBPM 第9章构建样本应用程序-项目sampleApplication 第10章测试-项目测试 第11章集成-项目集成 附录自定义运算符-项目CEP 其他的项目: 项目bankingcore-包含银行业务领域模型,报告...

Global site tag (gtag.js) - Google Analytics