Make sure to go through the following lifecycle configuration definitions when adding a new custom lifecycle via the ES Management Console. When a lifecycle is added, ES stores the corresponding definition in the <ES_HOME>/repository/deployment/server/jaggeryapps/publisher/extensions
directory
Note |
---|
WSO2 Enterprise Store uses the lifecycle API provided by WSO2 Governance Registry, but does not support all the lifecycle elements provided by the WSO2 Governance Registry. |
XML elements
Click on an element to view its details along with sub-element details if any.
Anchor | ||||
---|---|---|---|---|
|
- <aspect>
- <configuration>
- <lifecycle>
- <scxml>
- <state>
- <datamodel>
- <data>
- <item>
- <permissions>
- <permission>
- <validations>
- <validation>
- <parameter>
- <js>
- <console>
- <script>
- <server>
- <script>
- <execution>
- <parameter>
- <ui>
- <execution>
- <parameter>
- <transition>
...
Anchoranchor | ||||
---|---|---|---|---|
|
<aspect>
XML Syntax | <aspect name="" class=""> |
---|---|
Description | This element defines the various aspects of the lifecycle. |
Mandatory/Optional | Mandatory |
...
Attribute | Description | Default Values | Fixed Values | Mandatory/ OptionalNotes | |
---|---|---|---|---|---|
name | Defines the name of the lifecycle. As ES does not allow you to create two lifecycles with the same name, the name of the lifecycle should be unique. | N/A | Mandatory | ||
class | Defines the class that is associated with the lifecycle. |
| Mandatory | You can define your own class as shown here, but the default class provided with the ES distribution has the capability to handle any configuration that follows the above template. |
Sample implementations
...
language | html/xml |
---|
...
|
| Mandatory |
Sample implementations
Code Block | ||
---|---|---|
| ||
<aspect name="Test" class="org.wso2.jaggery.scxml.aspects.JaggeryTravellingPermissionLifeCycle"> |
...
Attribute | Description | Default Value | Fixed Values | Mandatory/ Optional | Notes |
---|---|---|---|---|---|
type type | Defines how the lifecycle is configured. | N/A | literal - Use thisThis option whendepicts that the lifecycle configurations are setup using the ES Management Console .resource - Use this option when the lifecycle configurations are setup via the registry. xml file. | Mandatory |
Sample implementations
Code Block | ||
---|---|---|
| ||
<configuration type="literal"> |
...
Attribute | Description | Default Value | Fixed Values | Mandatory/Optional | Notes |
---|---|---|---|---|---|
xmlns | State Chart XML (SCXML) specification. | http://www.w3.org/2005/07/scxml | Mandatory | ||
version | Version number of the State Chart XML (SCXML). | 1.0 | Optional | ||
initialstate | Defines the initial state of the lifecycle. The initial state does not have to be the first state of the configuration. Furthermore, by changing the value of this attribute, you can easily modify the initial state and the flow of the your lifecycle. |
Sample implementations
Code Block | ||
---|---|---|
| ||
<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initialstate=""> |
...
Attribute | Description | Default Value | Fixed Values | Mandatory/ OptionalNotes | |
---|---|---|---|---|---|
id | Defines the name of the lifecycle state. | N/A | Mandatory |
Sample implementations
Code Block | ||
---|---|---|
| ||
<state id="Development"></state> |
...
|
...
XML Syntax | <datamodel> |
---|---|
|
...
<datamodel>
N/A | Mandatory |
Sample implementations
Code Block | ||
---|---|---|
| ||
<state id="Development"></state> |
...
Anchor | ||||
---|---|---|---|---|
|
<datamodel>
XML Syntax | <datamodel> |
---|---|
Description | This element contains all the custom elements, which are defined in the lifecycle model. Based on the SCXML specification, you can define a data model to a lifecycle state and you can use this extension to define custom elements. |
Mandatory/Optional | Optional |
...
XML Syntax | <data name=""> |
---|---|
Description | Custom |
Mandatory/Optional | Optional |
...
Attribute | Description | Default Value | Fixed Values | Mandatory/ Optional | Notes | |
---|---|---|---|---|---|---|
name | Defines the extension point (e.g., Transition Validators, Transition Executors, Transition User Interfaces and Transition Scripts) that is used in the lifecycle. You can define only one extension point of a kind, because the underlined implementation ignores multiple elements and takes only one into consideration. For
|
| Mandatory |
Sample implementations
...
language | html/xml |
---|
Mandatory |
Sample implementations
Code Block |
---|
<data name="checkItems"> <item name="CodeEffective Inspection Completed" forEvent="" /> <item name="WSDL,Test SchemaCases CreatedPassed" forEvent="" /> </data> <data<item name="transitionValidation"> <validation forEvent="" class=""> <parameter nameSmoke Test Passed" forEvent="" value=""/> </validation> </data> <data name="transitionPermissiontransitionExecution"> <permission <execution forEvent="Promote" rolesclass=""/> </data> <data name="transitionScripts"> <js forEvent=""> <console function=""org.wso2.jaggery.scxml.generic.GenericExecutor"> <parameter name="PERMISSION:get" value="http://www.wso2.org/projects/registry/actions/get" /> <script type="text/javascript"<parameter name="PERMISSION:add" value="http://www.wso2.org/projects/registry/actions/add" /> <parameter name="PERMISSION:delete" value="http://www.wso2.org/projects/registry/actions/delete" /> </script> <parameter </console>name="PERMISSION:authorize" value="authorize" /> <parameter <server function=""name="STATE_RULE1:Created" value="Internal/private_{asset_author}:+get,+add,+delete,+authorize" /> <parameter <script type="text/javascript"></script> </server>name="STATE_RULE2:Created" value="Internal/reviewer:-get,-add,-delete,-authorize" /> </js> </data> <data<parameter name="transitionExecutionSTATE_RULE3:Created"> <execution forEvent="Promote" class="org.wso2.jaggery.scxml.generic.GenericExecutor"> </data> <data name="transitionUI"> <ui forEvent="Promote" href="../lifecycles/pre_invoke_aspect_ajaxprocessor.jsp?currentEnvironment=/_system/governance/trunk/"/> </data> <data name="transitionApproval"> <approval forEvent="Promote" roles="" votes="5"/> <approval forEvent="Demote" roles="admin" votes="5"/> </data> |
...
<item>
XML Syntax | <item name="" forEvent=""> |
---|---|
Description | These elements contain the check items for each state. There can be more than one of these elements. |
Mandatory/Optional | Optional |
Attributes
Attribute | Description | Default Value | Fixed Values | Mandatory/ Optional | Notes |
---|---|---|---|---|---|
name | Defines the name of the check item. ES allows you to define check items for each transition. | N/A | Optional | ||
forEvent | Defines whether the check item is required for a specific transition. A check item can be required for more than one event, in which case, a user can give a comma (",") separated list for the forEvent attribute. | Null : Keeping the forEvent attribute empty means that a specific check item is not required for any transition event. | Optional | The forEvent value is defined under the <transition> element with the event attribute. |
Sample implementations
Code Block | ||
---|---|---|
| ||
<data name="checkItems">
<item name="Effective Inspection Completed" forEvent=""></item>
<item name="Test Cases Passed" forEvent=""></item>
<item name="Smoke Test Passed" forEvent=""></item>
</data> |
...
<js>
XML Syntax | <js forEvent=""> |
---|---|
Description | ES lifecycle configuration has the ability to allow JavaScript functions to execute on both the server-side and the client-side. The |
Mandatory/Optional | Optional |
Attributes
Attribute | Description | Default Value | Fixed Values | Mandatory/Optional | Notes |
---|---|---|---|---|---|
forEvent | Defines the respective transition for which the JavaScript function is executed. | Mandatory | The forEvent value is defined under the <transition> element with the event attribute. |
Sample implementations
Code Block | ||
---|---|---|
| ||
<js forEvent=""> <console function="">....</console> <server function="">....</server> </js>value="Internal/everyone:-get,-add,-delete,-authorize" /> </execution> </data> |
...
Anchor | ||||
---|---|---|---|---|
|
<item>
XML Syntax | <item name="" forEvent=""> |
---|---|
Description | These elements contain the check items for each state. There can be more than one of these elements. |
Mandatory/Optional | Optional |
Attributes
Attribute | Description | Default Value | Fixed Values | Mandatory/ Optional | ||
---|---|---|---|---|---|---|
name | Defines the name of the check item. ES allows you to define check items for each transition. | N/A | Optional | |||
forEvent | Defines whether the check item is required for a specific transition. A check item may be needed for more than one event, in which case, you can provide a comma separated list for the
| Null - Keeping the forEvent attribute empty means that a specific check item is not required for any transition event. | Optional |
Sample implementations
Code Block | ||
---|---|---|
| ||
<data name="checkItems">
<item name="Effective Inspection Completed" forEvent="" />
<item name="Test Cases Passed" forEvent="" />
<item name="Smoke Test Passed" forEvent="" />
</data> |
The above code snippet based on checkItems renders as follows in the Publisher:
...
Anchor | ||||
---|---|---|---|---|
|
<execution>
XML Syntax | <execution forEvent="" class=""/> |
---|---|
Description | An executor is business logic that is executed once a state transition takes place in a lifecycle. The |
Mandatory/Optional | Optional |
Attributes
Attribute | Description | Default Value | Fixed Values | Mandatory/ Optional |
---|---|---|---|---|
forEvent | Defines the event for which this execution is performed. This gives you the flexibility to define executions for each event. | Mandatory | ||
class | Defines the class that is executed at runtime. A user must give the full, qualified name of a class that implements the Execution interface, as the value of the class attribute. This class defines the business logic that is executed when the specified event takes place. This class manipulates the current and target environment of the underlying artifact when the state transition is performed on it. | Mandatory |
Sample implementations
Code Block |
---|
<execution forEvent="Promote" class="org.wso2.jaggery.scxml.generic.GenericExecutor"> |
...
Anchor |
---|
...
|
...
|
...
<parameter>
XML Syntax | <console function<parameter name="" value=""/> |
---|---|
Description | Defines the JavaScript function that ES needs to execute on the client-sideThe |
Mandatory/Optional | Optional |
...
Attribute | Description | Default Value | Fixed Values | Mandatory/ Optional | Notes | |
---|---|---|---|---|---|---|
function | Defines name | This attribute defines the name of the function that is executed when an asset moves from one lifecycle state to another. | Mandatory |
Sample implementations
Code Block | ||
---|---|---|
| ||
<console function="">
<script type="text/javascript"> </script>
</console> |
...
<server>
XML Syntax | <server function=""> |
---|---|
Description | This is the same as the |
Mandatory/Optional | Optional |
Attributes
Attribute | Description | Default Value | Fixed Values | Mandatory/ Optional | Notes |
---|---|---|---|---|---|
function | Defines the name of the function that is executed at an asset transition from one state to another. | Mandatory | The function should be a ES supported scripting language. |
Sample implementations
Code Block | ||
---|---|---|
| ||
<server function="">
<script type="text/javascript"></script>
</server> |
...
<Execution>
XML Syntax | <execution forEvent="" class=""/> |
---|---|
Description | An executor is business logic that is executed once a state transition takes place in a lifecycle. The |
Mandatory/Optional | Optional |
Attributes
Attribute | Description | Default Value | Fixed Values | Mandatory/ Optional | Notes |
---|---|---|---|---|---|
forEvent | Defines the event for which this execution is performed. This gives you the flexibility to define executions for each event. | Mandatory | The forEvent value is defined under the <transition> element with the event attribute. | ||
class | Defines the class that is executed at runtime. A user must give the full, qualified name of a class that implements the Execution interface, as the value of the class attribute. | Mandatory | This class defines the business logic that is executed when the specified event takes place. This class manipulates the current and target environment of the underlying artifact when the state transition is performed on it. |
Sample implementations
...
parameter.
|
| The first four parameters are mandatory. | ||||||||
value | This attribute defines the value held by the parameter.
For example:
|
|
Sample implementations
Code Block |
---|
<data name="transitionExecution"> <execution forEvent="Promote" class="org.wso2.carbonjaggery.governancescxml.registry.extensions.executors.ServiceVersionExecutor"> |
...
<parameter>
XML Syntax | <parameter name="" value=""/> |
---|---|
Description | The |
Mandatory/Optional | Optional |
Attributes
...
This attribute defines the name of the parameter.
...
Sample implementations
Code Block |
---|
<data name="transitionExecution">
<execution forEvent="Promote" class="org.wso2.carbon.governance.registry.extensions.executors.ServiceVersionExecutor">
<parameter name="currentEnvironment" value="/_system/governance/trunk/{@resourcePath}/{@resourceName}"/>
<parameter name="targetEnvironment" value="/_system/governance/branches/testing/{@resourcePath}/{@version}/{@resourceName}"/>
<parameter name="service.mediatype" value="application/vnd.wso2-service+xml"/>
<parameter name="wsdl.mediatype" value="application/wsdl+xml"/>
<parameter name="endpoint.mediatype" value="application/vnd.wso2.endpoint"/>
</execution>
</data> |
...
<ui>
XML Syntax | <ui forEvent="" href=""/> |
---|---|
Description | A UI element is a mechanism to associate a user interface with a particular event during a given transition. This allows you to pass inputs that would be utilized when performing a transition. Note that you can not define an external reference link as the |
Mandatory/Optional | Optional |
Attributes
Attribute | Description | Default Value | Fixed Values | Mandatory/ Optional | Notes |
---|---|---|---|---|---|
forEvent | Defines the event for which the UI appears. | N/A | Optional | The forEvent value is defined under the <transition> element with the event attribute. | |
href | Defines the hyperlink that is opened and presented to the user, when a lifecycle transition operation is performed from the ES Management Console. | N/A | Optional |
Sample implementations
Code Block | ||
---|---|---|
| ||
<ui forEvent="Promote" href="../lifecycles/pre_invoke_aspect_ajaxprocessor.jsp?currentEnvironment=/_system/governance/branches/testing/"/> |
...
generic.GenericExecutor">
<parameter name="PERMISSION:get" value="http://www.wso2.org/projects/registry/actions/get" />
<parameter name="PERMISSION:add" value="http://www.wso2.org/projects/registry/actions/add" />
<parameter name="PERMISSION:delete" value="http://www.wso2.org/projects/registry/actions/delete" />
<parameter name="PERMISSION:authorize" value="authorize" />
<parameter name="STATE_RULE1:Created" value="Internal/private_{asset_author}:+get,+add,+delete,+authorize" />
<parameter name="STATE_RULE2:Created" value="Internal/reviewer:-get,-add,-delete,-authorize" />
<parameter name="STATE_RULE3:Created" value="Internal/everyone:-get,-add,-delete,-authorize" />
</execution>
</data> |
...
Anchor | ||||
---|---|---|---|---|
|
...
XML Syntax | <transition event="" target=""/> |
---|---|
Description | Defines the transitions, by specifying the name of the lifecycle state and the target lifecycle state, instead of using static transitions. Any number of transitions for one lifecycle state are supported. |
Mandatory/Optional | Mandatory |
Attributes
Attribute | Description | Default Value | Fixed Values | Mandatory/ Optional | Notes | |||
---|---|---|---|---|---|---|---|---|
event | Defines the transition event name , (e.g., Promote, Demote or any name that the user specifies. | N/A | Mandatory | you wish to specify). This event name is used in the | N/A | Mandatory | ||
target | Defines the target state of the transition. | N/A | Mandatory |
Sample implementations
Code Block | ||
---|---|---|
| ||
<transition event="Promote" target="Tested"/> |
...