`

jbpm-Api的简单使用

阅读更多

准备工作:开启mysql数据库服务并已生成jbpm数据库。

1、建立工程并在工程中建立工作流程,流程图如下:

流程定义的代码如下:

<?xml version="1.0" encoding="UTF-8"?>

 

<process name="leaveHoliday" xmlns="http://jbpm.org/4.3/jpdl">

   <start g="120,0,92,52" name="start1">

      <transition name="to 申请" to="申请"/>

   </start>

   <task g="96,96,92,52" name="申请">

      <transition g="-53,-17" name="to 经理审批" to="经理审批"/>

   </task>

   <decision expr="#{content}" g="120,324,92,52" name="exclusive1">

      <transition g="-47,-17" name="to end1" to="end1"/>

      <transition g="349,348:-53,-17" name="to 老板审批" to="老板审批"/>

   </decision>

   <end g="120,504,48,48" name="end1"/>

   <task g="300,384,92,52" name="老板审批">

      <transition g="351,528:-47,-17" name="to end1" to="end1"/>

   </task>

   <task g="96,216,92,52" name="经理审批">

      <transition g="-83,-17" name="to exclusive1" to="exclusive1"/>

      <transition g="313,243;314,120:-53,-17" name="to 申请" to="申请"/>

   </task>

</process>

 

2、编写测试代码,如下:

package com.tc.test;

 

import java.util.Iterator;

import java.util.List;

 

import org.jbpm.api.Configuration;

import org.jbpm.api.ExecutionService;

import org.jbpm.api.HistoryService;

import org.jbpm.api.ProcessEngine;

import org.jbpm.api.ProcessInstance;

import org.jbpm.api.RepositoryService;

import org.jbpm.api.TaskService;

import org.jbpm.api.history.HistoryProcessInstance;

import org.jbpm.api.task.Task;

 

public class JbpmTest {

 

/**

* @param args

*/

public static void main(String[] args) {

//depaly();

//createExecute();

showHistory();

showExecution();

showTask();

}

/**

* 部署工作流程

*/

public static void depaly(){

ProcessEngine pe=new Configuration().buildProcessEngine();

RepositoryService rs=pe.getRepositoryService();

rs.createDeployment().addResourceFromClasspath("leaveHoliday.jpdl.xml").deploy();

 

}

/**

* 创建工作流程实例

*/

public static void createExecute(){

//leaveHoliday.170001  =null  null

//leaveHoliday-1

ProcessEngine pe=new Configuration().buildProcessEngine();

ExecutionService es=pe.getExecutionService();

ProcessInstance pi=es.startProcessInstanceByKey("leaveHoliday");

System.out.println("pi  id:"+pi.getId()+"  =key:"+pi.getKey()+"  name:"+pi.getName()+"  =ProcessDefinitionId:"+pi.getProcessDefinitionId());

}

/**

* 展示历史流程信息

*/

public static void showHistory(){

ProcessEngine pe=new Configuration().buildProcessEngine();

HistoryService hs=pe.getHistoryService();

 

//获取所有流程历史记录信息并输出

System.out.println("****************history********************");

List<HistoryProcessInstance> hiss=hs.createHistoryProcessInstanceQuery().list();

for (Iterator iterator = hiss.iterator(); iterator.hasNext();) {

HistoryProcessInstance historyProcessInstance = (HistoryProcessInstance) iterator

.next();

//null     =leaveHoliday-1       leaveHoliday.160001active

System.out.println("key:"+historyProcessInstance.getKey()+"      ProcessDefinitionId:"+historyProcessInstance.getProcessDefinitionId()

+"       ProcessInstanceId:"+historyProcessInstance.getProcessInstanceId()+"   state:"+historyProcessInstance.getState());

}

}

/**

* 展示当前引擎中待处理流程

*/

public static void showExecution(){

ProcessEngine pe=new Configuration().buildProcessEngine();

ExecutionService es=pe.getExecutionService();

//获取某个特定的流程实例

ProcessInstance res=es.createProcessInstanceQuery().processInstanceId("leaveHoliday.170001").uniqueResult();

System.out.println("----------------------待执行的流程实例信息----------------------------");

List<ProcessInstance> pl=es.createProcessInstanceQuery().list();

for (Iterator iterator = pl.iterator(); iterator.hasNext();) {

ProcessInstance processInstance = (ProcessInstance) iterator.next();

System.out.println("id:"+processInstance.getId()+"   key : "+processInstance.getKey()+"  name :"+processInstance.getName()

+"     ProcessDefinitionId:"+processInstance.getProcessDefinitionId()+"      state:"+processInstance.getState());

}

}

/**

* 展示所有待处理任务信息

*/

public static void showTask(){

System.out.println("----------------------------task---------------------------------");

ProcessEngine pe=new Configuration().buildProcessEngine();

TaskService ts=pe.getTaskService();

//查找指定流程实例的任务

Task t=ts.createTaskQuery().processInstanceId("leaveHoliday.170001").uniqueResult();

System.out.println(t.getId()+":"+t.getName()+":"+t.getActivityName()+":"+t.getDescription()+":"+t.getExecutionId());

List<Task> ls=ts.createTaskQuery().list();

for (Iterator iterator = ls.iterator(); iterator.hasNext();) {

Task task = (Task) iterator.next();

System.out.println("id:"+task.getId()+"     name:"+task.getName()+"    getActivityName:"

+task.getActivityName()+"      getDescription:"+task.getDescription()+"      executionId:"+task.getExecutionId());

}

}

}

 

 

 

 

 

 

 

 

 

  • 大小: 16.2 KB
0
1
分享到:
评论
3 楼 lichun01 2013-01-21  
masuweng 写道
楼主辛苦了,好贴

我也是刚刚接触jbpm,很多东西也不会! 共同努力吧!
2 楼 jiangwenxian 2013-01-21  
学习中....
1 楼 masuweng 2013-01-21  
楼主辛苦了,好贴

相关推荐

    JBPM5 使用手册

    文档包括程序的安装,以及简单程序的案例 jBPM 用户手册 第一章 概述 第二章 安装 第三章 流程 - 第四章 BPMN2.0 - 第五章 API - 第六章 人工任务 - 第七章 领域 - 规范流程 - 第八章 持久化 - 第九章 控制台 - ...

    jbpm安装及使用方法

    ),action中将会调用到API里 executionContext.leaveNode(String transitionName),transitionName即这里的leaving transition名字。 C、创建新的执行路径: 很典型的就是fork node。流程在这里会分叉,产生新的...

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

    此外,本篇还可以帮助读者快速上手jBPM4、使用jBPM4开发企业流程应用,包括安装和配置jBPM4、使用jBPM图形化流程设计器(GPD)设计流程、把流程部署到服务器上去、使用jBPM 4 Service API控制流程、掌握jBPM流程定义...

    Drools 应用代码

    简单通俗的讲,使用了规则引擎就把业务需求实现那部分独立出来,并使用一种新的“编程”方式实现业务逻辑。而这种新的“编程”方式可以快速灵活响应变化,甚至让业务人员直接参与到业务需求的逻辑实现与验证,与传统...

    jbpm4.4学习分享

    里面有关于jbpm4.4相关的文档,api,操作手册已经一个简单的web工程实例, 刚接触的人很有帮助

    iuhyiuhkjh908u0980

    bpm-identity-3.1.2.jar为JBPM的用户权限验证包,如使用系统自身 ... by zhxp791008 2008-02-25 回复 (9) FormPanel 问题 做了一个登陆的界面 我想加个验证码 效果如下: 这个验证码的图片是放在 一个textfield里面...

    基于Maven搭建ssm,bootstrap,mysql 实现后台管理

    Shiro 是一个用 Java 语言实现的框架,通过一个简单易用的 API 提供身份验证和授权,更安全,更可靠 D ehcache 分布式缓存; 是一个纯Java的进程内缓存框架,具有快速、精干等特点,广泛使用的开源Java分布式缓存。 E ...

    Activiti6.0教程例子下载

    对Demo的使用介绍在官方文档的后面才开始介绍,这里建议应用跑起来之后,先自己试试手(可看后面介绍Demo如何使用的章节),看看如何跑一个流程、整个流程是怎么流的、并随时关注数据库表里的数据的变化等,对以后的...

    java版商城源码下载-at:在

    是一个纯Java的进程内缓存框架,具有快速、精干等特点,广泛使用的开源Java分布式缓存。 E 微信接口开发(后续会加入Activiti5 工作流 )赠送一个jbpm工作流大型ERP系统(含OA、财务、分销)参考学习 F WebSocket 通信...

    Spring攻略(第二版 中文高清版).part2

    1.8 使用工厂Bean和Utility Schema定义集合 29 1.8.1 问题 29 1.8.2 解决方案 29 1.8.3 工作原理 29 1.9 用依赖检查属性 31 1.9.1 问题 31 1.9.2 解决方案 32 1.9.3 工作原理 32 1.10 用@Required...

    Spring攻略(第二版 中文高清版).part1

    1.8 使用工厂Bean和Utility Schema定义集合 29 1.8.1 问题 29 1.8.2 解决方案 29 1.8.3 工作原理 29 1.9 用依赖检查属性 31 1.9.1 问题 31 1.9.2 解决方案 32 1.9.3 工作原理 32 1.10 用@Required...

    Activiti5 10分钟入门指南(中文)

    通过一个简单的业务流程,介绍了基本的Activiti概念和API。

    Activiti工作流学习资料.zip

    这四张表很常见,基本的组织机构管理,关于用户认证方面建议还是自己开发一套,组件自带的功能太简单,使用中有很多需求难以满足 3.3.5:通用数据表 1)act_ge_bytearray 二进制数据表 2)act_ge_property 属性数据表...

Global site tag (gtag.js) - Google Analytics