zoukankan      html  css  js  c++  java
  • Activiti学习笔记8 — UserTask私有任务的使用

    每一个UserTask都会在Execution表和Task表中各产生一条记录

    一、创建流程引擎对象

       /**
         * 1、创建流程引擎对象
         */
        private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();        

    二、发布一个流程

     1     /**
     2      * 2、发布一个流程
     3      */
     4     @Test
     5     public void  testDeployProcess() {
     6         RepositoryService repositoryService = processEngine.getRepositoryService();
     7         DeploymentBuilder builder = repositoryService.createDeployment();
     8         // 加载发布资源
     9         builder.name("UserTask私有任务流程测试") // 设置流程显示别名
    10                 .addClasspathResource("userSigleTask.bpmn") // 设置流程规则文件
    11                 .addClasspathResource("userSigleTask.png"); // 设置流程规则的图片
    12         // 发布流程
    13         builder.deploy();
    14     }
    View Code

    三、启动流程、执行任务,并查看状态

     1     /**
     2      * 3、启动流程、执行任务,并查看状态
     3      */
     4     @Test
     5     public void testUserTask() {        
     6         // 获取RuntimeService服务对象的实例
     7         RuntimeService runtimeService = processEngine.getRuntimeService();
     8         String processDefinitionKey = "userSingleTask";
     9         // 自动执行与Key相对应的流程的最高版本
    10         ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey);        
    11         String processInstanceId = processInstance.getId();        
    12         logger.info("processInstanceId:" + processInstance.getId());
    13         
    14         // 获取TaskService服务对象的实例
    15         TaskService taskService = processEngine.getTaskService();
    16         String assignee = "user";
    17         List<Task> tasks = taskService.createTaskQuery().taskAssignee(assignee).list();
    18         Assert.assertEquals(1, tasks.size());
    19         Task task = tasks.get(0);        
    20         logger.info("taskName:" + task.getName());
    21         Assert.assertEquals("出差",task.getName());
    22         
    23         //完成任务
    24         taskService.complete(task.getId());        
    25         
    26         //检查结束状态
    27         ProcessInstance pInstance = runtimeService
    28                                                         .createProcessInstanceQuery()
    29                                                         .processInstanceId(processInstanceId)
    30                                                         .singleResult();
    31         Assert.assertNull(pInstance);
    32         logger.info("UserTask私有任务流程成功执行!");        
    33         
    34     }
    View Code

    四、执行结果

    [INFO][2015-12-02 10:07:24,169][com.mcs.activiti.test.TestPrivateUserTask]processInstanceId:112501
    [INFO][2015-12-02 10:07:24,223][com.mcs.activiti.test.TestPrivateUserTask]taskName:出差
    [INFO][2015-12-02 10:07:24,576][com.mcs.activiti.test.TestPrivateUserTask]UserTask私有任务流程成功执行!

  • 相关阅读:
    发布一个扩展Repeater的模板控件,带自动分页功能
    webservice 测试窗体只能用于来自本地计算机的请求
    FCKeditor编辑器中设置默认文本行高和字体大小
    程序员的个人性格
    程序设计模式的有趣解释-追MM
    集锦一
    UML简介(原创)
    一位IT从业人员的心路历程
    一个初级测试工程师的工作总结
    "与熊共舞"(转载)
  • 原文地址:https://www.cnblogs.com/maocs/p/5012112.html
Copyright © 2011-2022 走看看