You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ofbiz.apache.org by Jeremy Olmstead <jo...@gmail.com> on 2010/11/03 17:21:53 UTC

Modify an ECA

I want to modify an existing ECA by adding a condition that currently
doesn't exist, without modifying the base code.  Is this possible?  What I
attempted didn't work.  First I modified the ofbiz-component.xml file in my
hot-deploy extension of the existing app to include the service-resource
location.  Then I created the definition exactly as it was in the original
xml file with the addition of a new condition.  It's still firing the action
even when my new condition is not true.  See below for relevant code.

Original ECA definition
<eca service="createShipmentReceipt" event="commit">
    <action service="createAcctgTransForShipmentReceipt" mode="sync"/>
</eca>

Custom ECA definition in hot-deploy
<eca service="createShipmentReceipt" event="commit">
    <condition field-name="orderItemTypeId" operator="not-equals"
value="SUPPLIES_ORDER_ITEM"/>
    <action service="createAcctgTransForShipmentReceipt" mode="sync"/>
</eca>

Regards,
Jeremy

Re: Modify an ECA

Posted by Scott Gray <sc...@hotwaxmedia.com>.
Hi Jeremy,

You can't really override an ECA definition but you could override the service "createAcctgTransForShipmentReceipt" and place the additional condition in a new implementation.
So basically you would:
1. Define a new service called createAcctgTransForShipmentReceipt that points to a new custom implementation
2. Define a service that points to the existing implementation, maybe ofbizCreateAcctgTransForShipmentReceipt
3. Include your condition in the new implementation for #1, if it passes then call #2

Regards
Scott

HotWax Media
http://www.hotwaxmedia.com

On 4/11/2010, at 5:21 AM, Jeremy Olmstead wrote:

> I want to modify an existing ECA by adding a condition that currently
> doesn't exist, without modifying the base code.  Is this possible?  What I
> attempted didn't work.  First I modified the ofbiz-component.xml file in my
> hot-deploy extension of the existing app to include the service-resource
> location.  Then I created the definition exactly as it was in the original
> xml file with the addition of a new condition.  It's still firing the action
> even when my new condition is not true.  See below for relevant code.
> 
> Original ECA definition
> <eca service="createShipmentReceipt" event="commit">
>    <action service="createAcctgTransForShipmentReceipt" mode="sync"/>
> </eca>
> 
> Custom ECA definition in hot-deploy
> <eca service="createShipmentReceipt" event="commit">
>    <condition field-name="orderItemTypeId" operator="not-equals"
> value="SUPPLIES_ORDER_ITEM"/>
>    <action service="createAcctgTransForShipmentReceipt" mode="sync"/>
> </eca>
> 
> Regards,
> Jeremy


Re: Modify an ECA

Posted by BJ Freeman <bj...@free-man.net>.
the general rule is only one name can exist within a group.
Since ECA are from the service engine if you load one then another ECA 
with both will executed as they are loaded, if I remember correctly.
if you want to modify The ECA I suggest two ways
1) remove the ECA from the core in the ofbiz-component.xml then use the 
hot-deploy
2) add a new ECA file with your modes then change the 
ofbiz-component.xml to point to that one.

both ways will require to update the ofbiz-component.xml if you do an 
update.

=========================
BJ Freeman
Strategic Power Office with Supplier Automation  <http://www.businessesnetwork.com/automation/viewforum.php?f=52>
Specialtymarket.com  <http://www.specialtymarket.com/>
Systems Integrator-- Glad to Assist

Chat  Y! messenger: bjfr33man


Jeremy Olmstead sent the following on 11/3/2010 9:21 AM:
> I want to modify an existing ECA by adding a condition that currently
> doesn't exist, without modifying the base code.  Is this possible?  What I
> attempted didn't work.  First I modified the ofbiz-component.xml file in my
> hot-deploy extension of the existing app to include the service-resource
> location.  Then I created the definition exactly as it was in the original
> xml file with the addition of a new condition.  It's still firing the action
> even when my new condition is not true.  See below for relevant code.
>
> Original ECA definition
> <eca service="createShipmentReceipt" event="commit">
>      <action service="createAcctgTransForShipmentReceipt" mode="sync"/>
> </eca>
>
> Custom ECA definition in hot-deploy
> <eca service="createShipmentReceipt" event="commit">
>      <condition field-name="orderItemTypeId" operator="not-equals"
> value="SUPPLIES_ORDER_ITEM"/>
>      <action service="createAcctgTransForShipmentReceipt" mode="sync"/>
> </eca>
>
> Regards,
> Jeremy
>