Activiti 工作流原理
流程部署原理
前置条件 准备好model设计模型 也就是准备好XML图。这个需要通过前端进行绘制。
部署原理。
流程部署对应的实现是 DeployCmd,会首先产生一个 DeploymentEntity 代表这一次部署,然后存入 ACT_RE_DEPLOYMENT 表中,部署的流程则会变成 ProcessDefinitionEntity 存入 ACT_RE_PROCDEF 表中,并且在该表中通过 DEPLOYMENT_ID_ 表示该流程定义是在哪一次部署中部署的,在 Activiti 中,一次部署是可以部署多个流程的,所以在 ACT_RE_PROCDEF 可能有多条记录对应一个 Deployment。
上一节给出的那堆 xml 配置是存在哪里的呢?这个配置没有和 ProcessDefinitionEntity 存储在一起,而是单独作为 ResourceEntity 存储在了 ACT_GE_BYTEARRAY 表中。ResourceEntity 表示部署对应的”资源“,主要是一些有可能很大的配置,比如 bpmn xml,表单配置或者DMN配置等,通过 DeploymentEntity 的 getResources 方法可以惰性获得该部署所有的资源。Activiti 这么设计也是非常合理的,因为关系型数据库中单条记录太长会影响查询性能,所以这种由用户配置,有可能非常长的字段应该拆开到另一张表中去,需要的时候再根据 RESOURCE_NAME_ + DEPLOYMENT_ID_ 从 ACT_GE_BYTEARRAY 中惰性加载出来。
以我的一个请假流程来进行说明。我这个请假流程曾经进行过12次修改 所以会在ACT_RE_PROCDEF产生12条数据。
然后相应的在ACT_GE_BYTEARRAY表中根据DEPLOYMENT_ID_ 进行查询 例如查询 第12次部署的数据。
至此 工作流的部署工作就完成了。