activiti基础的入门

1.工作流概念

工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在“多个参与者”之间按照某种“预定义的规则”传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。通俗的说,流程就是多个人在一起合作完成某件事情的步骤,把步骤变成计算机能理解的形式就是工作流。

2.流程设计器

2.1安装流程设计器(eclipse插件),在有网络的情况下安装

2.2安装流程设计器步骤如下:

2.3打开 Help -> Install New Software. 在如下面板中

          2.4在如下Install界面板中,点击Add按钮:

                    

          2.5配置新装插件的地址和名称

          2.6然后填入下列字段    Name: Activiti BPMN 2.0 designer       Location: http://activiti.org/designer/update/

                     

          2.7回到Install界面,在面板正中列表中把所有展示出来的项目都勾上:

                    

         2.8点击复选框

         2.9在Detail部分记得选中 "Contact all updates sites.." , 因为它会检查所有当前安装所需要的插件并可以被Eclipse下载.

               安装完以后,点击新建工程new->Other…打开面板,如果看到下图内容:

                      

               说明安装成功了 

    3.导入Activiti5的jar包

            在activiti-5.13->wars目录下是一些示例项目,解压activiti-rest项目,导入activiti-rest目录中WEB-INF\lib下所有包。添加到classpath中。

    3.1核心API

              ProcessEngine(核心--服务大管家)

              epositoryService(重要--规则相关)

              RuntimeService(重要--运行时)

              TaskService(重要--针对人工任务)

              ProcessDefinition(流程定义【规则】对象)

              ProcessInstance(流程实例)

              Execution

    3.2四个核心的api
             查询部署信息列表和流程定义列表
             RepositoryService getRepositoryService();
             查询运行的实例的表
             RuntimeService getRuntimeService();
             查询任务表
             TaskService getTaskService();
             查询历史的表
             HistoryService getHistoryService();

    4.测试

          4.1默认加载配置文件 最佳实践  约定大于配置

        @Test
        public void testConnect3() throws Exception {
             // 核心对象
             ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
             System.out.println(processEngine);
         }

       4.2 设计流程定义: 流程图

                  

       4.3 流程发布

        // 添加发布部署
    @Test
    public void testDeloy() throws Exception {
        // 获取核心对象 服务大管家
        ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
        // RepositoryService 仓库
        RepositoryService repositoryService = defaultProcessEngine.getRepositoryService();
        // 获取流程发布对象
        DeploymentBuilder createDeployment = repositoryService.createDeployment();
        // 上传资源
        createDeployment.addClasspathResource("MyProcess.bpmn");
        createDeployment.addClasspathResource("MyProcess.png");
        createDeployment.name("xxx");
        // 部署发布
        Deployment deploy = createDeployment.deploy();
        System.out.println(deploy);
    }

     // 删除部署(物理删数-真删)
    @Test
    public void testdeleteDeloy() throws Exception {
        // 获取核心对象 服务大管家
        ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
        // RepositoryService 仓库
        RepositoryService repositoryService = defaultProcessEngine.getRepositoryService();
        repositoryService.deleteDeployment("2501");
        System.out.println();
    }

    // 假删除部署 (挂起和激活)
    @Test
    public void testUpdateDeleteDeloy() throws Exception {
        // 获取核心对象 服务大管家
        ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
        // RepositoryService 仓库
        RepositoryService repositoryService = defaultProcessEngine.getRepositoryService();
        // 挂起
        //repositoryService.suspendProcessDefinitionByKey("myProcess");
        // 激活
        repositoryService.activateProcessDefinitionByKey("myProcess");
    }
    // 显示流程图片
    @Test
    public void testShowPng() throws Exception {
        // 获取核心对象 服务大管家
        ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
        // RepositoryService 仓库
        RepositoryService repositoryService = defaultProcessEngine.getRepositoryService();
        // web项目输出到浏览器的输入流
        // 模拟输出本地硬盘
        // 获取png图片
        String deploymentId="5001";
        String resourceName="MyProcess.png";
        // 获取输入的流对象 读的字节
        InputStream resourceAsStream = repositoryService.getResourceAsStream(deploymentId, resourceName);
        //模拟输出本地硬盘
        IOUtils.copy(resourceAsStream, new FileOutputStream("d:/a.png"));
    }
    
    4.4流程的定义列表查询
    // 查询部署列表
    @Test
    public void testQueryDeloy() throws Exception {
        // 获取核心对象 服务大管家
        ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
        // RepositoryService 仓库
        RepositoryService repositoryService = defaultProcessEngine.getRepositoryService();
        // 查询对象
        DeploymentQuery createDeploymentQuery = repositoryService.createDeploymentQuery();
        // 设置查询条件
        // createDeploymentQuery.deploymentName(name)
        //createDeploymentQuery.deploymentId(deploymentId)
        //createDeploymentQuery.deploymentNameLike(nameLike)
        //createDeploymentQuery.listPage(firstResult, maxResults)
        //createDeploymentQuery.singleResult();
        List<Deployment> list = createDeploymentQuery.list();
        for (Deployment deployment : list) {
            System.out.println(deployment.getDeploymentTime());
        }
    }
    // 查询流程定义信息列表
    @Test
    public void testQueryProcessDef() throws Exception {
        // 获取核心对象 服务大管家
        ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
        // RepositoryService 仓库
        RepositoryService repositoryService = defaultProcessEngine.getRepositoryService();
         // 获取查询对象
         ProcessDefinitionQuery createProcessDefinitionQuery = repositoryService.createProcessDefinitionQuery();
        // 设置查询条件
         //createProcessDefinitionQuery.listPage(firstResult, maxResults)
         List<ProcessDefinition> list = createProcessDefinitionQuery.list();
        for (ProcessDefinition pd : list) {
            System.out.println(pd);
        }
    }

