h2. Constraints
The component life-cycle is linked to:
* [the shared life-cycle|#sharedlibrary-lifecycle-constraints],
* [the service-assembly lifecycle|#serviceassembly-lifecycle-constraints],
* the service-unit life-cycle,
* and have following constraint against the service-unit life-cyle:
|| Service unit state || loadNewInstaller || install || start || stop || shutdown || uninstall || unloadInstaller ||
| UNDEPLOYED | !checkOk.png|align=center,width=20px! | !checkOk.png|align=center,width=20px! | !checkOk.png|align=center,width=20px! | !checkOk.png|align=center,width=20px! | !checkOk.png|align=center,width=20px! | !checkOk.png|align=center,width=20px! | !checkOk.png|align=center,width=20px! |
| SHUTDOWN | !checkErro.png|align=center,width=20px!| !checkErro.png|align=center,width=20px! | !checkOk.png|align=center,width=20px! | !checkOk.png|align=center,width=20px! | !checkErro.png|align=center,width=20px! | !checkErro.png|align=center,width=20px! | !checkErro.png|align=center,width=20px! |
| STOPPED | !checkErro.png|align=center,width=20px!| !checkErro.png|align=center,width=20px! | !checkOk.png|align=center,width=20px! | !checkOk.png|align=center,width=20px! | !checkErro.png|align=center,width=20px! | !checkErro.png|align=center,width=20px! | !checkErro.png|align=center,width=20px! |
| STARTED | !checkErro.png|align=center,width=20px!| !checkErro.png|align=center,width=20px!| !checkOk.png|align=center,width=20px! | !checkOk.png|align=center,width=20px! | !checkErro.png|align=center,width=20px! | !checkErro.png|align=center,width=20px! | !checkErro.png|align=center,width=20px! |
** component required by a service unit must be installed and running (ie. in state STOPPED or STARTED) before to deploy the service unit,
** if service units are deployed on, a component can only be started or stopped. All service units must be undeployed before to try any other transitions.
{anchor:service-assembly-lifecycle}
h1. The service-assembly life-cycle
h2. The life-cycle
The service assembly life-cycle can be viewed as a wrapper of its all service unit life-cycles. It propose to drive the life-cycle of its service-units in on operation.
{gliffy:name=Service-Assembly lifecyle}
The transitions from state 'UNDEPLOYED' to 'SHUTDOWN' is realized deploying the service assembly, and the return to the state 'UNDEPLOYED' is realized undeploying the service assembly. A service assembly can be (un)deployed/started/stopped/shutdown using [Petals CLI|petalsesb:Command Line Interface], [the Petals Autoloader|Petals ESB "Autoloader"], Petals Ant Tasks or the JMX API.
Actions associated to states:
* when deploying the service assembly, each service-unit not in state {{DEPLOYED}} is deployed,
* when starting the service assembly, each service-unit not in state {{STARTED}} is started,
* when stopping the service assembly, each service-unit not in state {{STOPPED}} is stopped,
* when shutting down the service assembly, each service-unit not in state {{SHUTDOWN}} is shutdown,
* when undeploying the service assembly, each service-unit not in state {{UNDEPLOYED}} is undeployed.
{anchor:serviceassembly-lifecycle-constraints}
h2. Constraints
The service assembly life-cycle is linked to the component life-cycle:
* to realize a transition on the service-assembly life-cycle, the component must be in state STARTED or STOPPED.
|| Component state || deploy || start || stop || shutdown || undeploy ||
| UNLOADED | !checkErro.png|align=center,width=20px! | !checkErro.png|align=center,width=20px! | !checkErro.png|align=center,width=20px! | !checkErro.png|align=center,width=20px! |!checkErro.png|align=center,width=20px! |
| LOADED/UNINSTALLED | !checkErro.png|align=center,width=20px! | !checkErro.png|align=center,width=20px! | !checkErro.png|align=center,width=20px! | !checkErro.png|align=center,width=20px! |!checkErro.png|align=center,width=20px! |
| INSTALLED/SHUTDOWN | !checkErro.png|align=center,width=20px! | !checkErro.png|align=center,width=20px! | !checkErro.png|align=center,width=20px! | !checkErro.png|align=center,width=20px! |!checkErro.png|align=center,width=20px! |
| STOPPED | !checkOk.png|align=center,width=20px! | !checkOk.png|align=center,width=20px! | !checkOk.png|align=center,width=20px! | !checkOk.png|align=center,width=20px! |!checkOk.png|align=center,width=20px! |
| STARTED | !checkOk.png|align=center,width=20px! | !checkOk.png|align=center,width=20px! | !checkOk.png|align=center,width=20px! | !checkOk.png|align=center,width=20px! |!checkOk.png|align=center,width=20px! |
{anchor:service-unit-lifecycle}
h1. The service-unit life-cyle
The service unit life-cycle is simple:
{gliffy:name=Service-Unit lifecyle|version=2}
The implicit state 'UNDEPLOYED' does not really exist because the service unit is not deployed.
Actions associated to states:
* when starting the service unit, endpoints or equivalents are registered, and consumption of services or equivalent is running,
* when stopping the service unit, consumption of services or equivalent is stopped,
* when shutting down the service unit, endpoints or equivalents are no more registered.