`
sunbin
  • 浏览: 354342 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JBPM4之基础概念3-任务管理

    博客分类:
  • jbpm
 
阅读更多



 

 import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.zip.ZipInputStream;

import org.jbpm.api.Configuration;
import org.jbpm.api.ExecutionService;
import org.jbpm.api.HistoryService;
import org.jbpm.api.ManagementService;
import org.jbpm.api.ProcessDefinition;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.ProcessInstance;
import org.jbpm.api.RepositoryService;
import org.jbpm.api.TaskService;
import org.jbpm.api.task.Task;

public class Test {
 ProcessEngine processEngine;
 public static void main(String[] args) {
  Test t=new Test();
  t.process();
 }
 
 public  void process() {
  ProcessEngine processEngine=Configuration.getProcessEngine();
  RepositoryService repositoryService=processEngine.getRepositoryService();
  ExecutionService executionService =processEngine.getExecutionService();
  TaskService  taskService=processEngine.getTaskService();
  
  //部署流程
  String pid=repositoryService.createDeployment().addResourceFromClasspath("hellworld.jpdl.xml").deploy();
  //部署zip文件流程
  //ZipInputStream zis=new ZipInputStream(this.getClass().getResourceAsStream("/aa.zip"));
  //repositoryService.createDeployment().addResourcesFromZipInputStream(zis).deploy();
  //创建实例
  Map map=new HashMap();
  map.put("user", "sunbin");
  ProcessInstance processInstance=executionService.startProcessInstanceByKey("hellworld",map);
  //获取任务
  List<Task> taskList=taskService.findPersonalTasks("sunbin");
  for(Task task  :taskList){
   System.out.println(task.getActivityName());
   System.out.println(task.getId());
   System.out.println(task.getAssignee());

  //接收任务
   taskService.takeTask(task.getId(),"sunbin");
   //提交任务
   taskService.completeTask(task.getId(),"to 试测3");
   Set<String> ActivityNames=processInstance.findActiveActivityNames();
   System.out.println(ActivityNames);
   //更新后看到最新id
   processInstance=executionService.findProcessInstanceById(processInstance.getId());
   System.out.println(processInstance.isActive("试测3"));

  }
 }
}

 

 

 

JBPM4执行taskService.completeTask(taskId,map)或taskService.completeTask(taskId) 操作时,出现异常:

No unnamed transitions were found for the task 'XXXX'....................

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------

考虑再三还是把参考中的原因分析写上吧,这样会更完整些,方便查看,省的各种查找了:

原理分析:

1.如果一个任务拥有一个没用名称的外向转移:

复制代码
//返回包含一个null值集合,。  
taskService.getOutcomes()   
//会使用这个外向转移。  
taskService.completeTask(taskId)   
//会使用这个外向转移。  
taskService.completeTask(taskId, null)   
//会抛出一个异常。  
taskService.completeTask(taskId, "anyvalue") 
复制代码

2.如果一个任务拥有一个有名字的外向转移:

复制代码
//返回包含这个转移名称的集合。  
taskService.getOutcomes()   
// 会使用这个单独的外向转移。  
taskService.completeTask(taskId)  
//会抛出一个异常(因为这里没有无名称的转移)。  
taskService.completeTask(taskId, null)   
//会抛出一个异常。  
taskService.completeTask(taskId, "anyvalue")  
// 会根据给定的名称使用转移。   
 taskService.completeTask(taskId, "myName") 
复制代码

3.如果一个任务拥有多个外向转移,其中一个转移没有名称,其他转移都有名称:

复制代码
//返回包含一个null值和其他转移名称的集合。
taskService.getOutcomes() 
//会使用没有名字的转移。
taskService.completeTask(taskId) 
//会使用没有名字的转移。
taskService.completeTask(taskId, null)
//会抛出异常。
 taskService.completeTask(taskId, "anyvalue") 
//会使用名字为'myName'的转移。 
taskService.completeTask(taskId, "myName") 
复制代码

4.如果一个任务拥有多个外向转移,每个转移都拥有唯一的名字:

复制代码
//返回包含所有转移名称的集合
taskService.getOutcomes() 
//会抛出异常,因为这里没有无名称的转移。
taskService.completeTask(taskId)
//会抛出异常,因为这里没有无名称的转移
 taskService.completeTask(taskId, null) 
//会抛出异常
taskService.completeTask(taskId, "anyvalue") 
//会使用名字为'myName'的转移
taskService.completeTask(taskId, "myName") 
复制代码

解决方案:
根据以上分析,可得到解决方案:
1、只拥有一个外向转移时(对应上文所述1、2情况):

Map map = new HashMap();map.put("",……)
//各种参数
taskService.setVariables(taskId,map);
taskService.completeTask(taskId);

2、拥有多个外向转移时(上文3、4种情况):

复制代码
Map map = new HashMap();map.put("",……)
//各种参数
taskService.setVariables(taskId,map);
//如想转移至有名称的外向转移:
taskService.completeTask(taskId,"外向转移名称");
//如想转移至无名称的外向转移:
taskService.completeTask(taskId); 
复制代码

 

  • 大小: 25 KB
  • 大小: 23.5 KB
分享到:
评论

相关推荐

    JBPM-----PPT

    1. **基础概念:JBPM_(1)_Basics_new.ppt** - **业务流程管理(BPM)**:BPM是一种系统方法,通过改进和自动化业务流程,以提高效率和响应速度。 - **工作流**:定义了业务过程的逻辑顺序,描述了任务如何在参与者...

    jbpm4jbpm5

    总的来说,这个主题资料包提供了jbpm4和jbpm5的基础知识、实战经验和用户操作指导,对于想要学习或深化jbpm流程管理框架理解的开发者非常有价值。通过学习这些文档,开发者可以掌握jbpm的核心概念,熟练地设计和部署...

    JBPM工作流开发指南v10-20070706.doc

    这部分通常会介绍JBPM的基本概念、特点以及其在业务流程管理中的作用。JBPM 提供了一种模型驱动的方法来定义和执行业务流程,支持BPMN(Business Process Modeling Notation)标准,使得流程设计更直观易懂。它还...

    JBPM4 开发文档 实例 流程

    JBPM4(Java Business Process Management 4)是一个轻量级的开源工作流管理系统,基于J2EE架构,旨在帮助开发者实现复杂的业务流程自动化。该项目于2004年10月18日发布2.0版本,并随后成为JBoss企业中间件平台的一...

    JBPM4 ,请假例子。用于初级了解

    这个“请假例子”旨在帮助初学者快速理解JBPM4的基本概念和操作。 1. **流程定义**:在JBPM4中,业务流程是通过BPML(Business Process Modeling Language)或者BPMN(Business Process Model and Notation)来定义...

    jBPM4工作流应用开发指南.pdf

    - **基础概念:** 介绍工作流、BPMN(业务流程建模符号)、jBPM4中的关键术语和概念,帮助开发者建立基础知识体系。 - **流程定义:** 深入讲解jPDL、流程图的创建和编辑,让开发者学会如何定义业务流程。 - **...

    jbpm4研究-工作流

    系统应支持对每个任务动态指派用户或用户组,JBPM提供了前后绑定用户的概念,即在设计时预设用户(前绑定)和在运行时动态指派用户(后绑定)。后绑定用户提供了更大的灵活性,便于流程的动态调整。 数据库设计方面...

    JBPM7基础开发

    "JBPM7基础开发" JBPM7 基础开发是基于流程引擎的开发方式和实现方式的简单说明。流程引擎是一个自动化管理和优化流程的工具,旨在提高不同部门之间业务的整合效率,降低开发和维护成本。 概念1:BPM(业务流程...

    完整工作流JBPM项目实战全过程教程2---项目详细讲解

    【标题】"完整工作流JBPM项目实战全过程教程2---项目详细...总之,这个教程是一个全面了解和掌握JBPM工作流管理系统的宝贵资源,涵盖了从基础概念到实际操作的多个层面,适合希望提升企业级业务流程管理能力的开发者。

    jBPM4_app-first 视频 源码

    2. **基础概念介绍**:解释 BPMN 2.0 流程图元素,以及 jBPM4 中的术语,如流程定义、流程实例、任务等。 3. **流程建模**:演示如何使用 jBPM4 工具创建流程模型,包括任务、分支、决策节点等。 4. **源码解析**:...

    JBPM4 每张表对应的含义

    `JBPM4_TASK`表用于管理任务。每个任务都关联着一个或多个活动,并且可以包含分配给特定用户或角色的任务。这些任务可能是人工任务,也可能是自动化任务的一部分。 #### 8. `JBPM4_PARTICIPATION` 此表存储了参与...

    jbpm3中文文档.rar

    4. **任务管理**:jbpm3提供了一个任务服务,用于处理任务的创建、分配、完成和撤销。它支持用户界面与任务服务的交互,使得用户可以方便地查看和处理待办事项。 5. **规则集成**:jbpm3能够与规则引擎(如Drools)...

    jBPM4工作流应用开发指南.rar

    51CTO下载的《jBPM4工作流应用开发指南》PDF文件是其中的一份详细的学习资料,涵盖了从基础概念到高级用法的全面指导。 通过学习和实践jBPM4,开发者能够构建出灵活、可扩展且易于维护的工作流应用,以满足企业复杂...

    JBPM3学习笔记

    4. **任务管理**:分配、接收、完成任务,支持多任务并发和任务重定向。 5. **事件处理**:支持监听和响应各种流程事件,如任务完成、流程结束等。 6. **规则引擎**:集成Drools规则引擎,使得流程可以根据预定义的...

    JBPM4 实例

    - **监控与管理**:通过JBPM4提供的管理界面,查看流程实例的状态,跟踪任务进度,进行审计和报表分析。 ### 6. 学习资源 - 官方文档:JBPM4的官方文档详细介绍了各个组件和API的使用,是学习的基础。 - 示例代码...

    jbpm工作流 基础视频

    本套基础视频教程将引导学习者深入理解jbpm的核心概念和技术。首先,我们会介绍jbpm的安装与配置,包括下载jbpm的最新版本,设置开发环境,如集成IDEA或Eclipse等开发工具,并讲解如何配置数据库连接,以便jbpm能够...

    jbpm-4.4 part03.zip

    7. **任务管理和工作流**:jbpm支持复杂的任务分配和协作,例如,可以根据角色、表达式或业务规则分配任务。同时,它提供了任务完成、委托、重新分配等操作。 8. **流程审计和跟踪**:jbpm记录了流程实例的完整历史...

    jbpm4.4 简单请假流程

    - **jbpm Console**:Web管理界面,用于监控流程实例、任务管理和日志查看。 - **jbpm Workbench**:集成了Designer和Console,提供更丰富的功能,包括测试、调试和部署。 5. **实现与部署**: - **流程定义...

Global site tag (gtag.js) - Google Analytics