`
qingyu11068
  • 浏览: 67781 次
文章分类
社区版块
存档分类
最新评论

flowable 流程引擎API与服务

 
阅读更多

引擎API是与Flowable交互的最常用手段。总入口点是ProcessEngine。

1、RepositoryService很可能是使用Flowable引擎要用的第一个服务。这个服务提供了管理与控制部署(deployments)与流程定义(process definitions)的操作。管理静态信息,

2、RuntimeService用于启动流程定义的新流程实例。

3、IdentityService很简单。它用于管理(创建,更新,删除,查询……)组与用户。

4、FormService是可选服务。也就是说Flowable没有它也能很好地运行,而不必牺牲任何功能。

5、HistoryService暴露Flowable引擎收集的所有历史数据。要提供查询历史数据的能力。

6、ManagementService通常在用Flowable编写用户应用时不需要使用。它可以读取数据库表与表原始数据的信息,也提供了对作业(job)的查询与管理操作。

7、DynamicBpmnService可用于修改流程定义中的部分内容,而不需要重新部署它。例如可以修改流程定义中一个用户任务的办理人设置,或者修改一个服务任务中的类名。

接下来使用之前的请假流程图,上代码

import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.HistoryService;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.engine.repository.Deployment;
import org.flowable.engine.repository.ProcessDefinition;
import org.flowable.engine.runtime.Execution;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.idm.api.Group;
import org.flowable.idm.api.User;
import org.flowable.task.api.Task;
import org.flowable.task.api.history.HistoricTaskInstance;
import org.springframework.beans.factory.annotation.Autowired;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.zip.ZipInputStream;

/**
 * TestFlowable
 *
 * @Author fhadmin
 * @Date: 2021/10/17 23:35
 * @from fhadmin.cn
 */
@Slf4j
public class TestFlowable {

    @Autowired
    private RepositoryService repositoryService;

    @Autowired
    private RuntimeService runtimeService;

    @Autowired
    private HistoryService historyService;

    @Autowired
    private org.flowable.engine.TaskService taskService;

    @Autowired
    private org.flowable.engine.IdentityService identityService;

    public void createDeploymentZip() {
        /*
         * @Date: 2021/10/17 23:38
         * Step 1: 部署xml(压缩到zip形式,直接xml需要配置相对路径,麻烦,暂不用)
         */
        try {
            File zipTemp = new File("f:/leave_approval.bpmn20.zip");
            ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(zipTemp));
            Deployment deployment = repositoryService
                    .createDeployment()
                    .addZipInputStream(zipInputStream)
                    .deploy();
            log.info("部署成功:{}", deployment.getId());
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        /*
         * @Date: 2021/10/17 23:40
         * Step 2: 查询部署的流程定义
         */
        List<ProcessDefinition> list = repositoryService.createProcessDefinitionQuery().processDefinitionKey("leave_approval").list();
        List<ProcessDefinition> pages = repositoryService.createProcessDefinitionQuery().processDefinitionKey("leave_approval").listPage(1, 30);

        /*
         * @Date: 2021/10/17 23:40
         * Step 3: 启动流程,创建实例
         */
        String processDefinitionKey = "leave_approval";//流程定义的key,对应请假的流程图
        String businessKey = "schoolleave";//业务代码,根据自己的业务用
        Map<String, Object> variablesDefinition = new HashMap<>();//流程变量,可以自定义扩充
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey, businessKey, variablesDefinition);
        log.info("启动成功:{}", processInstance.getId());
        /*
         * @Date: 2021/10/17 23:40
         * Step 4: 查询指定流程所有启动的实例列表
         * 列表,或 分页 删除
         */
        List<Execution> executions = runtimeService.createExecutionQuery().processDefinitionKey("leave_approval").list();
        List<Execution> executionPages = runtimeService.createExecutionQuery().processDefinitionKey("leave_approval").listPage(1, 30);
//        runtimeService.deleteProcessInstance(processInstanceId, deleteReason); //删除实例

        /*
         * @Date: 2021/10/17 23:40
         * Step 5: 学生查询可以操作的任务,并完成任务
         */
        String candidateGroup = "stu_group"; //候选组 xml文件里面的 flowable:candidateGroups="stu_group"
        List<Task> taskList = taskService.createTaskQuery().taskCandidateGroup(candidateGroup).orderByTaskCreateTime().desc().list();
        for (Task task : taskList) {
            // 申领任务
            taskService.claim(task.getId(), "my");
            // 完成
            taskService.complete(task.getId());
        }

        /*
         * @Date: 2021/10/17 23:40
         * Step 6: 老师查询可以操作的任务,并完成任务
         */
        String candidateGroupTe = "te_group"; //候选组 xml文件里面的 flowable:candidateGroups="te_group"
        List<Task> taskListTe = taskService.createTaskQuery().taskCandidateGroup(candidateGroupTe).orderByTaskCreateTime().desc().list();
        for (Task task : taskListTe) {
            // 申领任务
            taskService.claim(task.getId(), "myte");
            // 完成
            Map<String, Object> variables = new HashMap<>();
            variables.put("command","agree"); //携带变量,用于网关流程的条件判定,这里的条件是同意
            taskService.complete(task.getId(), variables);
        }
        /*
         * @Date: 2021/10/18 0:17
         * Step 7: 历史查询,因为一旦流程执行完毕,活动的数据都会被清空,上面查询的接口都查不到数据,但是提供历史查询接口
         */
        // 历史流程实例
        List<HistoricProcessInstance> historicProcessList = historyService.createHistoricProcessInstanceQuery().processDefinitionKey("leave_approval").list();
        // 历史任务
        List<HistoricTaskInstance> historicTaskList = historyService.createHistoricTaskInstanceQuery().processDefinitionKey("leave_approval").list();
        // 实例历史变量 , 任务历史变量
        // historyService.createHistoricVariableInstanceQuery().processInstanceId(processInstanceId);
        // historyService.createHistoricVariableInstanceQuery().taskId(taskId);
        // *****************************************************分隔符********************************************************************
        // *****************************************************分隔符********************************************************************
        // 可能还需要的API
        // 移动任务,人为跳转任务
        // runtimeService.createChangeActivityStateBuilder().processInstanceId(processInstanceId)
        //       .moveActivityIdTo(currentActivityTaskId, newActivityTaskId).changeState();

        // 如果在数据库配置了分组和用户,还会用到
        List<User> users = identityService.createUserQuery().list();    //用户查询,用户id对应xml 里面配置的用户
        List<Group> groups = identityService.createGroupQuery().list(); //分组查询,分组id对应xml 里面配置的分组 如 stu_group,te_group 在表里是id的值

        // 另外,每个查询后面都可以拼条件,内置恁多查询,包括模糊查询,大小比较都有
    }
}

 

0
1
分享到:
评论

相关推荐

    基于RuoYi-VUE版本开发开源OA协同办公系统源码 集成Flowable流程引擎 可自由选择提交的流程.zip

    本文将深入探讨一个基于RuoYi-VUE版本开发的开源OA协同办公系统,该系统集成Flowable流程引擎,为用户提供灵活的流程选择功能。 RuoYi-VUE是一款基于Vue.js前端框架的轻量级、高性能的企业级后台管理系统,以其简洁...

    flowable-engine-flowable-6.5.0.zip(官方源码)

    - Java API包括流程引擎、任务服务、历史服务等接口,便于操作流程实例、任务和历史数据。 - REST API则提供了无状态的服务调用方式,适用于分布式系统或跨服务交互。 4. **持久化层(Persistence Layer)**: -...

    流程引擎(Flowable+Activiti)

    在实际应用中,Flowable和Activiti可以作为服务组件,通过API与前端应用(如Spring Boot应用)进行交互。开发者可以使用这些引擎提供的REST API或者Java客户端来启动、查询、干预和结束流程实例。同时,它们都可以与...

    Flowable用户手册中文版(pdf+html)

    5. **API与服务**:讲解Flowable提供的RESTful API和Java API,如何通过这些接口启动流程、查询任务、管理变量等。 6. **监听器与事件处理**:介绍如何定义和使用流程事件监听器,以实现定制化的业务逻辑。 7. **...

    基于RuoYi-VUE版本开发的OA协同办公系统源码 集成Flowable流程引擎

    1.用户管理:用户是系统操作者,该功能主要完成系统...15.服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。 16.缓存监控:对系统的缓存信息查询,命令统计等。 17.在线构建器:拖动表单元素生成相应的html代码

    flowable中文资料

    8. **RESTful API**:Flowable提供RESTful API,使得与其他系统集成变得简单,可以轻松构建微服务架构。 9. **社区支持**:Flowable拥有活跃的开发者社区,用户可以在其中交流经验,获取技术支持。 在`flowable....

    vue使用flowable绘制流程图.docx

    总结来说,使用Vue结合`workflow-bpmn-modeler`库绘制Flowable流程图的步骤包括: 1. 创建Vue 2项目,并安装`workflow-bpmn-modeler`库。 2. 在Vue组件中注册并使用`bpmnModeler`组件,传递必要的数据属性。 3. ...

    Flowable BPMN 用户手册 中文版 (v 6.3.0).pdf

    Flowable流程引擎可用于部署BPMN 2.0流程定义(用于定义流程的行业XML标准), 创建这些流程定义的流程实例,进行查询,访问运行中或历史的流程实例与相关数据,等等。这个章节将用一个可以在你自己的开发环境中使用...

    Flowable-6.5.0 用户手册.pdf

    Flowable 是一个使用 Java 编写的轻量级业务流程引擎,Flowable 流程引擎可用于部署 BPMN 2.0 流程定义,创建这些流程定义的流程实例,进行查询,访问运行中或历史的流程实例与相关数据,等等。Flowable 可以十分...

    flowable工作流.zip

    在与Spring集成时,你需要配置Flowable的bean,包括流程引擎、任务服务、历史服务等。这些服务提供了操作流程实例、任务、变量等的接口。例如,你可以通过任务服务获取当前用户的待办事项,或者通过历史服务分析流程...

    Flowable 6.2 工作流引擎文档 官方翻译文档

    7. **API与集成**:Flowable 提供全面的RESTful API和Java API,方便与其他系统集成。同时,它支持Spring框架,可以无缝集成到Spring Boot或Spring MVC项目中。 8. **持久化层**:Flowable 使用灵活的持久化机制,...

    springBoot 整合flowable-modeler设计器

    Flowable是一个符合BPMN 2.0标准的流程引擎,支持流程定义、流程实例管理、任务处理、事件触发等功能。Flowable-Modeler是其提供的一个流程建模工具,用于图形化设计流程图。 3. **集成步骤** - **添加依赖**:在...

    flowable 6.3.1的jar包

    总之,Flowable 6.3.1是一个强大的流程引擎,它为企业提供了灵活的流程自动化解决方案。无论是通过war包部署还是直接使用jar包,都需要配合相关的文档和依赖库来正确地使用和集成到项目中。通过深入学习和实践,可以...

    OA办公系统 Springboot vue.js前后分离,Flowable工作流自定义表单

    3. Flowable工作流引擎:Flowable是一个轻量级的工作流和业务流程管理(BPM)平台,它基于Apache许可的开源Java库。Flowable能够管理、部署和执行业务流程,并支持BPMN2.0标准。在企业环境中,Flowable可以集成到...

    Flowable-BPMN操作流程部署启动源码

    Flowable是一款强大的、开源的工作流引擎,它基于BPMN 2.0标准,能够帮助企业或组织实现业务流程自动化。BPMN(Business Process Modeling Notation)是一种图形化表示业务流程的方法,它提供了丰富的符号来描绘各种...

    activiti画图工具

    而"flowable-rest.war"则包含Flowable的RESTful API服务,这些API允许开发者通过HTTP请求与Flowable引擎进行交互,实现流程的启动、查询、干预等操作。 使用Flowable画图工具时,你可以创建多种类型的节点,如开始...

    flowable-boot-rest_rest_flowableapi_flowableswagger_flowable_flo

    在"flowable-boot-rest_rest_flowableapi_flowableswagger_flowable_flo"这个项目中,我们聚焦于Flowable的REST API实现,它允许开发者通过HTTP协议与Flowable服务进行交互。这个压缩包很可能是包含了一个配置好的...

    Flowable 6.6.0 表单用户指南.pdf

    首先,Flowable表单引擎的创建涉及多个步骤,包括但不限于配置FormEngineConfiguration bean,将表单引擎插入流程引擎中,并设置数据库连接和数据源。支持的数据库类型广泛,包括关系型数据库如MySQL、PostgreSQL等...

    flowable6.0官方在线设计

    6. **集成与API**:Flowable 6.0的设计器可以与其他系统集成,如通过RESTful API与后端服务交互,实现数据同步和流程实例的启动。 7. **扩展性**:Flowable的在线设计器具有高度的扩展性,允许开发者自定义表单、...

Global site tag (gtag.js) - Google Analytics