点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好
我们正在运行Sap commerce 1811,使用动态流程定义时,您可以创建如下的impEx:
INSERT_UPDATE DynamicProcessDefinition; 代码[unique = true]; 活性; 内容;
; 过程; 真实; "
<?xml version ='1.0'encoding ='utf-8'?>
...
";
这第一次运行正常,您获得版本0。第二次运行于版本1,但是,在版本2中,您从ImpExImportReader获得了AmbiguousItemException。 impEx为了更新动态流程定义是否错误?
我的示例基于此处的impEx文档: https://help。 hybris.com/1811/hcd/8c3065f186691014bdd09fa25ffa7e6a.html
顺便说一句,当从Backoffice进行更新时,它可以正常工作,并且该版本如预期那样发生碰撞,并且可以使用新版本。
更新:
如果我将impEx更改为
INSERT_UPDATE DynamicProcessDefinition; 代码[unique = true]; active [unique = true]; 版本[unique = true]; 内容;
; 过程; 真实; 4; "
<?xml version ='1.0'encoding ='utf-8'?>
...
";
它不会停留在AmbiguousItemException上,而是停留在:
DynamicProcessDefinitionModel()的验证失败,并显示消息"具有相同代码(进程)的内容已经存在。
那么.. Hybris/SAP Commerce是否不支持从impEx更新流程定义,或者我在这里做错了吗?
你好
我现在已经调试并找到了解决方案。 它结合了impEx处理引擎中使用的各种技巧来使其正常工作。
使用impEx首次插入动态流程定义后,由于SAP如何实现处理器,因此无法再再次使用这种方式。 严格不允许同一项目的多个实例直接与动态流程定义相抵触。 没有记录在任何地方。 我认为这是一个错误,他们可能会称其为功能。
我已经阅读了有关修饰符的文档并进行调试,以查看它们在引擎中采用的路线能够构造出可以正常工作的impEx。
您启用批处理模式。 这将禁用重复错误检查,因此您可以跳过模棱两可的项目异常。 现在,它将使用该代码查找所有旧版本的DynamicProcessDefinitions。 启用批处理模式时,不能使用INSERT_UPDATE。 您必须使用UPDATE。
为了只触发最新的更新而不必跟踪版本号,并让DynamicProcessDefinitions的默认拦截器执行所有繁重的工作,因为您还必须将活动标志设置为标头中的唯一字段。 这将滤除所有较旧的DynamicProcessDefinition,这些默认设置在被取代时将默认设置为false。
现在,它仅查找最近发送的动态流程定义,并且您将对此触发更新。 您不必指定版本,因为幕后的拦截器将自动为您完成所有操作。
我希望这对某人有帮助,因为我花了一些时间来解决这个问题……现在解决方案看起来很简单。
请注意,由于impEx通常的用法,语法可能会造成混淆 作品。 看起来我们正在更新某些内容,但实际上我们都是在隐式更新不相关的模型,因为已经存在的当前活动定义将被设置为非活动,并且我们将基于此更新的内容插入一个新版本并将其设置为活动 并从上一个活动定义获取版本增量。 这里发生了很多魔术,因此您将来可能不得不向新开发人员甚至是您自己解释几次。
谢谢,真的很有帮助。
对于我们的环境(同样是SAP Commerce 1811),我们不需要在impex中设置属性版本,因为它会在AbstractDynamicContentPrepareInterceptor.HistoricalContentCreator#incrementActiveModelVersion方法中抛出NPE
在本例中,有效的impim是:
一周热门 更多>