diff --git a/UML/dataRecord.puml b/UML/dataRecord.puml index 53ec1870..97b129db 100644 --- a/UML/dataRecord.puml +++ b/UML/dataRecord.puml @@ -1,119 +1,166 @@ @startuml database mongoDB as db -participant runDataRecord as run +participant runDataRecord as rundr +participant Process as run participant MainEngine as me +participant LogEngine as runle participant DataEngine as dt participant LogEngine as le participant DrEngine as dr participant Queue as drq participant Thread as drt participant eventEngine as ee -participant Thread as eet +participant EventProcessThread as eet participant Queue as eeq +participant TimerThread as eetm participant ibGateway as gw -activate run - run->ee ** :create evnetEngine object - activate ee - ee->ee ++ : init() - ee->eeq ** : Create Queue - ee->eet ** : Create Child Thread - return - return object +activate rundr + loop + rundr->rundr: 检查是否处于时间段 + rundr->rundr: 监控子进程是否存在 + rundr->run ** : create process + activate run + rundr->rundr: sleep(5) + end loop + deactivate rundr + +run->runle ** : create runle ||| ||| - run->me ** : new mainEngine(ee) - activate me - me->me ++ : init() - me->ee ++ : ee.start() - note right: 启动ee的子线程 - ee->eet ++ #red : thread.start() - ee-->me--: return - me->dt ** :创建DataEngine() - activate dt - dt->dt ++ : init() - return - return object - me->le ** :创建LogEngine() - activate le - le->le ++ : init() - return - return - me-->me--:return - me-->run--:return object -||| -||| - run->me: addGateway(ibGateway) - activate me +run->ee ** :create evnetEngine object + activate ee + ee->ee ++ : init() + ee->eeq ** : Create Queue + ee->eet ** : Create event process thread + note right: 事件处理子线程 + ee->eetm ** : Create timer thread + note right: 定时器子线程 return + return object ||| ||| - run->me: addApp() +run->me ** : new mainEngine(ee) + activate me + me->me ++ : init() + me->ee ++ : ee.start() + note right: 启动ee的子线程 + ee->eet ++ #red : thread.start() + ee->eetm ++ #green : timer.start() + ee-->me--: return + me->dt ** :创建DataEngine() + activate dt + dt->dt ++ : init() + return + return object + me->le ** :创建LogEngine() + activate le + le->le ++ : init() + return + return + me-->me--:return + me-->run--: object +||| +||| +run->me: addGateway(ibGateway) activate me return ||| ||| - run->ee: ee.regiser() 注册日志处理事件 +run->me: addApp() + activate me + return +||| +||| +run->ee: ee.regiser() 注册日志处理事件 activate ee return ||| ||| - run->me++: me.Connect(IB) - note right: 连接IB网关 - me->dr**: new DrEngine(me,ee) - activate dr - dr->dr++:init() - dr->drq **:Create Queue - dr->drt **:Create Thread - activate drt #blue - dr->dr:loadSetting() - note right - 从配置文件中加载 - 订阅设置到字典对象 - end note - dr->ee++:register(TICK, handler) - return - dr-->dr -- : return - 'return object - dr-->me--: object - run<--me--:return +run->me++: me.Connect(IB) + note right: 连接IB网关 + me->dr**: new DrEngine(me,ee) + activate dr + dr->dr++:init() + dr->drq **:Create Queue + dr->drt **:Create Thread + activate drt #blue + dr->dr:loadSetting() + note right + 从配置文件中加载 + 订阅设置到字典对象 + end note + dr->ee++:register(TICK, handler) + return + dr-->dr -- : return + 'return object + dr-->me--: object + run<--me--:return ||| ||| - eet->ee--: ee.run() - activate ee #red - loop - ee->eeq:queue.get() - gw->eeq ++: queue.put(tick/bar) - return - eeq-->ee: event - ee->ee ++ : __process(event) - ee->dr ++ #red :call procecssTickEvent() - dr->dr ++ :OnTick() - dr->drq ++: queue.put(tick) - return - return +run->ee ++ : ee.register(EVENT_LOG, le.processLogEvent) + return - dr->dr ++ :OnBar() - dr->drq ++: queue.put(bar) - return +||| +||| +run->ee ++ : ee.register(EVENT_ERROR, le.processErrorEvent) + return + +||| +||| +loop + run->run: sleep(1) +end loop +deactivate run +||| +||| +gw->eeq ++: queue.put(tick/bar) + return +||| +||| +eetm->ee -- : ee.__runTimer() + activate ee #green + loop + ee->eeq ++ : queue.put(定时器事件) + return + ee->ee : 休眠1秒 + end loop + deactivate ee +||| +||| +eet->ee--: ee.run() + activate ee #red + loop + ee->eeq ++ :queue.get() + return event + ee->ee ++ : __process(event) + ee->dr ++ #red :call procecssTickEvent() + dr->dr ++ :OnTick() + dr->drq ++: queue.put(tick) + return + return + + dr->dr ++ :OnBar() + dr->drq ++: queue.put(bar) return return return - end loop - deactivate ee + return + end loop + deactivate ee - drt->dr -- :run() - activate dr #blue - loop - dr->drq ++ :queue.get() - drq-->dr --:data - dr->me:insertDB(data) - end loop - deactivate dr +drt->dr -- :run() + activate dr #blue + loop + dr->drq ++ :queue.get() + drq-->dr --:data + dr->me:insertDB(data) + end loop + deactivate dr - me->db: 写入mongoDB +me->db: 写入mongoDB @enduml