工作流--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
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值