工作流--JBPM任务管理

  之前已经介绍了JBPM的部署对象,以及部署后对流程的一些管理。现在就开始介绍任务的执行以及流转问题

  一、启动流程实例   

     通过调用流程执行接口来获取启动流程的方法,核心代码如下:   

public void testStartProcess() throws Exception {
     ProcessInstance pi=processEngine.getExecutionService()//
  		   .startProcessInstanceByKey("test");//
  	System.out.println("流程实例启动成功:id="+pi.getId()//
  			+",state="+pi.getState()//
  			+",processDefinitionId="+pi.getProcessDefinitionId());	   
	}

    其中,启动方法可分为根据Id和Key来启动两种,每一种方法又有四种不同的参数类型,分别为:      

 //根据流程定义的id查询
startProcessInstanceById(String processDefinitionId)
//根据流程定义的id和流程实例的关键字
startProcessInstanceById(String processDefinitionId, String processInstanceKey)
//根据流程定义的id、一个或多个流程变量
startProcessInstanceById(String processDefinitionId, Map<String, ?> variables)//
//根据流程定义的id、一个或多个流程变量、流程实例的关键字
startProcessInstanceById(String processDefinitionId, Map<String, ?> variables, String processInstanceKey)
//根据流程定义的关键字
startProcessInstanceByKey(String processDefinitionKey)
//根据流程定义的关键字、流程实例的关键字
startProcessInstanceByKey(String processDefinitionKey, String processInstanceKey)
//根据流程定义的关键字、一个或多个变量
startProcessInstanceByKey(String processDefinitionKey, Map<String, ?> variables)
//根据流程定义的关键字、一个或多个流程变量、流程实例的关键字
startProcessInstanceByKey(String processDefinitionKey, Map<String, ?> variables, String processInstanceKey)

   二、查看个人任务列表
     流程启动之后,在自己的任务列表会显示相应的当前任务。具体代码: 
     

public void testTaskList() throws Exception {
    String userId="victor";
    //查询
    List<Task> taskList=processEngine.getTaskService().findPersonalTasks(userId);
    //显示
    System.out.println("=========【"+userId+"】的个人任务列表============");
    for(Task task:taskList){
  	  System.out.println("id="+task.getId()//
  			  +",name="+task.getName()//
  			  +",assignee="+task.getAssignee()//
  			  +",crateTime="+task.getCreateTime()//
  			  +",executionId="+task.getExecutionId());
    }
	}

    主要是通过调用任务服务接口,获取查询的方法。上述代码使用的是查询个人任务的方法,还有一种方法是,查询指定用户的一组任务findGroupTasks(String userId)。


   三、办理任务
     任务办理也是调用任务服务接口,获取completeTask方法,根据不同的参数会有不同的方法实现。其中一种代码如下:  
   

public void testCompleteTask() throws Exception {//根据指定的任务id,办理任务
    String taskId="110002";
    processEngine.getTaskService().completeTask(taskId);
	}

   四、删除任务
    任务的删除与流程的删除调用的接口不同,但是方法类型却是相同的,也包括两种:
       deleteTask,删除当前任务,与该任务相关的历史信息仍然存在数据库中
       deleteTaskCascade,删除当前任务,以及与之相关的历史信息
     可以根据不同的需求,选择合适的方法。


  这次主要说了一下任务管理的基本操作,这块内容其实还有很多,还有待后边的继续深入研究与学习。通过这次的学习,对工作流任务的流转认识加深,另一方面也激发了自己对源码的研究,从源码中其实可以看到很多之前已经存在的思想,只不过没有注意罢了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
jbpm是一个开源的Java工作流引擎,它提供了一个框架和工具,用于定义、执行和管理业务流程。jbpm的持久层采用hibernate3来实现,这是因为jbpm的靠山是jboss,而hibernate是jboss的一个重要组成部分,因此选择了hibernate作为持久层的实现方式。 jbpm工作流引擎具有以下特点: . 灵活性:jbpm允许用户通过定义流程模型和规则来灵活地定义和修改业务流程。它支持基于图形化的流程设计器,使得流程定义更加直观和易于理解。 2. 可扩展性:jbpm提供了丰富的扩展点和插件机制,可以根据具体需求进行定制和扩展。用户可以自定义各种节点类型、执行器、监听器等,以满足不同的业务场景。 3. 可视化:jbpm提供了一个基于Web的控制台,用于监控和管理运行中的流程实例。用户可以实时查看流程状态、任务列表、流程历史等信息,方便进行流程管理和优化。 4. 高性能:jbpm采用了基于事件驱动的执行模型,能够高效地处理大量的并发流程实例。它支持异步执行、并行分支、定时器等功能,提供了良好的性能和可伸缩性。 5. 可靠性:jbpm具有良好的事务管理和异常处理机制,能够保证流程执行的一致性和可靠性。它支持分布式部署和集群模式,提供了高可用性和容错性。 总结起来,jbpm是一个功能强大、灵活可扩展的Java工作流引擎,适用于各种业务场景和规模的流程管理需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值