flowable工作流所有业务概念(1),2024年最新springboot多租户架构

  1. 一条流程实例有多个审批节点(流程图中已画),每一个审批节点是一条任务管理信息。

请注意流程定义和流程实例概念。

6.如何开发

===============================================================

flowable其实很简单,但是因为市面上的资料比较少,说明白的更加的少,所以该技术栈流通的比较困难。

flowable为我们提供了47张表和7个常用api。

1.提供的表


Flowable的所有数据库表都以ACT_开头。第二部分是说明表用途的两字符标示符。服务API的命名也大略符合这个规则。

  1. ACT_RE_*: 'RE’代表repository。带有这个前缀的表包含“静态”信息,例如流程定义与流程资源(图片、规则等)。

  2. ACT_RU_*: 'RU’代表runtime。这些表存储运行时信息,例如流程实例(process instance)、用户任务(user task)、变量(variable)、作业(job)等。Flowable只在流程实例运行中保存运行时数据,并在流程实例结束时删除记录。这样保证运行时表小和快。

  3. ACT_HI_*: 'HI’代表history。这些表存储历史数据,例如已完成的流程实例、变量、任务等。

  4. ACT_GE_*: 通用数据。在多处使用。

  5. ACT_ID_*: 表示组织信息,如用户,用户组,等等。(很少使用)

  6. FLW_*.未找到官方描述,且表中都为空。

1.ACT_GE_*

ACT_GE_BYTEARRAY:保存流程的bpmn的xml以及流程的Image缩略图等信息

ACT_GE_PROPERTY:Flowable相关的基本信息。比如各个module使用的版本信息。

2.ACT_RE_*

ACT_RE_DEPLOYMENT: 部署对象,存储流程名称

ACT_RE_MODEL:基于流程的模型信息

ACT_RE_PROCDEF:流程定义表

3.ACT_RU_*

ACT_RU_ACTINST:运行中实例的活动表

ACT_RU_DEADLETTER_JOB:当JOB执行很多次都无法执行,就会被记录在此表

ACT_RU_ENTITYLINK:还没使用到。后续更新此表。

ACT_RU_EVENT_SUBSCR:运行时的事件

ACT_RU_EXECUTION:运行的实例表

ACT_RU_HISTORY_JOB; 运行中的定时任务历史表

ACT_RU_IDENTITYLINK: 当前任务执行人的信息

ACT_RU_JOB:运行中的异步任务

ACT_RU_SUSPENDED_JOB:暂停的任务表。如果一个异步任务在运行中,被暂停。就会记录在词表

ACT_RU_TASK:运行中的正常节点任务

ACT_RU_TIMER_JOB:定时作业表

ACT_RU_VARIABLE:运行中的流程实例变量

4.ACT_ID_*

ACT_ID_BYTEARRAY:

ACT_ID_GROUP:用户组信息

ACT_ID_INFO:用户详情

ACT_ID_MEMBERSHIP:用户组和用户的关系

ACT_ID_PRIV:权限

ACT_ID_PRIV_MAPPING:用户组和权限之间的关系

ACT_ID_PROPERTY:用户或者用户组属性拓展表

ACT_ID_TOKEN:登录相关日志

ACT_ID_USER:用户

5.ACT_HI_*

ACT_HI_ACTINST: 流程实例历史

ACT_HI_ATTACHMENT:实例的历史附件,几乎不会使用,会加大数据库很大的一个loading

ACT_HI_COMMENT:实例的历史备注

ACT_HI_DETAIL:实例流程详细信息

ACT_HI_IDENTITYLINK: 实例节点中,如果指定了目标人,产生的历史

ACT_HI_PROCINST:流程实例历史

ACT_HI_TASKINST:流程实例的任务历史

ACT_HI_VARINST:流程实例的变量历史

6.FLW_*

FLW_CHANNEL_DEFINITION: 泳池管道定义表

FLW_EVENT_DEFINITION:事件定义

FLW_EVENT_DEPLOYMENT:事件必输

FLW_EVENT_RESOURCE:事件所需资源

FLW_EV_DATABASECHANGELOG:Liquibase执行的记录

FLW_EV_DATABASECHANGELOGLOCK:Liquibase执行锁

FLW_RU_BATCH:暂时未知

FLW_RU_BATCH_PART:暂时未知

2.提供的接口api


flowable提供了7个常见的api,这些api就对应着上文的所有逻辑,所以只要掌握这些api就可以完成审批业务的开发了。

1.FormService

表单数据的管理。

formService.getStartFormKey() 获取表单key

formService.getRenderedStartForm()查询表单json(无数据)

2.RepositoryService

提供了在编辑和发布审批流程的api。主要是模型管理和流程定义的业务api。

1.提供了带条件的查询模型流程定义的api

repositoryService.createXXXQuery()

例如:

repositoryService.createModelQuery().list() 模型查询

repositoryService.createProcessDefinitionQuery().list() 流程定义查询

repositoryService.createXXXXQuery().XXXKey(XXX) (查询该key是否存在)

