电子商务网站建设与维护管理,wordpress 网站的占有,做素材网站赚钱吗,怎么做网站播放器OFBiz中有两种类型的ECA规则#xff1a;Service Event Condition Actions(SECAs)和Entity Event Condition Actions(EECAs)。
SECA
对于SECA#xff0c;触发器(事件)是一个将调用的服务。一个条件可能是如果一个参数等于某个值(条件是可选的)#xff0c;动作是调用另一个服…OFBiz中有两种类型的ECA规则Service Event Condition Actions(SECAs)和Entity Event Condition Actions(EECAs)。
SECA
对于SECA触发器(事件)是一个将调用的服务。一个条件可能是如果一个参数等于某个值(条件是可选的)动作是调用另一个服务。 SECA定义在与服务定义相同的目录中(servicedef)。在名为secas.xml文件中。 研究一下applications\order\servicedef\secas.xml中既存的SECA我们可以看到一个简单的ECA --------------------------------------------------- eca servicechangeOrderStatus eventcommit run-on-errorfalse condition field-namestatusId operatorequals valueORDER_CANCELLED/ action servicereleaseOrderPayments modesync/ /eca --------------------------------------------------- 当changeOrderStatus事务将要提交时框架执行一个检查来看事件是否有任何ECA。如果有并且参数statusId是 ORDER_CANCELLED然后releaseOrderPayments服务同步运行。 更普遍的SECA在commit或return上触发然而在服务生命周期中的下面任何阶段事件都是可能的 · auth——认证之前 · in-validate——IN参数检查之前 · out-validate——OUT参数检查之前 · invoke——服务调用之前 · commit——事务提交之前 · return——服务返回之前 · global-commit · global-rollback 变量 global-commit和 global-rollback有一点不同。如果服务是一个事务的一部分它们仅在回滚后或者提交的两个阶段(JTA实现)间运行。 也有两个值默认为false的特殊属性 · run-on-failure · run-on-error 如果你想在尽管失败或者错误时SECA运行可以设置为true。失败与错误是相同的事物除了它不代表需要回滚的情况。 需要注意的是如果需要传递到触发服务的参数对动作服务是有效的。触发服务OUT参数对动作服务也是有效的。 在组件使用SECA之前组件必须知道ECA服务资源的位置 service-resource typeeca loadermain locationservicedef/secas.xml/ 在组件的 ofbiz-component.xml文件中存在的 service-resource元素下面必须添加这一行。 EECA 对于EECA事件是在一个实体上的一个操作动作是将要调用的服务。 EECA定义在与实体定义(entitydef)相同的目录中在名为eecas.xml的文件中。 当它们可能不必要是初始化实体上的一个操作的一个服务时使用它们或者你可能希望操作该实体上的服务的什么参数都是没有关系的。 打开applications\product\entitydef目录的eecas.xml文件并查看第一个eca元素 --------------------------------------------------- eca entityProduct operationcreate-store eventreturn condition field-nameautoCreateKeywords operatornot-equals valueN/ action serviceindexProductKeywords modesync value-attrproductInstance/ /eca --------------------------------------------------- 该ECA确保一旦Product记录上的任何创建或更新操作碑提交只要该字段的autoCreateKeywords字段不是NindexProductKeywords服务将自动同步调用。 操作可以是下面任何自我说明的操作 · create · store · remove · find · create-store (create or store/update) · create-remove · store-remove · create-store-remove · any return事件是至此EECA使用最多的事件。但也存在 validate, run, cache-check,cache-put 和 cache-clear事件。也有run-on-error属性。 在组件中使用EECA之前组件必须知道eca 实体资源的位置 entity-resource typeeca loadermain locationentitydef/eecas.xml/ 必须在ofbiz-component.xml文件的既存entity-resource元素的下面添加这一行。 注意ECA常常公开发现人们在说谎(catch people out)。因为在代码中触发器服务中没有显式的流程它们可能很难调试。调试时常看看日志。当一个ECA触发了日志中就会添加一条来通知这个触发和动作。