从Impex导入数据时,不会调用ValidateInterceptor

时间:2017-06-20 18:47:44

标签: validation e-commerce interceptor hybris

我创建了一个Interceptor来验证数据,当我从HMC创建新对象时,我可以看到数据正在验证并为错误数据抛出异常但是当我尝试从Imp-ex导入错误数据时获得验证并成功导入。传统模式已关闭。

impex.legacy.mode=false

$canadasalesArea=salesArea(salesOrg(uid),distributionChannel(uid[default=00]),division(uid[default=00]))
$canadastoreConfig=CanadaStoreConfiguration
insert_update BooleanConfigType;configuration(name);salesDistrict(name,uid)[unique=true];soldTo(uid)[unique=true];name(code,itemtype(code))[unique=true,allownull=true];value;$canadasalesArea[unique=true,allownull=true]
;$canadastoreConfig;;11001859;enableEndecaBasedAPI:ConfigTypeName;true

1 个答案:

答案 0 :(得分:2)

如果impex包含某些内容(例如 [forceWrite = true] [allownull = true] ),即使传统模式设置为false, 传统模式将用于导入,拦截器不会介入。

可以找到决定是否使用传统模式的整个逻辑 DefaultImportProcessor getHandlerForLine 会调用此方法。 enableLegacyFlagWhenLineIsUsingJaloOnlyFeatures 调用 ValueLine isUsingJaloOnlyFeatures ,即使虽然可以返回true impex.legacy.mode = false

我通过从impex [forceWrite = true] 中排除我的一个列来解决了一个类似问题 Hybris 5.5.1.0

如果从hac(hybris管理控制台)执行导入,还要确保未检查传统模式(设置)