...
- Log into the API Publisher and select an API you have previously created. Click Lifecycle to view the current states available by default.
- Open the management console: https://localhost:9443/carbon.
- Navigate to Extensions > Configure > Lifecycles.
- Click the View/Edit link corresponding to the default API LifeCycle.
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>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-submitandRetirestate 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.Add a new transition event under the PUBLISHED state, to show the state change to REJECTED.
Code Block ... <transition event="Reject" target="Rejected"/> ...
- Go to
<API-M_HOME>/repository/deployment/server/jaggeryapps/publisher/site/conf/locales/jaggery/locale_default.json. Add"reject": "Reject"to make the transition event visible in API Publisher. Note that the key value in the JSON pair should be lowercase. - Re-open API Publisher by restarting the server and check the Lifecycle to see the changes.
...