Each lifecycle configuration contains one or more state elements. More information on lifecycle configuration and the various elements in it, can be found in Configuring Lifecycles.
The client-side scripting support is available for lifecycle state transition event. This can be done by adding something similar to the following under the datamodel element.
<data name="transitionScripts"> <!--name - defines that this element contains the set of transition scripts. It is required to be set to 'transitionScripts'--> <js forEvent=""> <!--forEvent - defines the event that this script block will execute--> <console function=""> <!--function - defines the name of the function--> <script type="text/javascript"> <!--contains the script--> </script> </console> <server function=""> <script type="text/javascript"></script> </server> </js> </data>
Here is an example on how to make an redirection after a "Promote" is done in the default ServiceLifeCycle
.
1. Edit the existing lifecycle by adding the configuration below.
<aspect name="ServiceLifeCycle" class="org.wso2.carbon.governance.registry.extensions.aspects.DefaultLifeCycle"> <configuration type="literal"> <lifecycle> <scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initialstate="Development"> <state id="Development"> <datamodel> <data name="checkItems"> <item name="Code Completed" forEvent=""> <!--<permissions> <permission roles=""/> </permissions> <validations> <validation forEvent="" class=""> <parameter name="" value=""/> </validation> </validations>--> </item> <item name="WSDL, Schema Created" forEvent=""> </item> <item name="QoS Created" forEvent=""> </item> </data> <!--<data name="transitionValidation"> <validation forEvent="" class=""> <parameter name="" value=""/> </validation> </data> <data name="transitionPermission"> <permission forEvent="" roles=""/> </data>--> <data name="transitionScripts"> <js forEvent="Promote"> <console function="doPromote"> <script type="text/javascript"> doPromote = function() { window.location = unescape("../listService/service.jsp?region=region3%26item=governance_list_services_menu"); } </script> </console> </js> </data> </datamodel> <transition event="Promote" target="Tested"/> </state> <state id="Tested"> <datamodel> <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> </datamodel> <transition event="Promote" target="Production"/> <transition event="Demote" target="Development"/> </state> <state id="Production"> <transition event="Demote" target="Tested"/> </state> </scxml> </lifecycle> </configuration> </aspect>
2. After saving this configuration (See Adding Lifecycles), add the ServiceLifeCycle
to a Service (or any other resource/collection). See Managing Lifecycle.
3. Tick all the check-boxes, and click on the "Promote" button. See Managing Lifecycle.
4. You will be redirected to the Service listÂ
You can add any valid executable JavaScript that is capable of performing some task that you require.