• 工作流--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,删除当前任务,以及与之相关的历史信息
         可以根据不同的需求,选择合适的方法。


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

  • 相关阅读:
    超强视频分割/剪辑软件-Ultra Video Splitter绿色便携版
    超强视频分割/剪辑软件-Ultra Video Splitter绿色便携版
    ASP.NET做WEB开发的工具选择
    ASP.NET做WEB开发的工具选择
    C#中的局部类型
    OpenCV2:幼儿园篇 第四章 访问图像
    OpenCV2:幼儿园篇 第三章 导出图像
    OpenCV2:幼儿园篇 第二章 读取图像
    OpenCV2:幼儿园篇 第一章 创建图像并显示
    MFC隐藏在黑暗之中的大坑
  • 原文地址:https://www.cnblogs.com/victor-grace/p/7253641.html
Copyright © 2020-2023  润新知