`
jonsamwang
  • 浏览: 36618 次
  • 性别: 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
分享到:
评论

相关推荐

    jbpm4 s2sh 请假流程

    【jbpm4 s2sh 请假流程】是一个基于jbpm工作流引擎和SSH(Struts2、Spring、Hibernate)框架的简单示例应用,用于演示如何在Java Web环境中实现一个请假流程。在这个教程中,我们将深入理解jbpm4的工作原理以及如何...

    jBPM 视频教程 管理流程定义

    当启动一个流程实例时,jBPM会根据流程定义创建实例,并进行状态跟踪。流程实例的生命周期包括启动、执行、暂停、恢复和终止等状态。 ### 4. **任务管理** jBPM提供了任务服务,允许用户处理流程中的任务。任务可以...

    一个Jbpm员工请假流程的实例(doc)

    - **任务节点**:"TN_WriteRequest"是第一个任务节点,员工在此填写请假申请,包括请假天数(变量`dayCount`)。 - **任务分配**:使用`WriteRequestAssignmentHandler`处理任务分配。 - **流程过渡**:完成申请...

    根据jbpm4的.jpdl.xml流程定义文件,绘制出流程图

    本篇我们将聚焦于Jbpm4中的流程定义文件——jpdl.xml,以及如何根据该文件绘制出对应的流程图。 首先,我们要理解什么是JPDL(Jbpm Process Definition Language)。JPDL是一种基于XML的语言,用于描述Jbpm中的业务...

    流程开发java插件jbpm 使用说明 个人总结

    JBPM的内核模型包括工作流引擎、流程定义、流程实例等核心元素,而其内核架构则涉及流程加载、启动、任务处理和流程监控等多个层面。 【基本处理步骤】 1. **加载(发布)流程定义**:通过Eclipse Designer或其他...

    jbpm_流程_能让你熟练的掌握

    第一个流程 在开始jbpm流程开发之前,需要进行一些准备工作,包括安装jbpm开发环境、了解jbpm的基本概念等。Hello World例子是jbpm流程开发的入门级示例,旨在帮助读者快速了解jbpm的基本概念和开发流程。 学习...

    JBPM3.2 表初始化,流程发布第一课

    2. 流程定义文件(.bpmn):完成设计后,会生成一个.bpmn文件,这是流程定义的XML格式表示。这个文件包含了流程的所有细节,如活动、约束、变量等。 3. 发布流程:在JBPM管理控制台,可以上传.bpmn文件进行流程发布...

    jbpm教程 第二部分、(安装和配置JBPM5.4及Eclipse流程插件安装)

    4. **服务启动**:运行JBPM的服务器组件,通常是Kie Server,它可以部署和执行流程定义。启动脚本位于bin目录下,根据操作系统执行对应的start.bat或start.sh。 接下来,我们将探讨如何在Eclipse中安装和配置流程...

    传智播客 jbpm 21讲 第一天(共4天)

    4. **第一个jbpm流程**:通过创建一个简单的示例流程,演示如何使用jbpm Designer设计和导出流程定义文件(.bpmn2.xml)。 5. **流程部署与执行**:讲解如何在jbpm控制台或代码中部署流程定义,以及如何启动和跟踪...

    jbpm4整合流程例子 web流程设计器

    它提供了一个灵活的、可扩展的框架,用于构建和执行流程定义。jbpm4的主要组件包括: - **流程定义**:使用BPMN 2.0标准来创建流程模型,使得流程定义易于理解和维护。 - **流程引擎**:执行流程实例,管理流程变量...

    JBPM视屏教程共9节 jBPM 4视频教程04设计请假流程

    jBPM是一个开源的BPM框架,它提供了全面的工作流解决方案,包括流程定义、执行、监控和优化等关键功能。 【描述】"JBPM视屏教程共9节"表明这是一个系列教程,旨在深入浅出地讲解jBPM的相关知识,而"设计请假流程"这...

    jbpm4.4 流程运转+驳回+分配组任务+ssh2

    jbpm4.4是JBoss Business Process Management Suite的第4.4版本,它是一个开源的工作流和业务流程管理系统,用于构建、部署和管理业务流程。本教程将深入探讨jbpm4.4中的核心功能,包括流程运转、驳回、分配组任务...

    JBPM视屏教程共9节 jBPM 4视频教程09流程图跟踪

    【描述】描述中的"JBPM视屏教程共9节 jBPM 4视频教程09流程图跟踪"暗示了这是一个完整的课程系列,其中的第九部分特别关注流程图的追踪功能。在jBPM中,流程图跟踪是理解流程执行情况的关键工具,帮助开发者和业务...

    jbpm4.0三个例子

    1. **LeaveJbpm**:这个示例可能是一个请假流程的应用,展示了如何在jbpm4中定义一个工作流,包括请假申请、审批等步骤。用户可以通过编写Java代码启动流程实例,同时也可以设置监听器来跟踪流程状态的变化,实现...

    jbpm的扩展源代码

    jbpm(JBoss Business Process Management)是一款开源的工作流和业务流程管理系统,用于设计、执行和管理业务流程。jbpm的扩展源代码意味着...对于想要深入了解jbpm和业务流程管理的人来说,这是一个宝贵的资源。

    JBPM5.4及Eclipse流程插件安装

    6. **创建流程项目**:通过插件的模板功能,可以快速创建包含流程定义、表单和部署文件的项目。 7. **设计流程**:使用BPMN2.0编辑器拖拽元素,设计业务流程图,并保存为`.bpmn`文件。 8. **编译和部署**:将流程...

    jbpm4之HelloWorld实例

    【jbpm4之HelloWorld实例】是一个初学者入门教程,主要介绍了如何在Java环境中使用jbpm4(Business Process Management Suite 4)框架构建...通过这个"HelloWorld"实例,你将迈出使用jbpm4进行业务流程自动化的第一步。

    JBPM4介绍开发步骤简介

    1. **定义流程**:这是开发流程的第一步,涉及到在JBPM中创建和设计具体的业务流程模型。通常,这一步会利用图形化的工具如JBPM Designer或直接编辑JPDL/XML文件来完成,以确保流程逻辑的清晰和准确。 2. **部署...

    jbpm4.4请假例子,eclipse工程

    1. **jbpm4.4**:jbpm4.4是jbpm的第4个主要版本,它提供了流程定义、流程实例管理和任务服务等功能。jbpm4.4支持BPMN 2.0标准,使得流程模型更接近业务人员的语言,同时也强化了对工作流的控制和监控。 2. **...

    应用jBPM4解决中国特色的流程需求

    1. **用户友好的流程定义工具**:尽管完全由最终用户设计流程不太现实,但提供一个基于Web的、简单易用的流程设计器仍然非常必要,以便业务用户可以方便地对已有流程进行改进。 2. **表单自定义**:用户可以根据...

Global site tag (gtag.js) - Google Analytics