2.提供一大波模型与流程定义的通用方法

模型相关

repositoryService.getModel() (获取模型)

repositoryService.saveModel() (保存模型)

repositoryService.deleteModel() (删除模型)

repositoryService.createDeployment().deploy(); (部署模型)

repositoryService.getModelEditorSource() (获得模型JSON数据的UTF8字符串)

repositoryService.getModelEditorSourceExtra() (获取PNG格式图像)

3.流程定义相关

repositoryService.getProcessDefinition(ProcessDefinitionId); 获取流程定义具体信息

repositoryService.activateProcessDefinitionById() 激活流程定义

repositoryService.suspendProcessDefinitionById() 挂起流程定义

repositoryService.deleteDeployment() 删除流程定义

repositoryService.getProcessDiagram()获取流程定义图片流

repositoryService.getResourceAsStream()获取流程定义xml流

repositoryService.getBpmnModel(pde.getId()) 获取bpmn对象(当前进行到的那个节点的流程图使用)

4.流程定义授权相关

repositoryService.getIdentityLinksForProcessDefinition() 流程定义授权列表

repositoryService.addCandidateStarterGroup()新增组流程授权

repositoryService.addCandidateStarterUser()新增用户流程授权

repositoryService.deleteCandidateStarterGroup() 删除组流程授权

repositoryService.deleteCandidateStarterUser() 删除用户流程授权

3.RuntimeService

处理正在运行的流程。

runtimeService.createProcessInstanceBuilder().start() 发起流程

runtimeService.deleteProcessInstance() 删除正在运行的流程

runtimeService.suspendProcessInstanceById() 挂起流程定义

runtimeService.activateProcessInstanceById() 激活流程实例

runtimeService.getVariables(processInstanceId); 获取表单中填写的值

runtimeService.getActiveActivityIds(processInstanceId)获取以进行的流程图节点 (当前进行到的那个节点的流程图使用)

runtimeService.createChangeActivityStateBuilder().moveExecutionsToSingleActivityId(executionIds, endId).changeState(); 终止流程

4.HistoryService

在用户发起审批后,会生成流程实例。historyService为处理流程实例的api,但是其中包括了已经完成的和未完成的流程实例。

historyService.createHistoricProcessInstanceQuery().list() 查询流程实例列表(历史流程,包括未完成的)

historyService.createHistoricProcessInstanceQuery().list().foreach().getValue() 可以获取历史中表单的信息

historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); 根绝id查询流程实例

historyService.deleteHistoricProcessInstance() 删除历史流程

historyService.deleteHistoricTaskInstance(taskid); 删除任务实例

historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId).list() 流程实例节点列表 (当前进行到的那个节点的流程图使用)

如果处理正在运行的流程实例,请使用runtimeService。

5.TaskService

对流程实例的各个节点的审批处理。

流转的节点审批

taskService.createTaskQuery().list() 待办任务列表

taskService.createTaskQuery().taskId(taskId).singleResult(); 待办任务详情

taskService.saveTask(task); 修改任务

taskService.setAssignee() 设置审批人

taskService.addComment() 设置审批备注

taskService.complete() 完成当前审批

taskService.getProcessInstanceComments(processInstanceId); 查看任务详情(也就是都经过哪些人的审批,意见是什么)

taskService.delegateTask(taskId, delegater); 委派任务

taskService.claim(taskId, userId);认领任务

taskService.unclaim(taskId); 取消认领

taskService.complete(taskId, completeVariables); 完成任务

任务授权

taskService.addGroupIdentityLink()新增组任务授权

taskService.addUserIdentityLink() 新增人员任务授权

taskService.deleteGroupIdentityLink() 删除组任务授权

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

分享

这次面试我也做了一些总结,确实还有很多要学的东西。相关面试题也做了整理,可以分享给大家,了解一下面试真题,想进大厂的或者想跳槽的小伙伴不妨好好利用时间来学习。学习的脚步一定不能停止!

薪酬缩水,“裸辞”奋战25天三面美团,交叉面却被吊打,我太难了

Spring Cloud实战

薪酬缩水,“裸辞”奋战25天三面美团,交叉面却被吊打,我太难了

Spring Boot实战

薪酬缩水,“裸辞”奋战25天三面美团,交叉面却被吊打,我太难了

面试题整理(性能优化+微服务+并发编程+开源框架+分布式)

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

多要学的东西。相关面试题也做了整理,可以分享给大家,了解一下面试真题,想进大厂的或者想跳槽的小伙伴不妨好好利用时间来学习。学习的脚步一定不能停止!

[外链图片转存中…(img-glnIeHbz-1712632359651)]

Spring Cloud实战

[外链图片转存中…(img-b7p4jo1C-1712632359651)]

Spring Boot实战

[外链图片转存中…(img-IkivvW3T-1712632359652)]

面试题整理(性能优化+微服务+并发编程+开源框架+分布式)

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-PxRrmzDC-1712632359652)]

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值