4.5查看规则流程图

// 添加发布部署
    @Test
    public void testDeloy() throws Exception {
        // 获取核心对象 服务大管家
        ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
        // RepositoryService 仓库
        RepositoryService repositoryService = defaultProcessEngine.getRepositoryService();
        // 获取流程发布对象
        DeploymentBuilder createDeployment = repositoryService.createDeployment();
        // 上传资源
        createDeployment.addClasspathResource("codeProcess.bpmn");
        createDeployment.addClasspathResource("codeProcess.png");
        createDeployment.name("开发任务");
        // 部署发布
        Deployment deploy = createDeployment.deploy();
        System.out.println(deploy);
    }

    // 启动流程实例
    @Test
    public void testStartInstance() throws Exception {
        // 获取核心对象 服务大管家
        ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
        // runtimeService 运行
        RuntimeService runtimeService = defaultProcessEngine.getRuntimeService();
        // 根据流程的定义key启动
        ProcessInstance startProcessInstanceByKey = runtimeService.startProcessInstanceByKey("myProcess");
        System.out.println(startProcessInstanceByKey);
    }

    // 获取任务列表
    @Test
    public void testQueryTask() throws Exception {
        // 获取核心对象 服务大管家
        ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
        // TaskService 任务
        TaskService taskService = defaultProcessEngine.getTaskService();
        // 获取查询对象
        TaskQuery createTaskQuery = taskService.createTaskQuery();
        List<Task> list = createTaskQuery.list();
        for (Task task : list) {
            System.out.println(task);
        }
    }

    // 获取某个人的任务列表
    @Test
    public void testQueryTaskByName() throws Exception {
        // 获取核心对象 服务大管家
        ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
        // TaskService 任务
        TaskService taskService = defaultProcessEngine.getTaskService();
        // 获取查询对象
        TaskQuery createTaskQuery = taskService.createTaskQuery();
        // 设置查询条件
        createTaskQuery.taskAssignee("ls");
        List<Task> list = createTaskQuery.list();
        for (Task task : list) {
            System.out.println(task);
        }
    }

    // zs 办理完成任务 私有任务
    @Test
    public void testCompleTaskByName() throws Exception {
        // 获取核心对象 服务大管家
        ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
        // TaskService 任务
        TaskService taskService = defaultProcessEngine.getTaskService();
        // 完成任务
        String taskId = "10004";
        taskService.complete(taskId);

    }
    // 办理完成任务 私有任务
    @Test
    public void testwwCompleTaskByName2() throws Exception {
        // 获取核心对象 服务大管家
        ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
        // TaskService 任务
        TaskService taskService = defaultProcessEngine.getTaskService();
        // 完成任务
        String taskId = "5002";
        taskService.complete(taskId);
        
    }

    // 认领公有任务
    @Test
    public void testCaimTask() throws Exception {
        // 获取核心对象 服务大管家
        ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
        // TaskService 任务
        TaskService taskService = defaultProcessEngine.getTaskService();
        // 完成任务
        String taskId = "2504";
        String userId="zs";
        // 要
        taskService.claim(taskId, userId);
    }

    //  办理完成任务 私有任务
    @Test
    public void testlsCompleTaskByName() throws Exception {
        // 获取核心对象 服务大管家
        ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
        // TaskService 任务
        TaskService taskService = defaultProcessEngine.getTaskService();
        // 完成任务
        String taskId = "12502";
        taskService.complete(taskId);

    }

    // 查询流程是否结束
    @Test
    public void testIsEnd() throws Exception {
        // 获取核心对象 服务大管家
        ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
        // RuntimeService 运行
        RuntimeService runtimeService = defaultProcessEngine.getRuntimeService();
        // 查询对象
        ProcessInstanceQuery createProcessInstanceQuery = runtimeService.createProcessInstanceQuery();
        // 根据id
        ProcessInstance singleResult = createProcessInstanceQuery.processInstanceId("2501").singleResult();
        // 如果singleResult找到说明流程还没有结束
        if (singleResult != null) {
            System.out.println("流程未结束或不存在");
        } else {
            System.out.println("流程结束");
        }

    }

