|
论坛的排版有点累, 附上原文链接: https://app.yinxiang.com/fx/a6569eeb-ff71-4d7d-980e-88019145bac1
验证规则梳理v1.0
适用版本Framework v6.5 及以上
Domain v6.6 及以上
大家都知道单据提交或者专门点击规则检查后, 系统会给出和这个单据相关的规则验证信息. 主数据提交和一些工作流动作也会触发规则校验. 规则校验的触发点很多, 规则库的来源也不止一个, 本文旨在全面梳理框架中所有的规则触发时机, 条件和规则来源.
目前主要有主数据和单据这么两处涉及到验证规则的地方, 以下分章节介绍. 其中涉及工作流的部分有相当的共同性, 所以专门列出.
主数据主数据是指商品或者往来单位. 这两个都支持新建, 变更, 且都需要走工作流. 涉及到验证也主要是和这些操作相关的四个子场景.
规则集主数据相对比较简单, 就涉及一个验证器.
由于主数据还没有专门的元数据, 因此系统直接指定了验证器用于配置规则. 对应的验证器如下:
[td]主数据 | 验证器 | 往来单位 | 往来单位#往来单位提交 | 商品 | 商品#提交验证 | 触发时机[td]时机 | 描述 | 主数据新建的提交 | 主数据新建后, 一提交就会触发规则校验. 执行验证的时候, 验证的数据为保存后的数据. | 主数据变更 | 主数据变更统一走的是变更单的机制. 变更提交的时候, 系统会触发规则校验.变更执行验证时, 使用的是数据库中的数据+应用变更后的数据. | 主数据工作流 | 后面专门章节介绍 | 单据相比主数据, 单据的规则校验有共通之处, 但有复杂不少. 单据规则校验的触发也主要集中在新建, 变更和工作流执行过程中.
规则集单据的验证规则来源比较多, 下表一一列出, 为了便于后文引用, 每个规则集给出了一个简称:
[td]规则集 | 描述 | 单据规则 | 单据中配置的通用验证器. 这个规则集会在大部分场景中触发 | 跟踪规则 | 单据跟踪中的验证规则. 这个规则集只有在匹配了单据线索以及生效与否的选项后才会触发 | 触发时机[td]时机 | 描述 | 单据新建-普通模式(草稿模式) | 单据保存不验证; 单据提交的时候执行验证; 规则集包括单据规则和跟踪规则 | 单据新建-无草稿模式 | 保存直接验证; 验证规则集同上 | 单据变更-普通模式(草稿模式) | 单据保存不验证; 单据提交的时候执行验证 规则集包括单据规则和跟踪规则, 验证数据均为当前版本; | 单据变更-无草稿模式 | 保存直接验证; 验证规则集同上; | 单据下推-下游单据普通模式(草稿模式) | 不验证; | 单据下推-下游单据无草稿模式 | 验证下游单据规则以及跟踪规则; | 主数据工作流 | 后面专门章节介绍 | 工作流先给出工作执行过程中和验证有关的流程图:
file:///X:/Temp/enhtmlclip/Image.png
- 如果实体没有版本策略, 那么直接就是实体本身. 新建的主数据和单据属于这种情况;
- 如果实体采用变更单的版本策略, 那么数据就是实体+变更单. 变更后的主数据属于这个情况;
- 如果实体采用多版本的版本策略, 那么数据就是当前版本的实体. 变更后的单据数据这种情况;
- 工作流提交后首先进入开始节点, 开始节点会执行一次验证;
- 进入其他工作流节点后, 节点首先会讲数据状态切换为当前状态;
- 如果节点的单据跟踪触发模式为执行前或者执行前后, 那么此时会先执行反写, 随后触发单据跟踪规则校验;
- 执行节点本身的操作;
- 如果节点的单据跟踪触发模式为执行后或者执行前后, 那么此时也会再次执行反写, 随后触发单据跟踪规则校验; 如果接下去还是节点, 那么从3开始依次执行;
- 之后进入结束节点, 会执行以此验证;
规则集工作流执行过程的规则集主要涉及工作流本身的验证条件以及单据跟踪的验证条件;
触发时机根据前面描述的流程,
综上所述, 节点的触发规则可以整理为下表:
[td]节点类型 | 条件 | 验证执行情况 | 自动/人工/审批节点 | 反写执行=执行前 | 执行自动服务之前触发规则校验, 状态已切换为当前节点, 已执行反写 | 自动/人工/审批节点 | 反写执行=执行后 | 执行自动服务之后触发规则校验, 状态已切换为当前节点, 已执行反写 | 自动/人工/审批节点 | 反写执行=执行前后 | 执行自动服务之前后均触发规则校验, 状态已切换为当前节点, 已分别执行反写 | 开始/结束节点 | 顶层 | 触发规则校验 | 开始/结束节点 | 非顶层 | 不触发规则校验 | 子流程/辅助流程节点 | | 两者均是容器节点, 自身不触发规则校验, 但内部节点遵循该表规则 | NOTE: 工作流执行过程中的校验不受生效与否影响. 换句话说, 无论生效与否, 都遵循上表规则.
工作流撤销的过程是工作流正常执行过程反演. 不在赘述.
后续改进后续会在调试模式下, 规则验证页面增加一个每个提示信息对应的规则来源的显示.
|
|