flowable 全生命周期涉及到的api及mysql表

要了解Flowable从流程创建到审批过程中涉及的API和MySQL表。之前对工作流引擎有一些基础了解,但具体到Flowable的细节可能不太熟悉。需要先回忆一下Flowable的基本概念,比如流程定义、流程实例、任务、执行实例等,然后逐步思考每个步骤会用到哪些API和数据库表。

首先,流程的创建通常是从部署流程定义开始的。Flowable中部署流程定义可能会使用RepositoryService的createDeployment方法,然后添加BPMN文件,最后部署。对应的数据库表是ACT_RE_DEPLOYMENT和ACT_RE_PROCDEF,分别存储部署信息和流程定义信息。

接下来是启动流程实例,这应该使用RuntimeService的startProcessInstanceByKey或startProcessInstanceById方法。启动后会在ACT_RU_EXECUTION表中创建执行实例,可能还有ACT_RU_TASK表记录任务信息。不过这里可能要看流程的具体结构,如果是用户任务,就会生成任务记录。

然后是任务的处理,用户需要查询任务,可能用TaskService的createTaskQuery来获取任务列表,然后执行taskService.complete(taskId)来完成任务。这时候任务会从ACT_RU_TASK表中删除,流程继续到下一个节点。同时,历史任务信息可能会记录在ACT_HI_TASKINST表中。

审批过程中可能涉及到的用户或用户组,可能涉及IdentityService来管理用户和组的关系,相关的表可能是ACT_ID_USER、ACT_ID_GROUP和ACT_ID_MEMBERSHIP。不过实际中可能很多人不使用Flowable内置的用户表,而是集成自己的系统。

还有历史记录,比如流程实例的历史信息存储在ACT_HI_PROCINST,任务历史在ACT_HI_TASKINST,变量历史在ACT_HI_VARINST等。这些表在流程进行中会记录各种历史数据。

变量管理方面,流程变量可能在运行时存储在ACT_RU_VARIABLE,历史变量在ACT_HI_VARINST。设置变量可能通过RuntimeService或TaskService的setVariable方法。

还有,审批过程中可能需要处理网关、分支、并行流程等,这时候执行实例可能会有父级和子级的关系,涉及ACT_RU_EXECUTION表的结构,比如PARENT_ID_字段。

另外,审批的时候可能会有审批意见,这可能需要用到评论功能,对应的API是TaskService的addComment,数据存在ACT_HI_COMMENT表中。

需要注意的是,Flowable的表都以ACT_开头,后面跟着两部分,第一部分表示表的作用,比如RE表示仓库,RU表示运行时,HI表示历史,ID表示身份。第二部分是具体的用途,比如PROCDEF是流程定义,TASK是任务等。

可能还需要考虑事务和异步任务,比如作业处理,对应的表是ACT_RU_JOB,相关的API是ManagementService。

不过,还有其他细节,比如每个步骤具体涉及哪些表,或者某些API的准确名称。比如流程实例启动后的运行时表,除了ACT_RU_EXECUTION和ACT_RU_TASK,可能还有ACT_RU_IDENTITYLINK来处理任务的候选人或组,或者ACT_RU_VARIABLE存储变量。

还有,流程定义部署后,ACT_GE_BYTEARRAY表存储流程的BPMN和图片资源,部署时上传的文件会被存储在这里。

现在需要把这些步骤和对应的API、表整理清楚,可能需要分步骤列出创建流程、启动实例、任务处理、历史查询等各个阶段用到的API和涉及的表。同时要注意有些表是运行时的,只在流程实例运行期间存在数据,而历史表则会保留记录。

比如,部署流程定义:

API:RepositoryService.createDeployment().addClasspathResource("process.bpmn20.xml").deploy();

涉及的表:ACT_RE_DEPLOYMENT(部署信息),ACT_GE_BYTEARRAY(存储BPMN文件),ACT_RE_PROCDEF(流程定义信息)。

启动流程实例:

API:RuntimeService.startProcessInstanceByKey("processKey");

涉及的表:ACT_RU_EXECUTION(执行实例),ACT_RU_TASK(如果启动后第一个节点是用户任务),ACT_RU_IDENTITYLINK(任务关联的用户或组),ACT_HI_PROCINST(历史流程实例),ACT_HI_ACTINST(历史活动实例)。

查询任务:

