167 lines
3.6 KiB
Plaintext
167 lines
3.6 KiB
Plaintext
@startuml
|
|
database mongoDB as db
|
|
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 EventProcessThread as eet
|
|
participant Queue as eeq
|
|
participant TimerThread as eetm
|
|
participant ibGateway as gw
|
|
|
|
|
|
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->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 ** : 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->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->ee ++ : ee.register(EVENT_LOG, le.processLogEvent)
|
|
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
|
|
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
|
|
|
|
me->db: 写入mongoDB
|
|
|
|
@enduml
|