1. 绘制流程,以简单的请假流程为例

工作流(3)--activit 5.14 开发测试(绘制流程、发布流程、启动实例、流程运转)_第1张图片

2. 发布流程

    2.1 流程发布有多种方式,可以单独发布BPMN20.xml,也可以将资源文件(xml,png,form)打包成zip或者bar文件,进行发布,zip的ant代码如下:


    
    
    
                                                                                                                                                   
    
    
    
    
                                                                                                                                                    
    
    
        打包流程定义:请假流程
        
        
        
        
        
    

   

   2.2 发布流程定义,Java代码如下:

@Test
    public void publish(){
        String file = "src/main/resources/developments/myLeave.bar";
        ZipInputStream inputStream = null;
        try {
            inputStream = new ZipInputStream(new FileInputStream(file));
            repoService.createDeployment().name("Leave.bar").addZipInputStream(inputStream).deploy();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

   

   2.3 查看数据库新增内容,我这里选用mysql5.5,涉及的数据表为act_re_*

工作流(3)--activit 5.14 开发测试(绘制流程、发布流程、启动实例、流程运转)_第2张图片


3. 启动流程实例

   此处操作可参见activiti5.14 官方API,以下是测试代码

//启动流程
    @Test
    public void startProcess(){
        Map variables = new HashMap();
        variables.put("employeeName", "hruser");
        //一般在流程模型中使用的ID,在Activiti中都是Key
        ProcessInstance pi = runService.startProcessInstanceByKey("myLeave", variables);
        System.out.println("Number of process instances: " + runService.createProcessInstanceQuery().count());
    }

4.流程运转

   流程实例启动后,需要各环节办理相应的任务,才能将工作流进行,运转代码如下:

//获取×××,并处理相应任务
    @Test
    public void getTaskList(){
        List tasks = taskService.createTaskQuery().taskCandidateGroup("hr").list();//流程环节配置为候选群组
//      List tasks = taskService.createTaskQuery().taskAssignee("hr").list();//流程环节配置为候选人
        Task task = tasks.get(0);
        Map taskVariables = new HashMap();
        taskVariables.put("leader", "hr");
        taskVariables.put("managerMotivation", "no problem!");
        taskService.complete(task.getId(), taskVariables);
    }

   运转过程中,可以查看数据库中运转中的流程实例信息(×××)和流程运转的历史信息(已办)的历史信息,如下图所示

工作流(3)--activit 5.14 开发测试(绘制流程、发布流程、启动实例、流程运转)_第3张图片