2020-09-23 03:48发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好
我根据文档设置了6.6的踪迹
在构建时或在更新/初始化之后均没有错误。
我以内置用户之一的身份登录,并对电子商店中的商品添加了评论。
我以管理员身份登录到后台,并批准了审核。
然后以电子商店中的用户身份将商品添加到cnd单击结帐
升级不会触发,用户也不会添加到相关组中。
其他人有同样的问题吗?
我能够通过更新 AddUserToUserGroupRAOAction 以覆盖 performActionInternal(RuleActionContext)而不是已弃用的 performAction(RuleActionContext,Map )。
AddUserToUserGroupRAOAction
performActionInternal(RuleActionContext)
performAction(RuleActionContext,Map )
下面提供了完整的源代码:
软件包de.hybris.promotionenginetrail.rule.action.impl; 导入静态com.google.common.base.Preconditions.checkArgument; 导入静态de.hybris.platform.ruleengineservices.util.RAOConstants.VALUE_PARAM; 导入静态org.apache.commons.collections.MapUtils.isNotEmpty; 导入de.hybris.platform.ruleengineservices.rao.CartRAO; 导入de.hybris.platform.ruleengineservices.rao.ChangeUserGroupRAO; 导入de.hybris.platform.ruleengineservices.rao.RuleEngineResultRAO; 导入de.hybris.platform.ruleengineservices.rao.UserGroupRAO; 导入de.hybris.platform.ruleengineservices.rao.UserRAO; 导入de.hybris.platform.ruleengineservices.rule.evaluation.RuleActionContext; 导入de.hybris.platform.ruleengineservices.rule.evaluation.actions.AbstractRuleExecutableSupport; 导入de.hybris.platform.ruleengineservices.rule.evaluation.actions.RAOAction; 导入java.util.Map; 公共类AddUserToUserGroupRAOAction扩展AbstractRuleExecutableSupport实现RAOAction { @Override 受保护的布尔型performActionInternal(RuleActionContext上下文){ 字符串userGroupCode = context.getParameter(VALUE_PARAM,String.class); 最后的CartRAO cartRao = context.getCartRao(); 最终RuleEngineResultRAO结果= context.getRuleEngineResultRao(); 最后的ChangeUserGroupRAO changeUserGroupRAO = new ChangeUserGroupRAO(); getRaoUtils()。addAction(cartRao,changeUserGroupRAO); changeUserGroupRAO.setUserGroupId(userGroupCode); result.getActions()。add(changeUserGroupRAO); 最终的UserGroupRAO userGroupRAO =新的UserGroupRAO(); userGroupRAO.setId(userGroupCode); 最终的UserRAO用户= cartRao.getUser(); user.getGroups()。add(userGroupRAO); setRAOMetaData(context,changeUserGroupRAO); context.insertFacts(context,changeUserGroupRAO,userGroupRAO); context.updateFacts(context,user); 返回true; } }
我找到了解决方案,方法是使用调试器并将断点放在 AddUserToUserGroupRAOAction 超类 AbstractRuleExecutableSupport 中。 将评论项目添加到购物车时,我发现调用了 performAction(RuleActionContext)方法,而不是已弃用的 performAction(RuleActionContext,Map )方法
AbstractRuleExecutableSupport
performAction(RuleActionContext)
除了一些保留 performAction(RuleActionContext)方法的书外,还调用了 performActionInternal(RuleActionContext)方法。 进一步的检查显示,除 AddUserToUserGroupRAOAction 之外, AbstractRuleExecutableSupport 的所有子类都将覆盖此方法。 这有力的证据表明 AddUserToUserGroupRAOAction 需要重写所述方法而不是已弃用的方法。
实际上,在更改 AddUserToUserGroupRAOAction 以覆盖 performActionInternal(RuleActionContext)而不是 performAction(RuleActionContext,Map )后,确实是问题 解决了。
另一个有趣的发现是,当我使用两个动作时,例如 无论是"将客户添加到组"还是"购物车上的折扣百分比",则仅在该规则的第一项操作中应用折扣百分比。 当我将"将客户添加到组"操作放在"购物车折扣百分比"操作之前时,则更新购物车时不应用折扣。
你好Stelios,
我们可能需要更多有关此的信息。
促销创建后是否发布了?
请确保在Rule Engine-> Drools Rules中可以找到reviewed_product_add_customer_to_group。 如果是这样,请在此处发布。
请确保将在跟踪中创建的所有类都添加到适当的* -spring.xml文件中,并生成CustomerReviewRAO类,UserRAO类具有新字段,生成RuleBasedAddUserToUserGroupAction项类型,并验证PromotionEnginetrail/资源/impex/projectdata-promotiontrail.impex文件已成功导入
亲切的问候,
这是我在更新购物车后在Tomcat控制台日志中看到的内容:
信息| jvm 1 | 主| 2018/03/21 15:44:07.654 | INFO [hybrisHTTP32] [AbstractOrderRaoPopulator]订单折扣列表为空,跳过转换 信息| jvm 1 | 主| 2018/03/21 15:44:07.655 | INFO [hybrisHTTP32] [DefaultPlatformRuleEngineService]添加命令[session.fireAllRules();] 信息| jvm 1 | 主| 2018/03/21 15:44:07.655 | INFO [hybrisHTTP32] [DefaultPlatformRuleEngineService]处置会话:KieSession [6]
谢谢Bartosz,
是,规则已发布,没有错误。 这是Drules代码:
软件包de.hybris.platform.droolsruleengine;
导入de.hybris.platform.droolsruleengineservices.compiler.impl.DefaultDroolsRuleActionContext; 导入de.hybris.platform.ruleengineservices.rao.CartRAO; 导入de.hybris.platform.ruleengineservices.rao.UserRAO; 导入de.hybris.platform.ruleengineservices.rrd.RuleConfigurationRRD; 导入de.hybris.platform.promotionenginetrail.rao.CustomerReviewRAO; 导入de.hybris.platform.ruleengineservices.rao.RuleEngineResultRAO; 导入de.hybris.platform.ruleengineservices.rao.WebsiteGroupRAO; 导入java.util.Map; 导入de.hybris.platform.ruleengineservices.rao.OrderEntryRAO; 导入de.hybris.platform.ruleengineservices.rao.ProductRAO;
global de.hybris.platform.ruleengineservices.rule.evaluation.RuleExecutableAction addUserToUserGroupAction;
query rule_f1ae1a09c409405cad753deea366d9dd_query(CustomerReviewRAO $ v6,UserRAO $ v7,CartRAO $ v1,RuleEngineResultRAO $ v2,WebsiteGroupRAO $ v3,ProductRAO $ v4,OrderEntryRAO $ v5)($ v1:= CartRAO()和$ 2 和$ v3:= WebsiteGroupRAO(id ==" electronicsPromoGrp")和($ v4:= ProductRAO()和$ v5:= OrderEntryRAO(产品== $ v4)和$ v6:= CustomerReviewRAO(产品== $ v4)和 $ v7:= UserRAO(customerReviews包含$ v6,id不在(" anonymous")中)和$ v1:= CartRAO(条目包含$ v5,用户== $ v7))))
规则" f1ae1a09-c409-405c-ad75-3deea366d9dd" @ruleCode(" reviewed_product_add_customer_to_group")@moduleName(" promotions-module")方言" mvel"显着性500存在时(RuleConfigurationRRD(ruleCode ==" reviewed_product_add_customer_to_group") 和(存在(CartRAO())和存在(RuleEngineResultRAO())和存在(WebsiteGroupRAO(id ==" electronicsPromoGrp"))和($ rao_v4:= ProductRAO()和$ rao_v5:= OrderEntryRAO(product == $ rao_v4) 和$ rao_v6:= CustomerReviewRAO(产品== $ rao_v4)和$ rao_v7:= UserRAO(customerReviews包含$ rao_v6,id不在(" anonymous")中)并且存在(CartRAO(条目包含$ rao_v5,用户== $ rao_v7) )))累积(rule_f1ae1a09c409405cad753deea366d9dd_query($ v6,$ v7,$ v1,$ v2,$ v3,$ v4,$ v5;); $ v6_set:collectSet($ v6),$ v7_set:collectSet($ v7),$ v1_set :collectSet($ v1),$ v2_set:collectSet($ v2),$ v3_set:collectSet($ v3),$ v4_set:collectSet($ v4),$ v5_set:collectSet($ v5),$ result_count:count(1) )eval($ result_count> 0)然后映射variabl es = [" de.hybris.platform.promotionenginetrail.rao.CustomerReviewRAO":$ v6_set," de.hybris.platform.ruleengineservices.rao.UserRAO":$ v7_set," de.hybris.platform.ruleengineservices.rao.CartRAO" :$ v1_set," de.hybris.platform.ruleengineservices.rao.RuleEngineResultRAO":$ v2_set," de.hybris.platform.ruleengineservices.rao.WebsiteGroupRAO":$ v3_set," de.hybris.platform.ruleengineservices.rao.ProductRAO ":$ v4_set," de.hybris.platform.ruleengineservices.rao.OrderEntryRAO":$ v5_set]; addUserToUserGroupAction.executeAction(new DefaultDroolsRuleActionContext(variables,kcontext),[" stackable":Boolean.TRUE," value_uuid":" fd7412ad-c433-43a2-89e8-086852673814"," value":" reviewedProductsCustomerGroup"]); 结束
有人可以在上述日志消息中看到相关问题吗? 我不能 是否还有其他相关日志要检查?
最多设置5个标签!
我能够通过更新
AddUserToUserGroupRAOAction
以覆盖performActionInternal(RuleActionContext)
而不是已弃用的performAction(RuleActionContext,Map )
。下面提供了完整的源代码:
我找到了解决方案,方法是使用调试器并将断点放在
AddUserToUserGroupRAOAction
超类AbstractRuleExecutableSupport
中。 将评论项目添加到购物车时,我发现调用了performAction(RuleActionContext)
方法,而不是已弃用的performAction(RuleActionContext,Map)
方法除了一些保留
performAction(RuleActionContext)
方法的书外,还调用了performActionInternal(RuleActionContext)
方法。 进一步的检查显示,除AddUserToUserGroupRAOAction
之外,AbstractRuleExecutableSupport
的所有子类都将覆盖此方法。 这有力的证据表明AddUserToUserGroupRAOAction
需要重写所述方法而不是已弃用的方法。实际上,在更改
AddUserToUserGroupRAOAction
以覆盖performActionInternal(RuleActionContext)
而不是performAction(RuleActionContext,Map)
后,确实是问题 解决了。另一个有趣的发现是,当我使用两个动作时,例如 无论是"将客户添加到组"还是"购物车上的折扣百分比",则仅在该规则的第一项操作中应用折扣百分比。 当我将"将客户添加到组"操作放在"购物车折扣百分比"操作之前时,则更新购物车时不应用折扣。
你好Stelios,
我们可能需要更多有关此的信息。
促销创建后是否发布了?
请确保在Rule Engine-> Drools Rules中可以找到reviewed_product_add_customer_to_group。 如果是这样,请在此处发布。
请确保将在跟踪中创建的所有类都添加到适当的* -spring.xml文件中,并生成CustomerReviewRAO类,UserRAO类具有新字段,生成RuleBasedAddUserToUserGroupAction项类型,并验证PromotionEnginetrail/资源/impex/projectdata-promotiontrail.impex文件已成功导入
亲切的问候,
这是我在更新购物车后在Tomcat控制台日志中看到的内容:
谢谢Bartosz,
是,规则已发布,没有错误。 这是Drules代码:
软件包de.hybris.platform.droolsruleengine;
导入de.hybris.platform.droolsruleengineservices.compiler.impl.DefaultDroolsRuleActionContext; 导入de.hybris.platform.ruleengineservices.rao.CartRAO; 导入de.hybris.platform.ruleengineservices.rao.UserRAO; 导入de.hybris.platform.ruleengineservices.rrd.RuleConfigurationRRD; 导入de.hybris.platform.promotionenginetrail.rao.CustomerReviewRAO; 导入de.hybris.platform.ruleengineservices.rao.RuleEngineResultRAO; 导入de.hybris.platform.ruleengineservices.rao.WebsiteGroupRAO; 导入java.util.Map; 导入de.hybris.platform.ruleengineservices.rao.OrderEntryRAO; 导入de.hybris.platform.ruleengineservices.rao.ProductRAO;
global de.hybris.platform.ruleengineservices.rule.evaluation.RuleExecutableAction addUserToUserGroupAction;
query rule_f1ae1a09c409405cad753deea366d9dd_query(CustomerReviewRAO $ v6,UserRAO $ v7,CartRAO $ v1,RuleEngineResultRAO $ v2,WebsiteGroupRAO $ v3,ProductRAO $ v4,OrderEntryRAO $ v5)($ v1:= CartRAO()和$ 2 和$ v3:= WebsiteGroupRAO(id ==" electronicsPromoGrp")和($ v4:= ProductRAO()和$ v5:= OrderEntryRAO(产品== $ v4)和$ v6:= CustomerReviewRAO(产品== $ v4)和 $ v7:= UserRAO(customerReviews包含$ v6,id不在(" anonymous")中)和$ v1:= CartRAO(条目包含$ v5,用户== $ v7))))
规则" f1ae1a09-c409-405c-ad75-3deea366d9dd" @ruleCode(" reviewed_product_add_customer_to_group")@moduleName(" promotions-module")方言" mvel"显着性500存在时(RuleConfigurationRRD(ruleCode ==" reviewed_product_add_customer_to_group") 和(存在(CartRAO())和存在(RuleEngineResultRAO())和存在(WebsiteGroupRAO(id ==" electronicsPromoGrp"))和($ rao_v4:= ProductRAO()和$ rao_v5:= OrderEntryRAO(product == $ rao_v4) 和$ rao_v6:= CustomerReviewRAO(产品== $ rao_v4)和$ rao_v7:= UserRAO(customerReviews包含$ rao_v6,id不在(" anonymous")中)并且存在(CartRAO(条目包含$ rao_v5,用户== $ rao_v7) )))累积(rule_f1ae1a09c409405cad753deea366d9dd_query($ v6,$ v7,$ v1,$ v2,$ v3,$ v4,$ v5;); $ v6_set:collectSet($ v6),$ v7_set:collectSet($ v7),$ v1_set :collectSet($ v1),$ v2_set:collectSet($ v2),$ v3_set:collectSet($ v3),$ v4_set:collectSet($ v4),$ v5_set:collectSet($ v5),$ result_count:count(1) )eval($ result_count> 0)然后映射variabl es = [" de.hybris.platform.promotionenginetrail.rao.CustomerReviewRAO":$ v6_set," de.hybris.platform.ruleengineservices.rao.UserRAO":$ v7_set," de.hybris.platform.ruleengineservices.rao.CartRAO" :$ v1_set," de.hybris.platform.ruleengineservices.rao.RuleEngineResultRAO":$ v2_set," de.hybris.platform.ruleengineservices.rao.WebsiteGroupRAO":$ v3_set," de.hybris.platform.ruleengineservices.rao.ProductRAO ":$ v4_set," de.hybris.platform.ruleengineservices.rao.OrderEntryRAO":$ v5_set]; addUserToUserGroupAction.executeAction(new DefaultDroolsRuleActionContext(variables,kcontext),[" stackable":Boolean.TRUE," value_uuid":" fd7412ad-c433-43a2-89e8-086852673814"," value":" reviewedProductsCustomerGroup"]); 结束
有人可以在上述日志消息中看到相关问题吗? 我不能 是否还有其他相关日志要检查?
一周热门 更多>