`

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,说明该流程实例已经结束了

}

}

 

分享到:
评论

相关推荐

    jBPM4.4开发实例

    1. **启动流程**:调用jBPM API启动流程实例,传入初始参数。 2. **任务管理**:查询待办任务,完成任务,或者通过API进行任务的分配和操作。 3. **流程监控**:通过日志、报表或监控工具查看流程执行状态,进行...

    jbpm4请假实例代码

    6. **工作流引擎的使用**:jbpm4提供API来启动流程实例、分配任务、完成任务、查询流程状态等。在实例代码中,我们需要了解如何通过这些API与工作流引擎交互。 7. **持久化管理**:jbpm4使用Hibernate作为默认的...

    JBPM4.4会签实例

    5. **启动流程实例**:通过API或用户界面启动流程实例,指定初始输入数据,流程就会按照定义开始运行。 6. **处理任务**:审批人通过工作流客户端接收并处理任务,他们的决策将影响流程的走向。在会签实例中,每个...

    JBPM报销流程实例-完整例子

    流程实例是工作流定义的实际运行实体,而执行服务则负责启动、暂停、恢复或结束流程实例。 报销流程通常涉及以下几个步骤:员工提交报销单,部门经理审批,财务审核,以及最后的支付。在JBPM中,这些步骤可以被设计...

    jbpm4.4 工程项目实例

    7. **流程实例管理**:项目还可能包含启动新流程实例、查询现有实例、终止或挂起流程的功能。这些操作体现了jbpm对流程实例生命周期的控制。 8. **业务规则和事件处理**:jbpm支持与业务规则引擎(如Drools)集成,...

    工作流jbpm应用的实例

    3. **启动流程实例**:通过API或用户界面触发流程实例的启动,流程引擎会自动根据定义执行流程。 4. **任务处理**:系统会根据流程定义分配任务给相应角色的用户,用户通过任务列表完成任务并推动流程前进。 5. **...

    jbpm+SSH实例(报销流程)

    【jbpm+SSH实例(报销流程)】 在IT领域,工作流管理系统(Workflow Management System,简称WfMS)是用于自动化业务流程的关键工具。其中,jbpm(Business Process Management)是一个开源的工作流引擎,它提供了从...

    jbpm开发实例详解

    在jbpm的开发中,你会遇到流程定义、流程实例的启动和执行、任务的分配和完成、流程变量的管理和查询等功能。例如,你可以使用jPDL定义一个请假流程,其中包含申请、审批和销假等步骤。流程的执行可以通过jbpm提供的...

    经典的配置好的jbpm实例

    这个经典的jbpm实例提供了一个已经配置好的环境,可以直接在Tomcat应用服务器上部署,并能在MyEclipse集成开发环境中导入使用,极大地简化了开发者的学习和开发流程。 一、jbpm简介 jbpm是一个基于Java的流程引擎,...

    jbpm eclipse工程实例

    创建一个JUnit测试类,例如"SimpleProcessTest.java",初始化jbpm运行时环境,启动流程实例,并检查流程执行的结果。 最后,为了让流程实例能在实际应用中运行,你需要将jbpm项目打包成WAR或EAR文件,部署到应用...

    jbpm4实例源码,可直接运行

    源码中会包含如何启动新的流程实例,以及如何跟踪和管理这些实例。 6. **变量(Variables)**:在流程执行过程中,可以定义并操作变量,用于存储流程状态和数据。查看源码,你将了解如何设置和获取变量值。 7. **...

    一个Jbpm员工请假流程的实例(源代码)

    在员工请假流程中,可能会有处理请假申请的服务类,负责与Jbpm引擎交互,启动流程实例,以及处理审批结果。 `config`目录可能包含了配置文件,如数据库连接配置、Jbpm配置等。这些配置文件是Jbpm运行时不可或缺的,...

    一个Jbpm实例代码

    3. **流程实例(Process Instance)**:当流程定义被启动时,就会创建一个流程实例。每个实例都有唯一的ID,对应着一个具体的流程执行路径。 4. **任务(Task)**:任务是流程中的工作单元,可以分配给用户或角色...

    JBPM4 实例

    - **编写代码**:集成JBPM4 API到Java应用中,控制流程实例的启动、暂停、恢复和终止,以及任务的分配和完成。 - **监控与管理**:通过JBPM4提供的管理界面,查看流程实例的状态,跟踪任务进度,进行审计和报表分析...

    Jbpm工作流实例—报销申请

    2. **流程实例数据(.process)**:当流程启动时,Jbpm会创建一个实例,保存流程状态和相关数据。 3. **部署文件(.bar)**:包含流程定义和其他资源,用于部署到Jbpm服务器。 4. **Java代码**:实现流程启动、查询...

    JBPM4.0经典实例

    【JBPM4.0经典实例】是一个以JBPM4.0为核心技术的毕业设计管理系统,该系统涵盖了两个关键的工作流程,即毕业设计选题出题流程和毕业设计提交流程。JBPM(Java Business Process Management)是一款开源的工作流管理...

    jbpm4.3简单实例

    6. **启动实例**:创建新的工作流实例,模拟请假审批流程的启动。 7. **任务操作**:编写代码或者使用jbpm提供的工具来处理流程中的任务,比如分配任务、领取任务、完成任务等。 8. **监控与调试**:观察流程实例的...

    我写的一个jbpm实例

    jbpm支持事件监听,比如流程启动、结束、任务完成等。在实例中,我们可能会看到如何定义和处理这些事件,以实现更精细的流程控制。 8. **监控与审计** jbpm提供了一套强大的监控和审计功能,可以实时查看流程实例...

    spring3.2+jBPM6整合实例

    5. **启动流程实例**:当需要执行某个流程时,通过`RuntimeService`的`startProcessInstanceByKey()`方法,传入流程定义的key来启动新的流程实例。 6. **处理任务**:流程执行过程中会产生待办任务(Task)。用户或...

    jbpm开发实例源码

    在描述中提到的"jbpm开发的小例子",可能是一个小型的流程管理系统,涵盖了jbpm的基本操作,例如创建流程定义、启动流程实例、分配和完成任务、查询流程状态等。这个实例通常会包含以下关键组件: 1. **流程模型**...

Global site tag (gtag.js) - Google Analytics