All docs This doc

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Log into the API Publisher and select an API you have previously created. Click Lifecycle to view the current states available by default.
  2. Open the management console: https://localhost:9443/carbon.
  3. Navigate to Extensions > Configure > Lifecycles.
  4. Click the View/Edit link corresponding to the default API LifeCycle.
  5. You will be able to see the APILifeCycle configurations.

    Code Block
    <aspect name="APILifeCycle" 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="Created">
                    <state id="Created">
                        <datamodel>
                            <data name="checkItems">
                                <item name="Deprecate old versions after publish the API" forEvent="">
                                </item>
                                <item name="Require re-subscription when publish the API" forEvent="">
                                </item>
                            </data>
                            <data name="transitionExecution">
                                <execution forEvent="Deploy as a Prototype"
                                           class="org.wso2.carbon.apimgt.impl.executors.APIExecutor">
                                </execution>
                                <execution forEvent="Publish"
                                           class="org.wso2.carbon.apimgt.impl.executors.APIExecutor">
                                </execution>
                            </data>
                        </datamodel>
                        <transition event="Publish" target="Published"/>
                        <transition event="Deploy as a Prototype" target="Prototyped"/>
                    </state>
                    <state id="Prototyped">
                        <datamodel>
                            <data name="checkItems">
                                <item name="Deprecate old versions after publish the API" forEvent="">
                                </item>
                                <item name="Require re-subscription when publish the API" forEvent="">
                                </item>
                            </data>
                            <data name="transitionExecution">
                                <execution forEvent="Publish"
                                           class="org.wso2.carbon.apimgt.impl.executors.APIExecutor">
                                </execution>
                                <execution forEvent="Demote to Created"
                                           class="org.wso2.carbon.apimgt.impl.executors.APIExecutor">
                                </execution>
                            </data>
                        </datamodel>
                        <transition event="Publish" target="Published"/>
                        <transition event="Demote to Created" target="Created"/>
                        <transition event="Deploy as a Prototype" target="Prototyped"/>
                    </state>
    
                    <state id="Published">
                        <datamodel>
                            <data name="transitionExecution">
                                <execution forEvent="Block"
                                           class="org.wso2.carbon.apimgt.impl.executors.APIExecutor">
                                </execution>
                                <execution forEvent="Deprecate"
                                           class="org.wso2.carbon.apimgt.impl.executors.APIExecutor">
                                </execution>
                                <execution forEvent="Demote to Created"
                                           class="org.wso2.carbon.apimgt.impl.executors.APIExecutor">
                                </execution>
                                <execution forEvent="Deploy as a Prototype"
                                           class="org.wso2.carbon.apimgt.impl.executors.APIExecutor">
                                </execution>
                            </data>
                        </datamodel>
                        <transition event="Block" target="Blocked"/>
                        <transition event="Deploy as a Prototype" target="Prototyped"/>
                        <transition event="Demote to Created" target="Created"/>
                        <transition event="Deprecate" target="Deprecated"/>
                        <transition event="Publish" target="Published"/>
    						
                    </state>
                    <state id="Blocked">
                        <datamodel>
                            <data name="transitionExecution">
                                <execution forEvent="Re-Publish"
                                           class="org.wso2.carbon.apimgt.impl.executors.APIExecutor">
                                </execution>
                                <execution forEvent="Deprecate"
                                           class="org.wso2.carbon.apimgt.impl.executors.APIExecutor">
                                </execution>
                            </data>
                        </datamodel>
                        <transition event="Deprecate" target="Deprecated"/>
                        <transition event="Re-Publish" target="Published"/>
                    </state>
                    <state id="Deprecated">
                        <datamodel>
                            <data name="transitionExecution">
                                <execution forEvent="Retire"
                                           class="org.wso2.carbon.apimgt.impl.executors.APIExecutor">
                                </execution>
                            </data>
                        </datamodel>
                        <transition event="Retire" target="Retired"/>
                    </state>
                    <state id="Retired">
                    </state>
                </scxml>
            </lifecycle>
        </configuration>
    </aspect>
  6. Copy the following sample and paste in the file, to add a sample state to the API Lifecycle.

    Code Block
     <state id="Rejected">
    	<datamodel>
            <data name="checkItems">
                <item name="Deprecate old versions after rejecting the API" forEvent="">
                </item>
        		<item name="Remove subscriptions after rejection" forEvent="">
                </item>
       		</data>
        	<data name="transitionExecution">
            	<execution forEvent="Re-Submit" class="org.wso2.carbon.apimgt.impl.executors.APIExecutor">
            	</execution>
            	<execution forEvent="Retire" class="org.wso2.carbon.apimgt.impl.executors.APIExecutor">
            	</execution>
        	</data>
        </datamodel>
            <transition event="Re-Submit" target="Published"/>
            <transition event="Retire" target="Retired"/>
    </state>
    Info

    The sample REJECTED state is added between PUBLISHED and RETIRED. It uses the Re-submit and Retire state transition events to change to the consequent states. Custom checklist items are also given under "checkItems", which are tasks to be done in a state transition. You can select/deselect these items in the management console.

    Note

    For all state transitions, the same execution class is used (org.wso2.carbon.apimgt.impl.executors.APIExecutor).  However, you can plug your own execution code when modifying the life cycle configuration. For example, if you want to add notifications for a specific state transition, you can plug your own custom execution class for that particular state in the API life cycle. Any changes are updated in the Lifecycle tab accordingly.



  7. Add a new transition event under the PUBLISHED state, to show the state change to REJECTED.

    Code Block
    ...	
    	<transition event="Reject" target="Rejected"/>
    ...
  8. Go to <API-M_HOME>/repository/deployment/server/jaggeryapps/publisher/site/conf/locales/jaggery/locale_default.json . Add "reject": "RejectedReject" to make the transition event visible in API Publisher. Note that the key value in the JSON pair should be lowercase.
  9. Re-open API Publisher by restarting the server and check the Lifecycle to see the changes.

...