美文网首页
Flowable 6.3.1

Flowable 6.3.1

作者: soane1983 | 来源:发表于2019-06-11 18:27 被阅读0次

    1.启动部署:

         默认default模式,将所有bpmn组成一个group,group中任何一个bpmn更新,部署时:

             a) 插入act_re_deployment表1条新记录,spring自动部署记录

             b) 插入act_re_procdef表每个bpmn 1条新记录

             c) 插入act_ge_bytearray表每个bpmn 2条记录,存bpmn文件和对应bpmn的png

    2.启动工作流:

        1. 通过key从ACT_RE_PROCDEF中获取org.flowable.engine.repository.ProcessDefinition;

              ProcessDefinition.xml ==> selectLatestProcessDefinitionByKey (param:key,processDefinitionKey; 

               value = processDefinitionKey的值);

        2. 得到ProcessDefinition的属性processDefinitionId,deploymentId;

        3. 通过processDefinitionId从processDefinitionCache中获取ProcessDefinitionCacheEntry;

        4. 如果ProcessDefinitionCacheEntry不存在,通过deploymentID

            从ACT_RE_DEPLOYMENT获取org.flowable.engine.impl.persistence.entity.DeploymentEntity;

        5. DeploymentManager.deploy,参数是上一步的DeploymentEntity,将结果放入processDefinitionCache中;

        6. ProcessInstanceHelper.createProcessInstance,参数是processDefinition和startProcessInstance=true;

        7. 从processDefinitionCache中获取对应的org.flowable.bpmn.model.Process;

        8. 根据上一步的process获取流程起始点(initialFlowElement)org.flowable.bpmn.model.FlowElement;

        9. ProcessInstanceHelper.createAndStartProcessInstanceWithInitialFlowElement,

              a). 先生成org.flowable.engine.impl.persistence.entity.ExecutionEntity,生成processInstanceId

              b). ProcessInstanceHelper.startProcessInstance

        10. 插入表中记录

              a). 插入ACT_HI_PROCINST表1条记录

              b). 插入ACT_RU_EXECUTION表2条记录,主流程和第一个节点流程

              c). 插入ACT_RU_JOB表1条记录

        11. 异步job执行流程

              a). 根据上一步中的job的id,查询ACT_RU_JOB表信息,得到Job的executionId

              b). 根据上一步中的executionId,查询ACT_RU_EXECUTION记录,获取当前待执行节点

              c). 执行节点功能

              d). 执行完成后,插入ACT_HI_ACTINST表1条记录,已执行节点执行信息

              e). ACT_RU_JOB表中新增一条记录,记录executionId

              f). ACT_RU_EXECUTION表更新对应executionId和REV_的记录,REV_自增1,ACT_ID_设置为待执行的节点名称

              g). ACT_RU_JOB表中删除已执行的记录

              h). 流程执行完成后,更新ACT_HI_PROCINST的REV_自增1

        12. 异步job执行流程失败

              a). asyncExecutorNumberOfRetries默认为3

              b). asyncExecutorNumberOfRetries设置为0,将job移到ACT_RU_DEADLETTER_JOB,

                    在ACT_GE_BYTEARRAY中记录异常,

                    ACT_RU_DEADLETTER_JOB.EXCEPTION_STACK_ID_ = ACT_GE_BYTEARRAY.ID_

              c). asyncExecutorNumberOfRetries不为0,将job移动到ACT_RU_TIMER_JOB, 10秒后再执行

              d). 在ACT_GE_BYTEARRAY中记录异常,

                    ACT_RU_DEADLETTER_JOB.EXCEPTION_STACK_ID_ = ACT_GE_BYTEARRAY.ID_

              e). 10秒后,将ACT_RU_TIMER_JOB的记录转移到ACT_RU_JOB,删除ACT_RU_TIMER_JOB中记录

              f). 执行job,失败重复3,4,5;知道重试次数超限,执行2

    相关文章

      网友评论

          本文标题:Flowable 6.3.1

          本文链接:https://www.haomeiwen.com/subject/uqlcfctx.html