API:TaskService.createTaskQuery().taskAssignee("user1").list();

涉及的表:ACT_RU_TASK。

完成任务:

API:taskService.complete(taskId);

涉及的表:ACT_RU_TASK(当前任务被删除),ACT_RU_EXECUTION(可能更新或删除旧的,创建新的执行实例),ACT_HI_TASKINST(记录任务完成),ACT_HI_ACTINST(记录活动完成),ACT_HI_VARINST(如果有变量更新)。

变量处理:

API:runtimeService.setVariable(executionId, "varName", value);

涉及的表:ACT_RU_VARIABLE(运行时变量),ACT_HI_VARINST(历史变量)。

审批意见:

API:taskService.addComment(taskId, processInstanceId, "Approved");

涉及的表:ACT_HI_COMMENT。

身份管理:

API:IdentityService.createUserQuery().userId("user1").singleResult();

涉及的表:ACT_ID_USER,ACT_ID_GROUP,ACT_ID_MEMBERSHIP。

另外,流程结束时,相关的运行时数据会被删除,历史数据保留。

可能还有其他表,比如ACT_RU_EVENT_SUBSCR(事件订阅),ACT_RU_JOBS(定时任务),但这些可能在特定场景下使用。

总结下来,需要按流程的各个步骤,分别列出API和涉及的表,同时区分运行时表和历史表。

以下是Flowable从流程创建到审批全过程中涉及的API及MySQL表的详细说明:

1. 流程定义部署

API:

  • RepositoryService

    • createDeployment(): 创建部署对象。

    • addClasspathResource("process.bpmn"): 添加BPMN文件。

    • deploy(): 执行部署。

涉及MySQL表:

  • ACT_RE_DEPLOYMENT:存储部署信息(如部署ID、名称、时间)。

  • ACT_GE_BYTEARRAY:存储流程定义文件(BPMN、PNG)的二进制数据。

  • ACT_RE_PROCDEF:存储流程定义元数据(如Key、版本、流程名)。


2. 启动流程实例

API:

  • RuntimeService

    • startProcessInstanceByKey("processKey"):按流程Key启动实例。

    • startProcessInstanceById("processDefinitionId"):按流程定义ID启动实例。

涉及MySQL表:

  • ACT_RU_EXECUTION:记录运行中的执行实例(如流程实例、子流程)。

  • ACT_RU_TASK:若启动后首个节点是用户任务,生成任务记录。

  • ACT_HI_PROCINST:历史流程实例信息(开始/结束时间、状态)。

  • ACT_HI_ACTINST:历史活动记录(每个节点执行详情)。


3. 任务处理

API:

  • TaskService

    • createTaskQuery().taskAssignee("user1").list():查询用户的任务列表。

    • complete(taskId):完成任务并推动流程。

    • claim(taskId, "user1"):认领任务。

    • addComment(taskId, "Approved"):添加审批意见。

涉及MySQL表:

  • ACT_RU_TASK:运行中的任务信息(名称、处理人、创建时间)。

  • ACT_RU_IDENTITYLINK:任务与用户/组的关联(候选人、候选组)。

  • ACT_HI_TASKINST:历史任务记录(完成时间、处理人)。

  • ACT_HI_COMMENT:存储审批意见(评论内容、时间)。


4. 流程变量管理

API:

  • RuntimeService 或 TaskService

    • setVariable(executionId, "varName", value):设置全局变量。

    • getVariable(executionId, "varName"):获取变量。

涉及MySQL表:

  • ACT_RU_VARIABLE:运行时的流程变量。

  • ACT_HI_VARINST:历史变量变更记录。


5. 用户与组管理

API:

  • IdentityService

    • createUserQuery().userId("user1").singleResult():查询用户。

    • createGroupQuery().groupName("managers").list():查询用户组。

涉及MySQL表(可选,通常集成外部系统):

  • ACT_ID_USER:用户信息。

  • ACT_ID_GROUP:用户组信息。

  • ACT_ID_MEMBERSHIP:用户与组的关联关系。


6. 历史数据查询

API:

  • HistoryService

    • createHistoricProcessInstanceQuery():查询历史流程实例。

    • createHistoricTaskInstanceQuery():查询历史任务。

