17.04.03 > Calling ECA Service with set operation on service without auto-attributes

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

17.04.03 > Calling ECA Service with set operation on service without auto-attributes

Sakthivel Vellingiri
Hi All, Any pointes are much appreciated.

OFBiz Version : 17.04.03

Summary:
I'm trying to use Service ECA on return of a Service method to invoke another Service method, i'm able to successfully call a service that is defined using auto-attributes, However when i invoke a service that is defined using non-auto attributes i get an error message > Error running the simple-method: java.util.HashMap cannot be cast to org.apache.ofbiz.entity.GenericValue, Is this an expected behavior or am i missing something?

Details:
    Scenario 1: Successfully able to invoke a service updateProductCategory with set operation (that is defined using auto-attributes), from the return of service createProductCategory
    SECA Definition:
   -----------------------
    <eca service="createProductCategory" event="return">
    <condition field-name="productCategoryId" operator="is-not-empty"/>
    <set field-name="description" value="Updated" />
    <action service="updateProductCategory" mode="sync"/>
    </eca>
    Called Service Definition: (auto-attributes)
    -----------------------------------
    <service name="updateProductCategory" default-entity-name="ProductCategory" engine="simple"
                location="component://product/minilang/product/category/CategoryServices.xml" invoke="updateProductCategory" auth="true">
        <description>Update an ProductCategory</description>
        <auto-attributes include="pk" mode="IN" optional="false"/>
        <auto-attributes include="nonpk" mode="IN" optional="true"/>
        <override name="productCategoryTypeId" optional="false"/>
    </service>

    Scenario 1: Invoking a service duplicateProductCategory with set Operation (that is defined using non-auto-attributes), from the return of the same service as above i.e. createProductCategory results in an error > Error in simple-method [Duplicate a ProductCategory [file:/home/clintu2/Downloads/git/integrin_enterprise/com/integrin/erp/erp-17.12/applications/product/minilang/product/category/CategoryServices.xml#duplicateProductCategory]]: Error running the simple-method: java.util.HashMap cannot be cast to org.apache.ofbiz.entity.GenericValuenull
    SECA Definition:
    -----------------------
<eca service="createProductCategory" event="return">
    <condition field-name="productCategoryId" operator="is-not-empty"/>
    <set field-name="productCategoryId" value="R${productCategoryId}" />
    <set field-name="oldProductCategoryId" env-name="productCategoryId" />
    <set field-name="duplicateContent" value="Y"/>
    <set field-name="duplicateParentRollup" value="Y"/>
    <set field-name="duplicateChildRollup" value="Y"/>
    <set field-name="duplicateMembers" value="Y"/>
    <set field-name="duplicateCatalogs" value="Y"/>
    <set field-name="duplicateFeatureCategories" value="Y"/>
    <set field-name="duplicateFeatureGroups" value="Y"/>
    <set field-name="duplicateAttributes" value="Y"/>
    <set field-name="duplicateRoles" value="Y"/>

    <action service="duplicateProductCategory" mode="sync"/>
    </eca>
    Called Service Definition: (Non auto-attributes)
    ---------------------------------
 <service name="duplicateProductCategory" engine="simple"
                location="component://product/minilang/product/category/CategoryServices.xml" invoke="duplicateProductCategory" auth="true">
        <description>Duplicate a Product Category using from oldProductCategoryId to a new productCategoryId</description>
        <attribute name="productCategoryId" type="String" mode="IN" optional="false"/>
        <attribute name="oldProductCategoryId" type="String" mode="IN" optional="false"/>
        <attribute name="duplicateContent" type="String" mode="IN" optional="true"/>
        <attribute name="duplicateParentRollup" type="String" mode="IN" optional="true"/>
        <attribute name="duplicateChildRollup" type="String" mode="IN" optional="true"/>
        <attribute name="duplicateMembers" type="String" mode="IN" optional="true"/>
        <attribute name="duplicateCatalogs" type="String" mode="IN" optional="true"/>
        <attribute name="duplicateFeatureCategories" type="String" mode="IN" optional="true"/>
        <attribute name="duplicateFeatureGroups" type="String" mode="IN" optional="true"/>
        <attribute name="duplicateAttributes" type="String" mode="IN" optional="true"/>
        <attribute name="duplicateRoles" type="String" mode="IN" optional="true"/>
    </service>

Result:
Scenario 1 succeeded


Scenaro 2 Failed


While researching the issue i came across the below thread, which suggests that the above  isssue is expected for XRPC and SOAP, but wasn't sure this is expected for SECA on service defined with non-auto-attributes


Reply | Threaded
Open this post in threaded view
|

Re: 17.04.03 > Calling ECA Service with set operation on service without auto-attributes

Jacques Le Roux
Administrator
Le 02/08/2020 à 05:06, Sakthivel Vellingiri a écrit :

> Hi All, Any pointes are much appreciated.
>
> OFBiz Version : 17.04.03
>
> *Summary:*
> I'm trying to use Service ECA on return of a Service method to invoke another Service method, i'm able to successfully call a service that is
> defined using auto-attributes, However when i invoke a service that is defined using non-auto attributes i get an error message > Error running the
> simple-method: java.util.HashMap cannot be cast to org.apache.ofbiz.entity.GenericValue, Is this an expected behavior or am i missing something?
>
> *Details:*
> *    Scenario 1: *Successfully able to invoke a service /updateProductCategory/ with set operation (that is defined using auto-attributes), from the
> return of service /createProductCategory/
>     SECA Definition:
>    -----------------------
>     <eca service="createProductCategory" event="return">
>     <condition field-name="productCategoryId" operator="is-not-empty"/>
>     <set field-name="description" value="Updated" />
>     <action service="updateProductCategory" mode="sync"/>
>     </eca>
>     Called Service Definition: (auto-attributes)
>     -----------------------------------
>     <service name="updateProductCategory" default-entity-name="ProductCategory" engine="simple"
> location="component://product/minilang/product/category/CategoryServices.xml" invoke="updateProductCategory" auth="true">
>         <description>Update an ProductCategory</description>
>         <auto-attributes include="pk" mode="IN" optional="false"/>
>         <auto-attributes include="nonpk" mode="IN" optional="true"/>
>         <override name="productCategoryTypeId" optional="false"/>
>     </service>
>
> *Scenario 1: *Invoking a service /duplicateProductCategory with set Operation /(that is defined using non-auto-attributes), from the return of the
> *same service as above* i.e. createProductCategory results in an error > Error in simple-method [Duplicate a ProductCategory
> [file:/home/clintu2/Downloads/git/integrin_enterprise/com/integrin/erp/erp-17.12/applications/product/minilang/product/category/CategoryServices.xml#duplicateProductCategory]]:
> Error running the simple-method: java.util.HashMap cannot be cast to org.apache.ofbiz.entity.GenericValuenull
>     SECA Definition:
>     -----------------------
> <eca service="createProductCategory" event="return">
>     <condition field-name="productCategoryId" operator="is-not-empty"/>
> <set field-name="productCategoryId" value="R${productCategoryId}" />
>     <set field-name="oldProductCategoryId" env-name="productCategoryId" />
>     <set field-name="duplicateContent" value="Y"/>
>     <set field-name="duplicateParentRollup" value="Y"/>
>     <set field-name="duplicateChildRollup" value="Y"/>
>     <set field-name="duplicateMembers" value="Y"/>
>     <set field-name="duplicateCatalogs" value="Y"/>
>     <set field-name="duplicateFeatureCategories" value="Y"/>
>     <set field-name="duplicateFeatureGroups" value="Y"/>
>     <set field-name="duplicateAttributes" value="Y"/>
>     <set field-name="duplicateRoles" value="Y"/>
>     <action service="duplicateProductCategory" mode="sync"/>
>     </eca>
>     Called Service Definition: (Non auto-attributes)
>     ---------------------------------
>  <service name="duplicateProductCategory" engine="simple"
> location="component://product/minilang/product/category/CategoryServices.xml" invoke="duplicateProductCategory" auth="true">
>         <description>Duplicate a Product Category using from oldProductCategoryId to a new productCategoryId</description>
>         <attribute name="productCategoryId" type="String" mode="IN" optional="false"/>
>         <attribute name="oldProductCategoryId" type="String" mode="IN" optional="false"/>
>         <attribute name="duplicateContent" type="String" mode="IN" optional="true"/>
>         <attribute name="duplicateParentRollup" type="String" mode="IN" optional="true"/>
>         <attribute name="duplicateChildRollup" type="String" mode="IN" optional="true"/>
>         <attribute name="duplicateMembers" type="String" mode="IN" optional="true"/>
>         <attribute name="duplicateCatalogs" type="String" mode="IN" optional="true"/>
>         <attribute name="duplicateFeatureCategories" type="String" mode="IN" optional="true"/>
>         <attribute name="duplicateFeatureGroups" type="String" mode="IN" optional="true"/>
>         <attribute name="duplicateAttributes" type="String" mode="IN" optional="true"/>
>         <attribute name="duplicateRoles" type="String" mode="IN" optional="true"/>
>     </service>
>
> *Result:*
> Scenario 1 succeeded
> image.png
>
> Scenaro 2 Failed
> image.png
>
> While researching the issue i came across the below thread, which suggests that the above  isssue is expected for XRPC and SOAP, but wasn't sure
> this is expected for SECA on service defined with non-auto-attributes
>
> http://ofbiz.135035.n4.nabble.com/Re-How-to-pass-org-apache-ofbiz-entity-GenericValue-using-XMLRPC-td4721139.html
>
Hi Sakthivel,

As long as you don't call a service through  XMLRPC or SOAP, there are no relations. You send use images, but they mainly don't get through with the
ASF MLs. 2 solution: you give links to these images or you send us the log with the error.

HTH

Jacques

Reply | Threaded
Open this post in threaded view
|

Re: 17.04.03 > Calling ECA Service with set operation on service without auto-attributes

Sakthivel Vellingiri
Thanks Jacques, i will take a closer look again, i had encountered a
similar error on another workflow and that ended up being a null error in
custom code, I have a hunch, this is probably an error in the custom code
as well, i will dig more into this; Sorry about the red herring.

regards


On Mon, Aug 10, 2020 at 10:26 AM Jacques Le Roux <
[hidden email]> wrote:

> Le 02/08/2020 à 05:06, Sakthivel Vellingiri a écrit :
> > Hi All, Any pointes are much appreciated.
> >
> > OFBiz Version : 17.04.03
> >
> > *Summary:*
> > I'm trying to use Service ECA on return of a Service method to invoke
> another Service method, i'm able to successfully call a service that is
> > defined using auto-attributes, However when i invoke a service that is
> defined using non-auto attributes i get an error message > Error running
> the
> > simple-method: java.util.HashMap cannot be cast to
> org.apache.ofbiz.entity.GenericValue, Is this an expected behavior or am i
> missing something?
> >
> > *Details:*
> > *    Scenario 1: *Successfully able to invoke a service
> /updateProductCategory/ with set operation (that is defined using
> auto-attributes), from the
> > return of service /createProductCategory/
> >     SECA Definition:
> >    -----------------------
> >     <eca service="createProductCategory" event="return">
> >     <condition field-name="productCategoryId" operator="is-not-empty"/>
> >     <set field-name="description" value="Updated" />
> >     <action service="updateProductCategory" mode="sync"/>
> >     </eca>
> >     Called Service Definition: (auto-attributes)
> >     -----------------------------------
> >     <service name="updateProductCategory"
> default-entity-name="ProductCategory" engine="simple"
> >
> location="component://product/minilang/product/category/CategoryServices.xml"
> invoke="updateProductCategory" auth="true">
> >         <description>Update an ProductCategory</description>
> >         <auto-attributes include="pk" mode="IN" optional="false"/>
> >         <auto-attributes include="nonpk" mode="IN" optional="true"/>
> >         <override name="productCategoryTypeId" optional="false"/>
> >     </service>
> >
> > *Scenario 1: *Invoking a service /duplicateProductCategory with set
> Operation /(that is defined using non-auto-attributes), from the return of
> the
> > *same service as above* i.e. createProductCategory results in an error >
> Error in simple-method [Duplicate a ProductCategory
> >
> [file:/home/clintu2/Downloads/git/integrin_enterprise/com/integrin/erp/erp-17.12/applications/product/minilang/product/category/CategoryServices.xml#duplicateProductCategory]]:
>
> > Error running the simple-method: java.util.HashMap cannot be cast to
> org.apache.ofbiz.entity.GenericValuenull
> >     SECA Definition:
> >     -----------------------
> > <eca service="createProductCategory" event="return">
> >     <condition field-name="productCategoryId" operator="is-not-empty"/>
> > <set field-name="productCategoryId" value="R${productCategoryId}" />
> >     <set field-name="oldProductCategoryId" env-name="productCategoryId"
> />
> >     <set field-name="duplicateContent" value="Y"/>
> >     <set field-name="duplicateParentRollup" value="Y"/>
> >     <set field-name="duplicateChildRollup" value="Y"/>
> >     <set field-name="duplicateMembers" value="Y"/>
> >     <set field-name="duplicateCatalogs" value="Y"/>
> >     <set field-name="duplicateFeatureCategories" value="Y"/>
> >     <set field-name="duplicateFeatureGroups" value="Y"/>
> >     <set field-name="duplicateAttributes" value="Y"/>
> >     <set field-name="duplicateRoles" value="Y"/>
> >     <action service="duplicateProductCategory" mode="sync"/>
> >     </eca>
> >     Called Service Definition: (Non auto-attributes)
> >     ---------------------------------
> >  <service name="duplicateProductCategory" engine="simple"
> >
> location="component://product/minilang/product/category/CategoryServices.xml"
> invoke="duplicateProductCategory" auth="true">
> >         <description>Duplicate a Product Category using from
> oldProductCategoryId to a new productCategoryId</description>
> >         <attribute name="productCategoryId" type="String" mode="IN"
> optional="false"/>
> >         <attribute name="oldProductCategoryId" type="String" mode="IN"
> optional="false"/>
> >         <attribute name="duplicateContent" type="String" mode="IN"
> optional="true"/>
> >         <attribute name="duplicateParentRollup" type="String" mode="IN"
> optional="true"/>
> >         <attribute name="duplicateChildRollup" type="String" mode="IN"
> optional="true"/>
> >         <attribute name="duplicateMembers" type="String" mode="IN"
> optional="true"/>
> >         <attribute name="duplicateCatalogs" type="String" mode="IN"
> optional="true"/>
> >         <attribute name="duplicateFeatureCategories" type="String"
> mode="IN" optional="true"/>
> >         <attribute name="duplicateFeatureGroups" type="String" mode="IN"
> optional="true"/>
> >         <attribute name="duplicateAttributes" type="String" mode="IN"
> optional="true"/>
> >         <attribute name="duplicateRoles" type="String" mode="IN"
> optional="true"/>
> >     </service>
> >
> > *Result:*
> > Scenario 1 succeeded
> > image.png
> >
> > Scenaro 2 Failed
> > image.png
> >
> > While researching the issue i came across the below thread, which
> suggests that the above  isssue is expected for XRPC and SOAP, but wasn't
> sure
> > this is expected for SECA on service defined with non-auto-attributes
> >
> >
> http://ofbiz.135035.n4.nabble.com/Re-How-to-pass-org-apache-ofbiz-entity-GenericValue-using-XMLRPC-td4721139.html
> >
> Hi Sakthivel,
>
> As long as you don't call a service through  XMLRPC or SOAP, there are no
> relations. You send use images, but they mainly don't get through with the
> ASF MLs. 2 solution: you give links to these images or you send us the log
> with the error.
>
> HTH
>
> Jacques
>
>