...
| draw.io Diagram | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Sequence diagrams are designed to adhere to the Single Responsibility Principle (SRP), ensuring each diagram focuses on a unique feature.
...
| PlantUML Macro |
|---|
@startuml autonumber 66 "[0]" 'hide footbox title Launch for an Suspended Interactive App participant ":SystemApp" as SystemApp participant ":App Manager" as AM participant ":Lifecycle Manager" as LM participant ":Runtime Manager" as RM participant ":Window Manager" as WM participant ":Ripple" as Ripple participant ":Firebolt App" as App note right of SystemApp: Contd from Step 4B contd SystemApp -> AM: closeApp AM -> LM: setTargetAppState(PAUSED) LM -> LM: newAppLifecycleState = PAUSED LM ->> Ripple: onAppLifecycleStateChanged\n PAUSED Ripple ->> App: onPause LM ->> AM: onAppLifecycleStateChanged\nPAUSED note right of AM: check for InstallBlocked/UninstallBlocked and move the app to terminate AM ->> SystemApp: onAppLifecycleStateChanged\nPAUSED note right of AM: Based on Suspension Policy note right of AM: Need some methods in App Manager to support this TBD AM -> LM: setAppTargetState(SUSPENDED) LM -> LM: newAppLifecycleState = SUSPENDED LM -> RM: suspend(appInstanceId) LM ->> Ripple: onAppLifecycleStateChanged\n SUSPENDED Ripple ->> App: onSuspend opt If App is enabled for Hibernation note right of AM: Based on Hibernation Policy note right of AM: Need some methods in App Manager to support this TBD AM -> LM: setAppTargetState(HIBERNATED) LM -> LM: newAppLifecycleState = HIBERNATED LM -> RM: hibernate(appInstanceId) end opt Termination SystemApp -> AM: terminateApp AM -> LM: unloadApp opt Given current state is HIBERNATED LM -> LM: newAppLifecycleState = SUSPENDED LM -> RM: wake(appInstanceId,suspended) LM -> LM: newAppLifecycleState = SUSPENDED LM ->> Ripple: onAppLifecycleStateChanged\n SUSPENDED Ripple ->> App: onRestoreonSuspend end LM -> LM: newAppLifecycleState = TERMINATING LM ->> Ripple: onAppLifecycleStateChanged\n TERMINATING note right of Ripple: No guarantee for this dispatch Ripple -> Ripple: Cleanup Ripple ->> App: onDestroy LM -> LM: Cleanup end @enduml |
...