Activiti工作流之流程部署和相关操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ip_JL/article/details/83507578

流程部署

需要掌握的接口:

接口名称 说明
RepositoryService 管理流程定义
RuntimeService 执行管理,包括启动、推进、删除流程实例等操作
TaskService 任务管理
HistoryService 历史管理(执行完的数据的管理)

首先, 绘画流程图

① 新建一个.bpm的文件, 如下图

② 绘制流程图, 如下图

需要将流程的id和name进行相对应的设置: 在面板的空白处右击即可出现该设置

每个节点的id/name/assignee也应该进行相对应的设置: 单击每个节点即可出现该设置

③ 将流程图部署到数据库中, 以便让业务按照流程图设计的步骤来进行

测试代码:

/**
     * 获取流程引擎
     */
    @Before
    public void setUp() throws Exception {
        //获取流程引擎对象, 默认是读取配置文件"activiti.cfg.xml"
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        //获取RepositoryService接口的实现类
        repositoryService = processEngine.getRepositoryService();
    }

   /**
     * 部署流程①: 通过单文件的形式加载部署
     */
    @Test
    public void delpoyActiviti1() {
        //获取部署对象
        DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();
        //加载流程的配置文件和图片==>"activiti_test.bpmn"和"activiti_test.png"
        deploymentBuilder.addClasspathResource("diagrams/activiti_test.bpmn")
                         .name("请假流程").category("请假")
                         .addClasspathResource("diagrams/activiti_test.png");
        //部署流程
        deploymentBuilder.deploy();
    }


/**
     * 部署流程②: 通过压缩包的形式加载部署
     */
    @Test
    public void delpoyActiviti2() {
        //获取部署对象
        DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();
        //获取压缩包的输入流
        InputStream in = this.getClass().getClassLoader().getResourceAsStream("diagrams/activiti_test.zip");
        //转化
        ZipInputStream zipInputStream = new ZipInputStream(in);
        //加载输入流
        deploymentBuilder.addZipInputStream(zipInputStream);
        //部署流程
        deploymentBuilder.deploy();
    }

数据库查询结果:

select * from act_re_deployment;  -- 工作流部署表

select * from act_ge_bytearray;  -- 存储二进制相关文件

select * from act_re_procdef;  -- 流程定义的数据

启动流程

测试代码:

/**
     * 启动流程
     */
    @Test
    public void startProcess() {
        //根据流程的key来启动相对应的流程, 默认是启动最新版本的流程
        runtimeService.startProcessInstanceByKey("activiti_leave");
    }

相关查询

select * from act_ru_execution;  -- 流程的运行

默认情况下启动最新版本的流程

删除流程

/**
     * 删除流程
     */
    @Test
    public void deleteActivitiDeploy() {
        //根据流程部署id指定删除的流程
        repositoryService.deleteDeployment("7501", true);
    }

启动流程实例后:

/**
     * 启动流程
     */
    @Test
    public void startProcess() {
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("activiti_leave");
        String processInstanceId = processInstance.getId();
        String activityId = processInstance.getActivityId();
        String definitionId = processInstance.getProcessDefinitionId();
        
        System.out.println("流程实例ID:"+processInstanceId);
        System.out.println("正在活动的节点ID:"+activityId);
        System.out.println("流程定义ID:"+definitionId);
    }

查询流程

测试代码:

/**
     * 查询流程实例
     */
    @Test
    public void queryProcessInstance(){
        String processDefinitionKey = "activiti_leave";
        //创建流程实例的查询对象
        ProcessInstanceQuery processInstanceQuery = runtimeService.createProcessInstanceQuery();
        List<ProcessInstance> processInstanceList = processInstanceQuery.processDefinitionKey(processDefinitionKey)
                                                                        .orderByProcessDefinitionKey()
                                                                        .desc()
                                                                        .list();
        for(ProcessInstance processInstance: processInstanceList){
            String processInstanceId = processInstance.getId();
            String activityId = processInstance.getActivityId();
            String definitionId = processInstance.getProcessDefinitionId();
            
            System.out.println("流程实例ID:"+processInstanceId);
            System.out.println("正在活动的节点ID:"+activityId);
            System.out.println("流程定义ID:"+definitionId);
        }
    }

Activiti系列回顾:

Activiti工作流之简介与环境搭建​​​​​​​

猜你喜欢

转载自blog.csdn.net/ip_JL/article/details/83507578