The <installSteps> element is a child of the <installList> element and lists the sequence of steps to be executed in order to install this component. When an <install> step causes this component to be installed, the steps listed here are executed in order. Typically, the install steps steps of a simple component include a <deployResource> step, and the install steps of a composite component include one or more <install> steps to install referenced components.
Name |
Type |
Required |
Configurable |
Description |
---|---|---|---|---|
access |
accessEnum |
No |
No |
The access mode of the install block, as described later. Default PUBLIC. |
modifier |
ModifierEnum |
No |
No |
The modifier of the install block, as described later. |
name |
entityName |
Yes |
No |
The name of the install block. The name must be unique among all install blocks in the containing <installList>. |
description |
String |
No |
No |
A description of the install block. Useful for documentation purposes. |
The "access" attribute of the <installSteps> element specifies the accessibility of the install block.
If PUBLIC, access is not restricted in any way.
If PROTECTED, access is limited to derived components and entities in the same path.
If PATH, access is limited to entities in the same path.
If PRIVATE, access is limited to this component.
Only PUBLIC blocks may be direct run.
The "modifier" attribute of the <installSteps> element specifies the override requirements for the install block.
If ABSTRACT, the block may not include a body. The body must be specified by non-abstract derived components. Install blocks may only be declared abstract if the component is also declared abstract. Abstract blocks may not be private. Non-abstract blocks must declare a body.
If FINAL, the install block may not be overridden by derived components.
If unspecified, then derived components can choose whether or not to override the block.
The <installSteps> element children consist of an optional <paramList> element followed by the body, where the body consists of an optional local <varList> element followed by zero or more “shared ”, or “component install-only” steps. Note that the body is not included if the install block is declared abstract.
By default, a derived component inherits all accessible install blocks of its base component.
A derived component may define additional install blocks by using names that are not among those of the install blocks inherited from the base component. A derived component may override a non-final inherited install block by redeclaring a block with the same name. Note that blocks are overridden using name alone, and may not be overloaded based on parameters. When a block is overridden, the entire content of the block must be re-declared, including the access mode, modifier, parameters and body. The body is specified if and only if the overriding block is non-abstract. The access mode may be no more restrictive than that of the base component.
The signature of the overriding block in the derived component must be compatible with that of the base component. By compatible, it is meant that any arguments that are acceptable to the base block must also be acceptable to the derived block.
A derived block is compatible with a base block if:
It does not declare a new required parameter.
It does not redefine a parameter that was optional in the parent block to be required.
The following signature changes are considered compatible:
Removal of a parameter (required or optional).
Making a required parameter optional.
Addition of an optional parameter.
When a block is overridden, then all references to the block evaluate to the overridden value, including those in the base component.
If the derived component is declared as non-abstract, then any abstract blocks declared by the base component must be overridden by the derived component.
A block in a derived component may explicitly call into a block defined by the base component even if the derived overrides the block using the <superComponent> targeter.