Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

draw.io Diagram
bordertrue
diagramNameHLA
simpleViewerfalse
width
linksauto
tbstyletop
lboxtrue
diagramWidth751
height429
revision1

General Information

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

...