Client-side Scripting for Lifecycles
Each lifecycle configuration contains one or more state elements. You can use client-side scripting for the lifecycle state transition event 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>
Following is an example of how to make a 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. Select all the check-boxes, and click on the "Promote" button. See Managing Lifecycle.
You will be redirected to the Service list. You can add any valid executable JavaScript to perform the task you require.