4.6History历史查询

  

// 有多少次执行这个实例流程(也就是有多少人离职)
    @Test
    public void queryHisprocessdef() {
        // 获取核心对象 服务大管家
        ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
        // 获取历史服务
        HistoryService historyService = defaultProcessEngine.getHistoryService();
        // 获取查询对象
        HistoricProcessInstanceQuery createHistoricProcessInstanceQuery = historyService
                .createHistoricProcessInstanceQuery();
        // 设置查询条件
        createHistoricProcessInstanceQuery.processDefinitionKey("myProcess");
        // 获取列表
        List<HistoricProcessInstance> list = createHistoricProcessInstanceQuery.list();
        System.out.println("离职人数:" + list.size());
    }

    // 获取活动节点日志--(查询那些人办理任务)
    @Test
    public void queryAci() {
        // 获取核心对象 服务大管家
        ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
        // 获取历史服务
        HistoryService historyService = defaultProcessEngine.getHistoryService();
        // 获取查询对象
         HistoricActivityInstanceQuery createHistoricActivityInstanceQuery = historyService
                .createHistoricActivityInstanceQuery();
        // 设置查询条件
         createHistoricActivityInstanceQuery.processInstanceId("2501");
        // 获取列表
         List<HistoricActivityInstance> list = createHistoricActivityInstanceQuery.list();
        for (HistoricActivityInstance ac : list) {
            System.out.println("=================");
            System.out.println(ac.getActivityId());
            System.out.println(ac.getActivityName());
            System.out.println(ac.getStartTime());
            System.out.println(ac.getEndTime());
        }
    }

   5.2查看源码反编译代码直接把反编译源码包放到eclipse下的dropins文件下重启服务器就可以了。

          

          

猜你喜欢

转载自blog.csdn.net/qq_42562888/article/details/84590274