@startuml 'https://plantuml.com/sequence-diagram participant Events as event participant DataTransferListener as entrance participant TsKvEventServiceImpl as eventSvc participant TsKvService as tskvSvc participant 其他服务或监听器 as os == 事件统一入口 == event -> entrance: push事件 == 根据主题处理不同事件 == entrance -> eventSvc: push【latest】或【history】事件 note over eventSvc: 处理topic包含v1/tskv的事件 note over eventSvc: 【latest】或【history】事件处理 alt #LightBlue latest 事件 eventSvc -> tskvSvc: 【async】saveProtoLatest:将推送来的数据去重、新增最新数据 ||| else #Lavender history 事件 eventSvc -> tskvSvc: saveProtoTsKv:存储所有推送来的数据 eventSvc -> tskvSvc: 【async】saveProtoLatest:将推送来的数据去重、新增最新数据 ||| end ||| eventSvc -> os: 执行物计算(push CalcLogSaveEvent) eventSvc -> os: 执行过滤引擎(push FilterLogSaveEvent) ||| eventSvc -> eventSvc: 读application.yml配置中的属性列表:keys eventSvc -> eventSvc: 将keys中的每个基础属性添加am后缀,形成新的属性列表amKeys ||| loop dataProtoList alt #LightBlue 如果是基础属性,且>0 eventSvc -> eventSvc: 将dataProto添加到dataProtos ||| else #Lavender 如果是am属性 eventSvc -> eventSvc: 将dataProto添加到amList ||| else #Gray 其他 eventSvc -> eventSvc: 丢弃 end end ||| alt #LightBlue dataProtos非空 eventSvc -> tskvSvc: 【async】amSumProtos(dataProtos); ||| else #Lavender amList非空 eventSvc -> tskvSvc: hhDdMmYySum(amList); ||| eventSvc -> os: 峰平谷尖计算(push PeakEvent) ||| end ||| @enduml