Hi Dilan,

As per our offline discussion this seems to be caused by the reviewer
attempting change the state to a state in which he/she has no get rights to
the resource. One way of tackle this problem would be to do lifecycle
transitions as an admin user after checking the permissions of the logged
in user.However, the downside to do tackling this problem with this
approach is that the lifecycle history records the transition as been done
by the admin user.

The necessary methods to implement this functionality can found at:


   1. *permissions.js *(URL:
   
https://github.com/wso2-dev/product-es/blob/master/modules/apps/publisher/modules/permissions.js)
   
<https://github.com/wso2-dev/product-es/blob/master/modules/apps/publisher/modules/permissions.js>
      - This script will determine if a given user has the necessary
      permissions to change the state
      2. *rxt manager* (URL:
   
https://github.com/wso2-dev/product-es/blob/master/modules/apps/publisher/modules/rxt.manager.js#L116
   )
      - Provides a utility method to obtain an artifact manager instance
      (Used to perform the lifecycle transition) which uses the system registry
      of the current tenant

A sample implementation can be found here:
https://github.com/wso2-dev/product-es/blob/master/modules/apps/publisher/apis/v1/lifecycle_api_router.jag#L171

Thank You,
Sameera

On Thu, Oct 23, 2014 at 8:01 AM, Chathura Dilan <[email protected]> wrote:

> Hi Sameera,
>
> It is In-Review to Approved
>
> On Wed, Oct 22, 2014 at 5:36 PM, Sameera Medagammaddegedara <
> [email protected]> wrote:
>
>> Hi DIlan,
>>
>> Could you provide the states involved in the transition?
>>
>> Thank You,
>> Sameera
>>
>> On Wed, Oct 22, 2014 at 4:27 PM, Chathura Dilan <[email protected]>
>> wrote:
>>
>>> Hi,
>>>
>>> I'm getting the following exception when changing the life-cycle state (
>>> to Approve or Reject) in mobile publisher with reviewer role.
>>>
>>>  JaggeryTravellingPermissionLifeCycle
>>> org.wso2.carbon.registry.core.secure.AuthorizationFailedException: Resource
>>> update failed. User rev is not authorized to update the resource
>>> /_system/governance/mobileapps/pub/android/WSO2 App/1.0.
>>> [2014-10-22 15:33:27,966] ERROR - GovernanceArtifactImpl Invoking
>>> lifecycle action "Approve" failed
>>> org.wso2.carbon.registry.core.exceptions.RegistryException: Resource
>>> update failed. User rev is not authorized to update the resource
>>> /_system/governance/mobileapps/pub/android/WSO2 App/1.0.
>>> at
>>> org.wso2.jaggery.scxml.aspects.JaggeryTravellingPermissionLifeCycle.invoke(JaggeryTravellingPermissionLifeCycle.java:510)
>>> at
>>> org.wso2.carbon.governance.registry.eventing.handlers.GovernanceEventingHandler.invokeAspect(GovernanceEventingHandler.java:243)
>>> at
>>> org.wso2.carbon.registry.core.jdbc.handlers.HandlerManager.invokeAspect(HandlerManager.java:2792)
>>> at
>>> org.wso2.carbon.registry.core.jdbc.handlers.HandlerLifecycleManager.invokeAspect(HandlerLifecycleManager.java:531)
>>> at
>>> org.wso2.carbon.registry.core.jdbc.EmbeddedRegistry.invokeAspect(EmbeddedRegistry.java:2550)
>>> at
>>> org.wso2.carbon.registry.core.caching.CacheBackedRegistry.invokeAspect(CacheBackedRegistry.java:427)
>>> at
>>> org.wso2.carbon.registry.core.session.UserRegistry.invokeAspect(UserRegistry.java:1930)
>>> at
>>> org.wso2.carbon.governance.api.common.dataobjects.GovernanceArtifactImpl.invokeAction(GovernanceArtifactImpl.java:625)
>>> at
>>> org.wso2.carbon.governance.api.common.dataobjects.GovernanceArtifactImpl.invokeAction(GovernanceArtifactImpl.java:605)
>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>> at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>> at java.lang.reflect.Method.invoke(Method.java:606)
>>> at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:126)
>>> at
>>> org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:225)
>>> at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:32)
>>> at org.mozilla.javascript.gen.artifacts_17._c_anonymous_21(artifacts:283)
>>> at org.mozilla.javascript.gen.artifacts_17.call(artifacts)
>>> at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:42)
>>> at
>>> org.jaggeryjs.rhino.publisher.apis.v_1.c4._c_mobileAppsLifeCycleChange_24(/publisher/apis/v1/lifecycle_api_router.jag:473)
>>> at
>>> org.jaggeryjs.rhino.publisher.apis.v_1.c4.call(/publisher/apis/v1/lifecycle_api_router.jag)
>>> at
>>> org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:63)
>>> at
>>> org.jaggeryjs.rhino.publisher.apis.v_1.c4._c_anonymous_9(/publisher/apis/v1/lifecycle_api_router.jag:138)
>>> at
>>> org.jaggeryjs.rhino.publisher.apis.v_1.c4.call(/publisher/apis/v1/lifecycle_api_router.jag)
>>> at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:32)
>>> at
>>> org.jaggeryjs.rhino.publisher.modules.c4._c_anonymous_12(/publisher/modules/router-g.js:183)
>>> at
>>> org.jaggeryjs.rhino.publisher.modules.c4.call(/publisher/modules/router-g.js)
>>> at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:42)
>>> at
>>> org.jaggeryjs.rhino.publisher.apis.v_1.c4._c_anonymous_1(/publisher/apis/v1/lifecycle_api_router.jag:438)
>>> at
>>> org.jaggeryjs.rhino.publisher.apis.v_1.c4.call(/publisher/apis/v1/lifecycle_api_router.jag)
>>> at
>>> org.mozilla.javascript.ScriptRuntime.applyOrCall(ScriptRuntime.java:2430)
>>> at org.mozilla.javascript.BaseFunction.execIdCall(BaseFunction.java:269)
>>> at org.mozilla.javascript.IdFunctionObject.call(IdFunctionObject.java:97)
>>> at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:42)
>>> at
>>> org.jaggeryjs.rhino.publisher.modules.c6._c_anonymous_17(/publisher/modules/publisher.js:438)
>>> at
>>> org.jaggeryjs.rhino.publisher.modules.c6.call(/publisher/modules/publisher.js)
>>> at org.mozilla.javascript.optimizer.OptRuntime.call0(OptRuntime.java:23)
>>> at
>>> org.mozilla.javascript.gen._store__server_js_8._c_anonymous_17([store]/server.js:271)
>>> at org.mozilla.javascript.gen._store__server_js_8.call([store]/server.js)
>>> at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:42)
>>> at
>>> org.jaggeryjs.rhino.publisher.modules.c6._c_anonymous_16(/publisher/modules/publisher.js:433)
>>> at
>>> org.jaggeryjs.rhino.publisher.modules.c6.call(/publisher/modules/publisher.js)
>>> at org.mozilla.javascript.optimizer.OptRuntime.callN(OptRuntime.java:52)
>>> at
>>> org.jaggeryjs.rhino.publisher.apis.v_1.c4._c_script_0(/publisher/apis/v1/lifecycle_api_router.jag:24)
>>> at
>>> org.jaggeryjs.rhino.publisher.apis.v_1.c4.call(/publisher/apis/v1/lifecycle_api_router.jag)
>>> at
>>> org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:394)
>>> at
>>> org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3091)
>>> at
>>> org.jaggeryjs.rhino.publisher.apis.v_1.c4.call(/publisher/apis/v1/lifecycle_api_router.jag)
>>> at
>>> org.jaggeryjs.rhino.publisher.apis.v_1.c4.exec(/publisher/apis/v1/lifecycle_api_router.jag)
>>> at
>>> org.jaggeryjs.scriptengine.engine.RhinoEngine.execScript(RhinoEngine.java:567)
>>> at
>>> org.jaggeryjs.scriptengine.engine.RhinoEngine.exec(RhinoEngine.java:273)
>>> at
>>> org.jaggeryjs.jaggery.core.manager.WebAppManager.execute(WebAppManager.java:536)
>>> at
>>> org.jaggeryjs.jaggery.core.JaggeryServlet.doPut(JaggeryServlet.java:39)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:758)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:379)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)
>>> at
>>> org.jaggeryjs.jaggery.core.JaggeryFilter.doFilter(JaggeryFilter.java:21)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>> at
>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
>>> at
>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
>>> at
>>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
>>> at
>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
>>> at
>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
>>> at
>>> org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:178)
>>> at
>>> org.wso2.carbon.tomcat.ext.valves.CarbonTomcatValve$1.invoke(CarbonTomcatValve.java:47)
>>> at
>>> org.wso2.carbon.webapp.mgt.TenantLazyLoaderValve.invoke(TenantLazyLoaderValve.java:56)
>>> at
>>> org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47)
>>> at
>>> org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:141)
>>> at
>>> org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:156)
>>> at
>>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
>>> at
>>> org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:52)
>>> at
>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>>> at
>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
>>> at
>>> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
>>> at
>>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
>>> at
>>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1653)
>>> at
>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>> at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>> at java.lang.Thread.run(Thread.java:745)
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> Here the user rev is assigned to both publisher and reviewer role in the
>>> publisher. I also applied the patches which is in ES 1.2.0, but no luck.
>>>
>>> Here is the mobile life cycle
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> <aspect name="MobileAppLifeCycle"
>>> class="org.wso2.jaggery.scxml.aspects.JaggeryTravellingPermissionLifeCycle">
>>>     <configuration type="literal">
>>>         <lifecycle>
>>>             <scxml xmlns="http://www.w3.org/2005/07/scxml";
>>>                    version="1.0"
>>>                    initialstate="Initial">
>>>                 <state id='Initial'>
>>>                     <datamodel>
>>>                         <data name="transitionExecution">
>>>                             <execution forEvent="Create"
>>> class="org.wso2.jaggery.scxml.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}:+add,+delete,+authorize"/>
>>>                                 <parameter name="STATE_RULE2:Created"
>>> value="Internal/everyone:-add,-delete,-authorize"/>
>>>                             </execution>
>>>                         </data>
>>>                     </datamodel>
>>>                     <transition event="Create" target="Created"/>
>>>                 </state>
>>>                 <state id="Created">
>>>                     <datamodel>
>>>                         <data name="transitionExecution">
>>>                             <execution forEvent="Submit"
>>> class="org.wso2.jaggery.scxml.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:In-Review"
>>>
>>>  value="Internal/private_{asset_author}:-add,-delete,-authorize"/>
>>>                                 <parameter name="STATE_RULE2:In-Review"
>>> value="Internal/reviewer:+add,-delete,+authorize"/>
>>>                                 <parameter name="STATE_RULE3:In-Review"
>>> value="Internal/everyone:-add,-delete,-authorize"/>
>>>                             </execution>
>>>                         </data>
>>>                     </datamodel>
>>>                     <transition event="Submit" target="In-Review"/>
>>>                 </state>
>>>                 <state id="In-Review">
>>>                     <datamodel>
>>>                         <data name="transitionExecution">
>>>                             <execution forEvent="Approve"
>>> class="org.wso2.jaggery.scxml.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:Approved"
>>>
>>>  value="Internal/private_{asset_author}:+get,+add,-delete,+authorize"/>
>>>                                 <parameter name="STATE_RULE2:Approved"
>>> value="Internal/reviewer:+add,+delete,+authorize"/>
>>>                                 <parameter name="STATE_RULE3:Approved"
>>> value="Internal/everyone:-add,-delete,-authorize"/>
>>>                             </execution>
>>>                             <execution forEvent="Reject"
>>> class="org.wso2.jaggery.scxml.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:Rejected"
>>>
>>>  value="Internal/private_{asset_author}:+add,+delete,+authorize"/>
>>>                                 <parameter name="STATE_RULE2:Rejected"
>>> value="Internal/reviewer:+add,+delete,+authorize"/>
>>>                                 <parameter name="STATE_RULE3:Rejected"
>>> value="Internal/everyone:-add,-delete,-authorize"/>
>>>                             </execution>
>>>                         </data>
>>>                     </datamodel>
>>>                     <transition event="Approve" target="Approved"/>
>>>                     <transition event="Reject" target="Rejected"/>
>>>                 </state>
>>>                 <state id="Approved">
>>>                     <datamodel>
>>>                         <data name="transitionExecution">
>>>                             <execution forEvent="Publish"
>>> class="org.wso2.jaggery.scxml.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:Published"
>>>
>>>  value="Internal/private_{asset_author}:+add,+delete,+authorize"/>
>>>                                 <parameter name="STATE_RULE2:Published"
>>>
>>>  value="Internal/reviewer:-add,-delete,-authorize"/>
>>>                                 <parameter name="STATE_RULE3:Published"
>>>
>>>  value="Internal/everyone:-add,-delete,-authorize"/>
>>> <parameter name="STATE_RULE3:Published"
>>> value="system/wso2.anonymous.role:+get" />
>>>                             </execution>
>>>                         </data>
>>>                     </datamodel>
>>>                     <transition event="Publish" target="Published"/>
>>>                 </state>
>>>                 <state id="Rejected">
>>>                     <datamodel>
>>>                         <data name="transitionExecution">
>>>                             <execution forEvent="Re-Submit"
>>> class="org.wso2.jaggery.scxml.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:In-Review"
>>>
>>>  value="Internal/private_{asset_author}:-add,-delete,-authorize"/>
>>>                                 <parameter name="STATE_RULE2:In-Review"
>>> value="Internal/reviewer:+add,-delete,+authorize"/>
>>>                                 <parameter name="STATE_RULE3:In-Review"
>>> value="Internal/everyone:-add,-delete,-authorize"/>
>>>                             </execution>
>>>                         </data>
>>>                     </datamodel>
>>>                     <transition event="Re-Submit" target="In-Review"/>
>>>                 </state>
>>>                 <state id="Published">
>>>                     <datamodel>
>>>                         <data name="transitionExecution">
>>>                             <execution forEvent="Unpublish"
>>> class="org.wso2.jaggery.scxml.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:Unpublished"
>>>
>>>  value="Internal/private_{asset_author}:+add,-delete,+authorize"/>
>>>                                 <parameter name="STATE_RULE2:Unpublished"
>>>
>>>  value="Internal/reviewer:-add,-delete,-authorize"/>
>>>                                 <parameter name="STATE_RULE3:Unpublished"
>>>
>>>  value="Internal/everyone:-add,-delete,-authorize"/>
>>> <parameter name="STATE_RULE3:Published"
>>> value="system/wso2.anonymous.role:-get" />
>>>                             </execution>
>>>                             <execution forEvent="Deprecate"
>>> class="org.wso2.jaggery.scxml.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:Deprecated"
>>>
>>>  value="Internal/private_{asset_author}:+add,-delete,+authorize"/>
>>>                                 <parameter name="STATE_RULE2:Deprecated"
>>>
>>>  value="Internal/reviewer:-add,-delete,-authorize"/>
>>>                                 <parameter name="STATE_RULE3:Deprecated"
>>>
>>>  value="Internal/everyone:-add,-delete,-authorize"/>
>>> <parameter name="STATE_RULE3:Published"
>>> value="system/wso2.anonymous.role:-get" />
>>>                             </execution>
>>>                         </data>
>>>                     </datamodel>
>>>                     <transition event="Unpublish" target="Unpublished"/>
>>>                     <transition event="Deprecate" target="Deprecated"/>
>>>                 </state>
>>>                 <state id="Unpublished">
>>>                     <datamodel>
>>>                         <data name="transitionExecution">
>>>                             <execution forEvent="Publish"
>>> class="org.wso2.jaggery.scxml.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:Published"
>>>
>>>  value="Internal/private_{asset_author}:+add,-delete,+authorize"/>
>>>                                 <parameter name="STATE_RULE2:Published"
>>>
>>>  value="Internal/reviewer:-add,-delete,-authorize"/>
>>>                                 <parameter name="STATE_RULE3:Published"
>>>
>>>  value="Internal/everyone:-add,-delete,-authorize"/>
>>> <parameter name="STATE_RULE3:Published"
>>> value="system/wso2.anonymous.role:+get" />
>>>                             </execution>
>>>                             <execution forEvent="Retire"
>>> class="org.wso2.jaggery.scxml.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:Retired"
>>>
>>>  value="Internal/private_{asset_author}:-add,+delete,-authorize"/>
>>>                                 <parameter name="STATE_RULE2:Retired"
>>> value="Internal/reviewer:-add,-delete,-authorize"/>
>>>                                 <parameter name="STATE_RULE3:Retired"
>>> value="Internal/everyone:-add,-delete,-authorize"/>
>>> <parameter name="STATE_RULE3:Published"
>>> value="system/wso2.anonymous.role:-get" />
>>>                             </execution>
>>>                         </data>
>>>                     </datamodel>
>>>                     <transition event="Publish" target="Published"/>
>>>                     <transition event="Retire" target="Retired"/>
>>>                 </state>
>>>                 <state id="Deprecated">
>>>                     <datamodel>
>>>                         <data name="transitionExecution">
>>>                             <execution forEvent="Retire"
>>> class="org.wso2.jaggery.scxml.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:Retired"
>>>
>>>  value="Internal/private_{asset_author}:-add,+delete,-authorize"/>
>>>                                 <parameter name="STATE_RULE2:Retired"
>>> value="Internal/reviewer:-add,-delete,-authorize"/>
>>>                                 <parameter name="STATE_RULE3:Retired"
>>> value="Internal/everyone:-add,-delete,-authorize"/>
>>>                             </execution>
>>>                         </data>
>>>                     </datamodel>
>>>                     <transition event="Retire" target="Retired"/>
>>>                 </state>
>>>                 <state id="Retired"/>
>>>             </scxml>
>>>         </lifecycle>
>>>     </configuration>
>>> </aspect>
>>>
>>>
>>>
>>>
>>> Any idea?
>>>
>>>
>>> --
>>> Regards,
>>>
>>> Chatura Dilan Perera
>>> *(Senior Software Engineer** - WSO2 Inc.* * [Mobile])*
>>> www.dilan.me
>>>
>>
>>
>>
>> --
>> Sameera Medagammaddegedara
>> Software Engineer
>>
>> Contact:
>> Email: [email protected]
>> Mobile: + 94 077 255 3005
>>
>
>
>
> --
> Regards,
>
> Chatura Dilan Perera
> *(Senior Software Engineer** - WSO2 Inc.* * [Mobile])*
> www.dilan.me
>



-- 
Sameera Medagammaddegedara
Software Engineer

Contact:
Email: [email protected]
Mobile: + 94 077 255 3005
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to