涉及MySQL表:

  • ACT_HI_PROCINST:历史流程实例。

  • ACT_HI_TASKINST:历史任务实例。

  • ACT_HI_ACTINST:历史节点活动记录。

  • ACT_HI_DETAIL:详细历史数据(如表单提交内容)。


7. 其他运行时操作

API:

  • ManagementService:处理异步作业(如定时器)。

    • createJobQuery().list():查询待处理作业。

  • FormService:处理表单数据(若使用内置表单)。

涉及MySQL表:

  • ACT_RU_JOB:运行中的异步作业(如定时任务)。

  • ACT_RU_EVENT_SUBSCR:事件订阅(如消息事件)。


8. 流程结束

  • 流程完成后,运行时数据(ACT_RU_*表)被清除,历史数据(ACT_HI_*表)保留。


关键表分类总结

表前缀用途示例表
ACT_RE_流程定义与部署ACT_RE_DEPLOYMENT, ACT_RE_PROCDEF
ACT_RU_运行时数据ACT_RU_TASK, ACT_RU_EXECUTION
ACT_HI_历史记录ACT_HI_PROCINST, ACT_HI_TASKINST
ACT_ID_身份管理(用户/组)ACT_ID_USER, ACT_ID_GROUP
ACT_GE_通用数据(如二进制资源)ACT_GE_BYTEARRAY

通过上述API和表的配合,Flowable实现了完整的流程生命周期管理,从部署到审批结束,所有操作均可通过服务API控制,数据持久化到对应的MySQL表中。

### Flowable 的使用方法与入门指南 #### 什么是 FlowableFlowable 是一款轻量级的工作流引擎,支持 BPMN 2.0 标准。它能够帮助企业实现业务流程自动化管理,提供灵活的 API 和工具来设计、部署和运行复杂的业务流程。 --- #### Flowable 的核心组件 Flowable 主要由以下几个部分组成: 1. **Process Engine (流程引擎)**:负责解析并执行 BPMN 流程定义。 2. **Task Service (任务服务)**:用于管理和分配用户任务。 3. **History Service (历史记录服务)**:存储流程实例的历史数据以便审计。 4. **Identity Service (身份服务)**:处理用户和组的身份验证及授权。 5. **Form Service (单服务)**:允许开发者创建动态单并与流程集成。 这些模块共同协作完成整个业务流程生命周期的管理工作[^1]。 --- #### 安装与环境搭建 为了开始学习 Flowable,需先安装其依赖项。以下是基本步骤: 1. 下载官方发布的 Flowable 工作流引擎库或源码包。 - 可访问官网或者镜像站点获取最新版本资源[^2]。 2. 配置数据库连接字符串(推荐 MySQL 或 PostgreSQL),修改 `flowable.cfg.xml` 文件中的 JDBC 设置以适配您的数据库环境。 3. 启动 Spring Boot 应用程序或其他框架加载器初始化 Flowable 引擎上下文。 示例代码片段如下所示: ```java @Configuration @EnableTransactionManagement public class FlowableConfig { @Bean(destroyMethod="close") public ProcessEngine processEngine() { return ProcessEngines.getDefaultProcessEngine(); } } ``` 上述配置展示了如何通过 Java Config 方式设置默认进程引擎实例[^4]。 --- #### 创建第一个工作流 下面介绍构建简单审批流程的具体操作过程: 1. 打开 Flowable Modeler 设计工具绘制图形化示法模型; 2. 添加 Start Event 节点作为起点触发条件入口; 3. 插入 User Task 达待办事项交给指定角色人员处理; 4. 利用 Sequence Flows 将各个阶段串联起来形成逻辑链条[^3]; 完成后导出 XML 文件上传至服务器端解析执行即可生效。 --- #### 数据持久化机制 当某个节点被激活时,Flowable 自动将其状态保存到对应的 DB 格里等待后续恢复继续推进直至结束为止。主要涉及几张关键格结构描述如下: - ACT_RU_EXECUTION : 记录当前正在运行的所有 execution 对象详情信息。 - ACT_HI_PROCINST : 存档已完成的历史流程实例元数据供查询统计分析用途。 - ACT_ID_USER & ACT_ID_GROUP :维护系统内的合法参与者及其所属分类集合关系映射情况等等... --- #### 总结 综上所述,掌握了以上基础知识之后就可以着手实践更复杂场景下的定制需求啦!当然除了本文提到的内容之外还有很多高级特性值得探索研究一番呢~ ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值