zoukankan      html  css  js  c++  java
  • Jbpm4.4 使用



    最近工作项目中需要用到工作流。于是找到了jbpm。关于jbpm的一些概念就不说了


    1) 首先下载jbpm,这里我选择了jbpm4.4 从官网上可以下载  http://sourceforge.net/projects/jbpm/files/

    下载完了之后,打开文件目录


    doc: 文档说明

    example:项目例子

    install:安装的所需 ,  如eclipse插件,数据库脚本

    lib:依赖包

    src:源码


    2) 下载完了,开始吧 jbpm插件安装到eclipse中

    Help-install new Software



    3) 插件安装好了, 开始配置jbpm数据库  , 我用的sqlserver,数据库JBPMTEST 。

    4) 数据库建好。新建一个java项目,导入jbpm 目录下lib的jar包以及 jbpm.jar到自己的项目环境中

    5) 然后copy  jbpm目录下jbpm-4.4examplessrc 下的


    导入到自己项目中的src下

    6) 最后修改一下  jbpm.hibernate.cfg.xml 这个配置文件,修改下数据库配置信息,这里需要注意一个属性

    <property name="hibernate.hbm2ddl.auto">create-drop</property>

    值为create-drop 会自动把数据库原先jbpm表删掉再新建


    至此 ,jbpm配置也算搞定了 。下面开始写代码进行test吧


    项目结构



    建一个 test 的  jpdl 流程定义文件   ,JBPMTEST为程序入口进行测试

    发布流程,



    1. ProcessEngine engine;  
    2.     public JBPMTEST() {  
    3.         engine=new Configuration().getProcessEngine();  
    4.     }  
    5.      public void setUp(){    
    6.          engine.getRepositoryService().createDeployment()    
    7.             .addResourceFromClasspath("com/aoy/resource/jbpm/test.jpdl.xml").deploy();    
    8.      }  
    9.        

    查询已发布的流程


    1. public void pdList(){  
    2.  List<ProcessDefinition> definitions = engine.getRepositoryService().createProcessDefinitionQuery().list();  
    3.  for (int i = 0; i < definitions.size(); i++) {  
    4.      System.out.println(definitions.get(i).getDeploymentId());  
    5.      System.out.println(definitions.get(i).getDescription());  
    6.      System.out.println(definitions.get(i).getId());  
    7.      System.out.println(definitions.get(i).getName());  
    8. }  
    9. }  



    启动流程实例


    1. public void testStartProcessInstance(){  
    2.            Map instanceVariables = new HashMap();  
    3.            instanceVariables.put("leaver", "小明"); //请假者  
    4.            instanceVariables.put("leaveDays", 7); //请假天数  
    5.            instanceVariables.put("reason", "老婆生孩子"); //请假事项/原因  
    6.            //启动流程实例  
    7.            ProcessInstance processInstance
    8. =engine.getExecutionService().startProcessInstanceByKey("test", instanceVariables);  
    9.            System.out.println("流程实例"+processInstance.getId()+"创建!");  
    10.            System.out.println(processInstance.getKey());  
    11.            System.out.println(processInstance.getName());  
    12.            System.out.println(processInstance.getProcessDefinitionId());  
    13.            System.out.println(processInstance.getState());  
    14.            System.out.println(processInstance.getPriority());  
    15.   
    16.         }  
    17.        


    查询已经启动的流程实例


    1. public void piList(){  
    2.      List<ProcessInstance> pis=engine.getExecutionService().createProcessInstanceQuery().list();    
    3.       for (ProcessInstance processInstance : pis) {    
    4. //        System.out.println(processInstance.getIsProcessInstance());    
    5.         System.out.println(processInstance.getId());  
    6.         System.out.println(processInstance.getExecutionsMap());  
    7.     }    
    8.        




    mark 一下  初步了解 ,待续。。。
  • 相关阅读:
    (考研)散列表和hashcode和hashmap
    java基本数据类型和引用类型
    Java 中的语法糖(7/15整个周六上午总结)
    数据库第一天-数据库索引
    MonoBehaviour生命周期
    Unity基础知识
    SQLite3笔记
    cocos_js写文件
    UGUI_屏幕适配
    KMS算法
  • 原文地址:https://www.cnblogs.com/signheart/p/6595582.html
Copyright © 2011-2022 走看看