Activiti【代码库】

189 阅读2分钟

tags: 代码库


public class ExclusiveGetWay {
    private ProcessEngine processEngine = ProcessEngines
            .getDefaultProcessEngine();

    // 部署流程定义,资源来在bpmn格式
    @Test
    public void deployProcessDefi() {
        Deployment deploy = processEngine.getRepositoryService()
                .createDeployment().name("排他网关流程")
                .addClasspathResource("ExclusiveGateway.bpmn")
                .deploy();

        System.out.println("部署名称:" + deploy.getName());
        System.out.println("部署id:" + deploy.getId());
    }

    // 执行流程,开始跑流程
    @Test
    public void startProcess() {
        String processDefiKey = "bankBill";// bpmn 的 process id属性
        ProcessInstance pi = processEngine.getRuntimeService()
                .startProcessInstanceByKey(processDefiKey);

        System.out.println("流程执行对象的id:" + pi.getId());// Execution 对象
        System.out.println("流程实例的id:" + pi.getProcessInstanceId());// ProcessInstance
                                                                    // 对象
        System.out.println("流程定义的id:" + pi.getProcessDefinitionId());// 默认执行的是最新版本的流程定义
    }

    // 查询正在运行任务
    @Test
    public void queryTask() {
        // 取得任务服务
        TaskService taskService = processEngine.getTaskService();
        // 创建一个任务查询对象
        TaskQuery taskQuery = taskService.createTaskQuery();
        // 办理人的任务列表
        List<Task> list = taskQuery.list();
        // 遍历任务列表
        if (list != null && list.size() > 0) {
            for (Task task : list) {
                System.out.println("任务的办理人:" + task.getAssignee());
                System.out.println("任务的id:" + task.getId());
                System.out.println("任务的名称:" + task.getName());
            }
        }

    }

    // 完成任务
    @Test
    public void compileTask() {
        String taskId = "2404";
        Map<String,Object> params=new HashMap<String, Object>();
        params.put("visitor", 6);
        // taskId:任务id
        processEngine.getTaskService().complete(taskId, params);
//      processEngine.getTaskService().complete(taskId);
        System.out.println("当前任务执行完毕");
    }
    
    //获取实例状态
        @Test
    public void getProcessInstanceState(){
        String processInstanceId="605";
        ProcessInstance pi = processEngine.getRuntimeService()
                .createProcessInstanceQuery()
                .processInstanceId(processInstanceId)
                .singleResult();//返回的数据要么是单行,要么是空 ,其他情况报错
        //判断流程实例的状态
        if(pi!=null){
            System.out.println("该流程实例"+processInstanceId+"正在运行...  "+"当前活动的任务:"+pi.getActivityId());
        }else{
            System.out.println("当前的流程实例"+processInstanceId+" 已经结束!");
        }
     //设置流程变量值
    @Test
    public void setVariable(){
        String taskId="1804";//任务id
        //采用TaskService来设置流程变量
        
        //1. 第一次设置流程变量
//      TaskService taskService = processEngine.getTaskService();
//      taskService.setVariable(taskId, "cost", 1000);//设置单一的变量,作用域在整个流程实例
//      taskService.setVariable(taskId, "申请时间", new Date());
//      taskService.setVariableLocal(taskId, "申请人", "何某某");//该变量只有在本任务中是有效的
        
        
        //2. 在不同的任务中设置变量
//      TaskService taskService = processEngine.getTaskService();
//      taskService.setVariable(taskId, "cost", 5000);//设置单一的变量,作用域在整个流程实例
//      taskService.setVariable(taskId, "申请时间", new Date());
//      taskService.setVariableLocal(taskId, "申请人", "李某某");//该变量只有在本任务中是有效的
        
        /**
         * 3. 变量支持的类型
         * - 简单的类型 :String 、boolean、Integer、double、date 
         * - 自定义对象bean  
         */
        TaskService taskService = processEngine.getTaskService();
        //传递的一个自定义bean对象
        AppayBillBean appayBillBean=new AppayBillBean();
        appayBillBean.setId(1);
        appayBillBean.setCost(300);
        appayBillBean.setDate(new Date());
        appayBillBean.setAppayPerson("何某某");
        taskService.setVariable(taskId, "appayBillBean", appayBillBean);
        
        
        System.out.println("设置成功!");

    }
        //查询流程变量
    @Test
    public void getVariable(){
        String taskId="1804";//任务id
//      TaskService taskService = processEngine.getTaskService();
//      Integer cost=(Integer) taskService.getVariable(taskId, "cost");//取变量
//      Date date=(Date) taskService.getVariable(taskId, "申请时间");//取本任务中的变量
////        Date date=(Date) taskService.getVariableLocal(taskId, "申请时间");//取本任务中的变量
//      String appayPerson=(String) taskService.getVariableLocal(taskId, "申请人");//取本任务中的变量
////        String appayPerson=(String) taskService.getVariable(taskId, "申请人");//取本任务中的变量
//      
//      System.out.println("金额:"+cost);
//      System.out.println("申请时间:"+date);
//      System.out.println("申请人:"+appayPerson);
        
        
        //读取实现序列化的对象变量数据
        TaskService taskService = processEngine.getTaskService();
        AppayBillBean appayBillBean=(AppayBillBean) taskService.getVariable(taskId, "appayBillBean");
        System.out.println(appayBillBean.getCost());
        System.out.println(appayBillBean.getAppayPerson());
        
    }
    
}

如果您觉得这篇文章帮助到了您,可以给作者一点鼓励