[ https://issues.apache.org/jira/browse/OFBIZ-4501?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13142972#comment-13142972 ]
Adrian Crum commented on OFBIZ-4501: ------------------------------------ Kiran, Thank you for working on this. I agree that the overuse of ECAs causes problems and makes the services difficult to troubleshoot. But removing them is going to be a tough sell because many in the community see it as a feature - they see it as a crude form of a workflow implementation. I have added my vote to this issue because I believe a lot of the ECAs should go away. It might help your cause to start a discussion on the dev mailing list and see if you can rally some more support for ECA removal. > Incorrect use of eca for create/updateShipment > ---------------------------------------------- > > Key: OFBIZ-4501 > URL: https://issues.apache.org/jira/browse/OFBIZ-4501 > Project: OFBiz > Issue Type: Bug > Components: product > Affects Versions: Release Branch 11.04, SVN trunk > Reporter: Kiran Gawde > Attachments: OFBIZ-4501-ModifiedCreateUpdateShipmentService.patch, > OFBIZ-4501-ModifiedCreateUpdateShipmentService.patch, > OFBIZ-4501-ShipmentServiceXml.patch, OFBIZ-4501-ShipmentServiceXml.patch, > OFBIZ-4501-ShipmentServiceXml.patch > > > createShipment service doesn't populate the facility and order info into > shipment. Instead it is handled by eca rules. This is wrong. ECA rules should > be used to update other objects or cause other actions and not update the > object that is being committed. This makes it difficult to traverse the code. > Can also cause bugs that are difficult troubleshoot. e.g: In this case, > facilities are populated in shipment by method > setShipmentSettingsFromPrimaryOrder, but eca rule checking for > originFacilityId gets executed before it is populated. Following eca rules > should be removed and instead the code should be added to > create/updateshipment methods. > <!-- if new originFacilityId or destinationFacilityId, get settings from > facilities --> > <eca service="createShipment" event="commit"> > <condition field-name="originFacilityId" operator="is-not-empty"/> > <action service="setShipmentSettingsFromFacilities" mode="sync"/> > </eca> > <eca service="createShipment" event="commit"> > <condition field-name="destinationFacilityId" > operator="is-not-empty"/> > <action service="setShipmentSettingsFromFacilities" mode="sync"/> > </eca> > <eca service="updateShipment" event="commit"> > <condition-field field-name="originFacilityId" operator="not-equals" > to-field-name="oldOriginFacilityId"/> > <condition field-name="originFacilityId" operator="is-not-empty"/> > <action service="setShipmentSettingsFromFacilities" mode="sync"/> > </eca> > <eca service="updateShipment" event="commit"> > <condition-field field-name="destinationFacilityId" > operator="not-equals" to-field-name="oldDestinationFacilityId"/> > <condition field-name="destinationFacilityId" > operator="is-not-empty"/> > <action service="setShipmentSettingsFromFacilities" mode="sync"/> > </eca> > <!-- if new primaryOrderId, get settings from order --> > <eca service="createShipment" event="commit"> > <condition field-name="primaryOrderId" operator="is-not-empty"/> > <action service="setShipmentSettingsFromPrimaryOrder" mode="sync"/> > </eca> > <eca service="updateShipment" event="commit"> > <condition-field field-name="primaryOrderId" operator="not-equals" > to-field-name="oldPrimaryOrderId"/> > <condition field-name="primaryOrderId" operator="is-not-empty"/> > <action service="setShipmentSettingsFromPrimaryOrder" mode="sync"/> > </eca> -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira