what

面对“单据种类多、状态机制多、状态间存在时效差异、时效监控缺失或各自实现”这样的背景,需要一个统一的解决方案,我称其为单据时效监控系统

简述为“从单据类型,单据状态,监控时间等维度构建数据模型,根据状态机制与时效规则,对单据履行过程进行监控、报警、补偿处理等”。

意义:支持各种单据,提供时效监控和报警、补偿接口回调,规则可配置。

第一阶段:业务间关系 

业务问题排查 监控系统 业务监控体系_架构过程

 

第二阶段:系统内部组件关系

可以将系统分为三个组件模块,本别为:数据获取模块、监控引擎模块、结果处理模块。

  

业务问题排查 监控系统 业务监控体系_业务问题排查 监控系统_02

思考内容:

状态机制与时效

  • 任何单据的履约过程均可通过多个状态的线性关系进行体现,即为状态机制。
  • 状态机制各不相同,依赖具体业务。
  • 状态A转移到下一状态B之间的时间要求,即为状态间时效。
  • 时效各不相同,依赖单据类型,具体状态,业务要求等
  • 节点分类
  • 正常状态节点
  • 即单据履约过程一切顺利的情况下,出现的节点
  • 异常状态节点
  • 即单据履约过程不顺利的情况下,出现的分支节点,但之后会到达正常节点。
  • 由于这些节点,在业务方的流程中可能已经存在报警,所以配置该节点可选择忽略报警,避免报警重复。

数据来源模块

原始数据来源

  • 推,业务方主动调用系统提供的RPC/restful接口。
  • 拉,由系统定义接口规范,业务方按照规范提供接口,由系统调用以获取单据基本信息。
  • 对业务方:无侵入,无推失败影响。

单据当前状态

  • 需要业务方提供接口

监控模块

监控引擎,提供统一的流程,具有根据不同状态机制进行监控的能力。

外部验证模块

 调用业务方接口,让其进行当前状态的其他验证并返回true/false,例如多系统间状态是否同步

报警模块

  • 根据状态机报警配置,进行报警处理。
  • 报警限制优先级:不允许报警时间>报警积累阀值
  • 提供多种报警方式。如:短信,邮件,IM
  • 报警频率控制

回调补偿处理模块

  • 方便业务方控制异常节点
  • 根据状态机的回调处理配置,进行回调处理。
  • 例如:调用业务方配置的rpc/restful接口

页面功能模块

  • 单据类型申请
  • 配置页面

 

第三阶段

构建数据模型 ,绘制时序图、流程图。

如下为主要模块的流程图

以拉方式获取数据的流程:

业务问题排查 监控系统 业务监控体系_监控系统_03

监控引擎的流程: 

业务问题排查 监控系统 业务监控体系_监控系统_04

结果处理组件的流程:

业务问题排查 监控系统 业务监控体系_监控系统_05

业务问题排查 监控系统 业务监控体系_单据监控_06

业务问题排查 监控系统 业务监控体系_状态机_07

 

总结

单据履约监控系统,是一个业务无关的系统,而且对业务方几乎没有侵入性。

后续我看普罗米修斯文档时,发现与其设计思路很相似。