`

jbpm启动流程实例

    博客分类:
  • jbpm
阅读更多

package com.nantian.jbpm.utils;

 

import org.jbpm.api.Configuration;

import org.jbpm.api.ProcessEngine;

import org.junit.Before;

 

public class BaseJbpm {

public static ProcessEngine processEngine;

@Before

public void testBase(){

this.processEngine = Configuration.getProcessEngine();

}

}

package com.nantian.jbpm.pi;

 

import java.util.List;

 

import org.jbpm.api.ProcessInstance;

import org.jbpm.api.history.HistoryTask;

import org.jbpm.api.task.Task;

import org.junit.Test;

 

import com.nantian.jbpm.utils.BaseJbpm;

 

/**

 * 流程实例

 *    *  启动流程实例

 *    *  完成任务

 *    *  查询

 *       *  查询流程实例

 *       *  查询任务

 *          *  查询正在执行的任务

 *             *  查询所有的正在执行的任务

 *             *  根据任务的执行人查询正在执行的任务

 *             *  根据executionId查询正在执行的任务

 *             *  根据piid查询正在执行的任务

 *             *  根据pdid查询正在执行的任务

 *             *  根据taskid查询任务  taskService.getTask(String taskId);和其他的查询不一样

 *          *  查询已经完成的任务

 *             *  查询所有的

 *             *  根据任务的执行人

 *             *  根据executionID

 *             *  .......

 *    *  结束流程实例

 * @author Administrator

 *

 */

public class PITest extends BaseJbpm{

/**

* 涉及到的表

*    *  JBPM4_EXECUTION

*        *  表示当前正在执行的流程实例

*        *  字段 

*            DBID_:主键

*            ID_:流程实例ID

*            ACTIVITYNAME_:当前流程实例活跃的节点

*            PROCDEFID_:流程定义ID

*    *  JBPM4_HIST_PROCINST

*        *  表示历史的流程实例,但是当前正在运行的流程实例也在这里

*        *  字段

*            DBID_:主键

*            ID_:流程实例ID

*            START_:整个流程实例的开始时间

*            END_:流程实例的结束时间,如果该流程实例为当前正在运行的流程则,该值为空

*            STATE:表示流程实例的状态  如果是正在运行,为active  如果流程实例结束  为ended

*    *  JBPM4_TASK

*        *  表示当前正在执行的任务

*          说明:任务是jbpm流程图的一个节点

*        *  字段

*           DBID_:主键、任务ID

*           NAME_:任务名称

*           ASSIGNEE_:任务的执行人

*    *  JBPM4_HIST_TASK

*        *  表示历史的任务,但是当前正在执行的任务也在这里

*        *  字段

*          STATE_:如果一个任务被完成以后,值为completed

*              end_:任务的结束时间有值了

*    *  JBPM4_HIST_ACTINST

*        *  表示历史的节点

*        *  字段

*            TYPE_:节点类型

*  说明:

*     *  当启动流程实例的时候,会自动的离开开始节点,流向下一个节点

*     *  jbpm4_task为临时表,当当前的任务完成以后,该数据就被删除了

*/

@Test

public void testStartPIByPDID(){

ProcessInstance pi = processEngine.getExecutionService()

.startProcessInstanceById("qingjia-1");

System.out.println(pi.getId());

System.out.println(pi.getState());

}

/**

* 根据pdkey启动流程实例,是该key下,最高版本

*/

@Test

public void testStartPIByPDKEY(){

processEngine.getExecutionService()

.startProcessInstanceByKey("qingjia1");

}

 

/**

* 完成任务

*/

@Test

public void testFinishTask(){

processEngine.getTaskService()

.completeTask("130001");

}

 

/**

* 查询所有的流程实例

*/

@Test

public void testQueryAllPI(){

List<ProcessInstance> piList = processEngine.getExecutionService()

.createProcessInstanceQuery()

///.processDefinitionId("")//可以根据pdid查询流程实例,很多个

.list();

for(ProcessInstance pi:piList){

/**

* 可以查询piid,pdid,state等

*/

}

}

 

/**

* 查询所有的正在执行的任务

*/

@Test

public void testQueryAllTask(){

List<Task> taskList = processEngine.getTaskService()

.createTaskQuery()

//.processDefinitionId("")

.list();

for(Task task:taskList){

System.out.println("assignee:"+task.getAssignee());

System.out.println("name:"+task.getName());

System.out.println("createtime:"+task.getCreateTime());

}

}

 

/**

* 可以根据任务的执行人查询当前正在执行的任务

* 可以根据pdid查询当前正在执行的任务

*/

@Test

public void testQueryTaskByPDID(){

List<Task> taskList = processEngine.getTaskService()

.createTaskQuery()

.processDefinitionId("qingjia1-4")

.list();

System.out.println(taskList.size());

}

 

/**

* Execution

*    *  如果不存在并发的情况,那么exection和process instance是一样的

*    *  如果存在并发的情况,execution代表分支,process instance代表主线

*    *  根据executionID查询任务,有唯一的一个

*/

 

@Test

public void testQueryTaskByTaskID(){

Task task = processEngine.getTaskService()

.getTask("100002");

System.out.println(task.getName());

}

 

/**

* 查询已经完成的所有的任务

*/

@Test

public void testQueryAllHistTask(){

List<HistoryTask> histTaskList = processEngine.getHistoryService()

.createHistoryTaskQuery()

//.assignee("")  可以根据任务的执行人查询已经完成的任务

//.executionId("")可以根据executionID查询已经完成的任务

.state("completed")

.list();

for(HistoryTask histTask:histTaskList){

System.out.println(histTask.getEndTime());

}

}

 

/**

* 直接结束流程实例

*/

@Test

public void testEndPI(){

processEngine.getExecutionService()

.endProcessInstance("qingjia.70001", "error");

}

 

/**

* 根据 piid查询流程实例,如果查询出来的结果为null,说明该流程实例已经结束了

*/

@Test

public void testIsEndPI(){

ProcessInstance pi = processEngine.getExecutionService()

.createProcessInstanceQuery()

.processInstanceId("qingjia.70001")

.uniqueResult();

System.out.println(pi);//如果该值为null,说明该流程实例已经结束了

}

}

 

分享到:
评论

相关推荐

    jBPM5 实例实践 eclipse+struts2+jbpm

    通过eclipse工具,结合struts2 和 jBMP开发的一个流程实例,里面涉及到人工参与任务、流程图形化的界面监控,人工任务与web界面结合。 可以直接在eclipse中运行,使用tomcat发布该web工程。因为里面用到了人工参与的...

    jbpm4.4学习笔记

    8.1.1在启动流程实例时 26 8.1.2在办理任务时 27 8.1.3执行流程实例时 27 8.2获取流程变量 27 8.3流程变量范围 28 8.4JavaBean流程变量 29 8.4.1实现了Serializable的JavaBean 29 9流程定义语言 30 9.1process(流程)...

    JBPM5 用户指南

    11.2.1 管理流程实例 69 11.2.2 人工任务列表 71 11.2.3 报告 72 11.3 添加新的流程/任务表 73 11.4 REST interface 74 第十二章 Human Tasks 75 12.1 流程内的Human tasks 75 12.1.1 Swimlanes 78 12.2 Human task ...

    JBPM5权威指南

    11.2.1 管理流程实例 69 11.2.2 人工任务列表 71 11.2.3 报告 72 11.3 添加新的流程/任务表 73 11.4 REST interface 74 第十二章 Human Tasks 75 12.1 流程内的Human tasks 75 12.1.1 Swimlanes 78 12.2 Human task ...

    jbpm安装及使用方法

    在整个流程实例运行过程中,我们可以迅速的利用token得到其当前的current state。在解决“并行”等(比如Fork)问题时,jBpm让Token对象维护了父子关系,这种关系在涉及到Fork的时候会产生。 jBpm让Token这个对象身...

    jBPM4.3用户指南

    5.5. 启动一个新的流程实例 5.5.1. 最新的流程实例 5.5.2. 指定流程版本 5.5.3. 使用key 5.5.4. 使用变量 5.6. 执行等待的流向 5.7. TaskService任务服务 5.8. HistoryService历史服务 5.9. Management...

    JBPM4.4用户手册.doc

    5.5. 启动一个新的流程实例 5.5.1. 最新的流程实例 5.5.2. 指定流程版本 5.5.3. 使用key 5.5.4. 使用变量 5.6. 执行等待的流向 5.7. TaskService任务服务 5.8. HistoryService历史服务 5.9. ManagementService管理...

    jBPM5 用户指南-中文

    11.2.1 管理流程实例 75 11.2.2 人工任务列表 77 11.2.3 报告 78 11.3 添加新的流程/任务表 79 11.4 REST interface 80 第十二章 Human Tasks 81 12.1 流程内的Human tasks 81 12.1.1 Swimlanes 84 12.2 Human task ...

    JBPM基于Spring系统工作流平台整合(一)

    1-版本以及系统配置jbpm版本3.2.3http://www.jboss.com/products/jbpm下载后的文件是jbpm-jpdl-suite-3.2.3.zip,解压缩,可以直接通过JBOSS方式启动。http://localhost:XXXX/jbpm-console。jbpm-jpdl-3.2.3下各...

    JBPM工作流框架详解(JSP应用)

    1.了解工作流的相关概念;2.JBPM的插件安装与配置;3.创建与配置工作流;4.创建简单的工作流;5.创建动态请假工作流;6.发布工作流;7.启动工作流;...11.创建JBPM的各种接口实例实现动态设置actorId的值

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

    BPMX3提供了基于BPMN2标准的流程管理,包括流程版本变量,流程节点表单设置,表单的权限设置,流程任务通知,催办,代办,转化,并行会签、串行会签、补签,子流程,同步任务,多实例任务,人工任务、消息任务、邮件...

    Activiti6.0教程例子下载

    RuntimeService提供了启动流程、查询流程实例、设置获取流程实例变量等功能。此外它还提供了对流程部署,流程定义和流程实例的存取服务。 4. TaskService: 在Activiti中业务流程定义中的每一个执行节点被称为一个...

    iuhyiuhkjh908u0980

    JBPM文档1、 加入JBPM支持包下载jbpm-starters-kit-3.1.4在项目的classPath中加入jbpm-3.1.4.jar、jbpm-identity-3.1.2.jar、jbpm-webapp-3.1.2.jar,jbpm-3.1.4.jar必须加入,是JBPM的核心包;bpm-identity-3.1.2....

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

    1.1 实例化Spring IoC容器 1 1.1.1 问题 1 1.1.2 解决方案 1 1.1.3 工作原理 3 1.2 配置Spring IoC容器中的Bean 4 1.2.1 问题 4 1.2.2 解决方案 4 1.2.3 工作原理 4 1.3 调用构造程序创建Bean 14 ...

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

    1.1 实例化Spring IoC容器 1 1.1.1 问题 1 1.1.2 解决方案 1 1.1.3 工作原理 3 1.2 配置Spring IoC容器中的Bean 4 1.2.1 问题 4 1.2.2 解决方案 4 1.2.3 工作原理 4 1.3 调用构造程序创建Bean 14 ...

    JBoss Seam 工作原理、seam和hibernate的范例、RESTFul的seam、seam-gen起步、seam组件、配置组件、jsf,jboss、标签、PDF、注解等等

    1.4. Seam 和jBPM:待办事项列表(todo list)示例..................................................................................................... 32 1.4.1. 理解代码....................................

Global site tag (gtag.js) - Google Analytics