目前主流的工作流引擎以Activiti、Flowable、Camunda为主,国内也有一些基于这些开源工作流引擎的定制开发与改造。
前期做了一个小项目涉及到多租户,发现Flowable从6.3版本开始强制多租户隔离。而开源版本的Flowable无法处理跨租户的流程流转,只能升级到Flowable Enterprise收费版本才能跨租户使用。
当然也可以利用开源版本Flowable提供的一些API接口做些过滤租户处理逻辑或者改造源码实现跨租户的流程审核,考虑到这些风险,最终选择了保守的技术路线,通过改造业务系统,将流程模型、流程定义、流程部署等Flowable全流程全部分发分发到各个租户实现跨租户流转。
项目使用的是Flowable7.2,Flowable 7.2 数据表以 ACT_ 开头,按前缀分 6 大类:GE(通用)、RE(资源)、RU(运行时)、HI(历史)、ID(身份)、EVT(事件)。
一、通用表 (ACT_GE_*)
ACT_GE_PROPERTY:引擎属性 / 版本配置
ACT_GE_BYTEARRAY:二进制资源(BPMN/DMN XML、流程图、附件)
二、资源 / 定义表 (ACT_RE_*)
ACT_RE_DEPLOYMENT:流程部署记录
ACT_RE_PROCDEF:流程定义(核心,ID、Key、版本、资源关联)
ACT_RE_MODEL:流程设计器模型数据
ACT_PROCDEF_INFO:流程定义扩展信息
三、运行时表 (ACT_RU_*)
ACT_RU_EXECUTION:流程实例 / 执行流(主实例、分支)
ACT_RU_TASK:运行中用户任务(待办)
ACT_RU_VARIABLE:运行时变量
ACT_RU_IDENTITYLINK:运行时参与人 / 组(候选、办理)
ACT_RU_ACTINST:当前活动节点
ACT_RU_JOB:异步 / 定时器作业
ACT_RU_TIMER_JOB:定时器作业
ACT_RU_SUSPENDED_JOB:暂停作业
ACT_RU_EXTERNAL_JOB:外部任务
ACT_RU_DEADLETTER_JOB:死信作业
ACT_RU_EVENT_SUBSCR:事件订阅(信号、消息)
ACT_RU_ENTITYLINK:实例关联(父子流程)
四、历史表 (ACT_HI_*)
ACT_HI_PROCINST:历史流程实例(开始 / 结束时间、状态)
ACT_HI_TASKINST:历史任务(所有已办 / 办结)
ACT_HI_ACTINST:历史活动节点
ACT_HI_VARINST:历史变量
ACT_HI_IDENTITYLINK:历史参与人
ACT_HI_DETAIL:变量 / 表单明细
ACT_HI_COMMENT:审批意见 / 评论
ACT_HI_ATTACHMENT:附件历史
ACT_HI_ENTITYLINK:历史实例关联
ACT_HI_TSK_LOG:任务日志
五、身份表 (ACT_ID_*)
ACT_ID_USER:用户信息
ACT_ID_GROUP:用户组
ACT_ID_MEMBERSHIP:用户 - 组关系
ACT_ID_INFO:用户扩展信息
ACT_ID_PRIV:权限
ACT_ID_PRIV_MAPPING:权限分配
ACT_ID_TOKEN:登录令牌
ACT_ID_PROPERTY:身份模块配置
六、事件日志表 (ACT_EVT_*)
ACT_EVT_LOG:事件日志(流程事件、任务事件)
七、DMN / CMMN 扩展表
ACT_DMN_*:决策表、决策执行历史
ACT_CMMN_RU_* / ACT_CMMN_HI_*:案例管理运行时 / 历史