... | ... | @@ -27,6 +27,7 @@ Tracker can be configure through generic string property maps. The tracker is re |
|
|
|
|
|
Here is the general diagram. For convenience, the simulation will store all its associated tracker in a [CounpoundTracker]()
|
|
|
|
|
|
### Class diagram
|
|
|
```plantuml
|
|
|
|
|
|
class Simulation {
|
... | ... | @@ -87,6 +88,7 @@ SimulationTracker*->"many" TrackerCreator : static creator map |
|
|
ConcreteTrackerCreatorA-->ConcreteTrackerA : create
|
|
|
ConcreteTrackerCreatorB-->ConcreteTrackerB : create
|
|
|
```
|
|
|
### Callback activation diagram
|
|
|
|
|
|
Here is how the simulation triggers the trackers. We have 3 concrete trackers declared, and the compound tracker will systematically propagate the triggers on all its trackers. Since concrete trackers are typically specialized, some of the triggers will translate in *no op*.
|
|
|
|
... | ... | @@ -130,5 +132,30 @@ activate compoundTracker |
|
|
compundTracker -> trackerC : afterStep
|
|
|
deactivate compoundTracker
|
|
|
deactivate simulation
|
|
|
```
|
|
|
|
|
|
### Callback declaration and activation diagram
|
|
|
|
|
|
```plantuml
|
|
|
participant main
|
|
|
participant simulation
|
|
|
participant simulationTrackerManager
|
|
|
participant trackerCreatorA
|
|
|
participant trackerCreatorB
|
|
|
participant trackerB
|
|
|
|
|
|
main->simulation : create
|
|
|
main->trackerCreatorA : create
|
|
|
main->simulationTrackerManager : register trackerCreatorA
|
|
|
|
|
|
main->trackerCreatorB : createmain
|
|
|
main->simulationTrackerManager : register trackerCreatorB
|
|
|
|
|
|
main->main : read tracker configuration
|
|
|
activate main
|
|
|
main->simulationTrackerManager : create tracker B
|
|
|
simulationTrackerManager -> trackerB : create
|
|
|
main->simulation : register tracker B
|
|
|
deactivate main
|
|
|
main -> simulation : run
|
|
|
``` |
|
|
\ No newline at end of file |