使用DefaultItemModificationHistoryService的SLD问题

2020-09-20 00:50发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我们刚刚启用了SLD,除删除内容外,大多数功能似乎都可以正常运行。 从Backoffice删除内容时,它将在bin \ ext-backoffice \ backoffice \ web \ webroot \ WEB-INF \ classes \ com \ hybris \ backoffice \ cockpitng \ dataaccess \ facades \ object \ savedvalues \ DefaultItemModificationHistoryService.class

在这种方法中:

 受保护的void logModifications(ItemModel模型,ItemModificationInfo ModifyInfo){
          Map  originalValues = new HashMap();
          Map  modifiedValues = new HashMap();
          迭代器var6 = ModifyInfo.getModifiedAttributes()。iterator();
 
          while(var6.hasNext()){
              字符串属性=(String)var6.next();
              originalValues.put(属性,this.toPersistenceLayer(modificationInfo.getOriginalValue(attribute),ModifyInfo.isLocalized(attribute))));
              modifiedValues.put(属性,this.toPersistenceLayer(modificationInfo.getModifiedValue(属性),modificationInfo.isLocalized(属性)));
          }
 
          如果(!modifiedValues.isEmpty()){
              如果(modificationInfo.isNew()){
                  JaloConnection.getInstance()。logItemCreation(model.getPk(),modifiedValues);
              }其他{
                  JaloConnection.getInstance()。logItemModification(model.getPk(),modifiedValues,originalValues,false);
              }
          }否则,如果(this.getModelService()。isRemoved(model)){
              对象DeleteObject = this.getModelService()。getSource(model);
              JaloConnection.getInstance()。logItemRemoval((Item)deletedObject,false);
          }
 
      }

  

注意isRemoved调用。 在那里完成:Object DeleteObject = this.getModelService()。getSource(model);

这看起来像这样:

  public  T getSource(对象模型){
          ServicesUtil.validateParameterNotNull(model,"参数'模型'为空!");
          T ret = this.getModelConverterByModel(model).getSource(model);
          如果(ret == null){
              抛出新的IllegalStateException(" model" + model +"没有源");
          }其他{
              返回ret
          }
      }

  

在启用SLD时,它将引发IllegalStateException。 为了使用SLD,我们是否需要启用更多功能,而不仅仅是文档中所说的persistence.legacy.mode = false?

modelService中有一个方法,该方法表示getPersistenceSource,该方法似乎可以与SLD一起使用,但getSource似乎不起作用。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我们刚刚启用了SLD,除删除内容外,大多数功能似乎都可以正常运行。 从Backoffice删除内容时,它将在bin \ ext-backoffice \ backoffice \ web \ webroot \ WEB-INF \ classes \ com \ hybris \ backoffice \ cockpitng \ dataaccess \ facades \ object \ savedvalues \ DefaultItemModificationHistoryService.class

在这种方法中:

 受保护的void logModifications(ItemModel模型,ItemModificationInfo ModifyInfo){
          Map  originalValues = new HashMap();
          Map  modifiedValues = new HashMap();
          迭代器var6 = ModifyInfo.getModifiedAttributes()。iterator();
 
          while(var6.hasNext()){
              字符串属性=(String)var6.next();
              originalValues.put(属性,this.toPersistenceLayer(modificationInfo.getOriginalValue(attribute),ModifyInfo.isLocalized(attribute))));
              modifiedValues.put(属性,this.toPersistenceLayer(modificationInfo.getModifiedValue(属性),modificationInfo.isLocalized(属性)));
          }
 
          如果(!modifiedValues.isEmpty()){
              如果(modificationInfo.isNew()){
                  JaloConnection.getInstance()。logItemCreation(model.getPk(),modifiedValues);
              }其他{
                  JaloConnection.getInstance()。logItemModification(model.getPk(),modifiedValues,originalValues,false);
              }
          }否则,如果(this.getModelService()。isRemoved(model)){
              对象DeleteObject = this.getModelService()。getSource(model);
              JaloConnection.getInstance()。logItemRemoval((Item)deletedObject,false);
          }
 
      }

  

注意isRemoved调用。 在那里完成:Object DeleteObject = this.getModelService()。getSource(model);

这看起来像这样:

  public  T getSource(对象模型){
          ServicesUtil.validateParameterNotNull(model,"参数'模型'为空!");
          T ret = this.getModelConverterByModel(model).getSource(model);
          如果(ret == null){
              抛出新的IllegalStateException(" model" + model +"没有源");
          }其他{
              返回ret
          }
      }

  

在启用SLD时,它将引发IllegalStateException。 为了使用SLD,我们是否需要启用更多功能,而不仅仅是文档中所说的persistence.legacy.mode = false?

modelService中有一个方法,该方法表示getPersistenceSource,该方法似乎可以与SLD一起使用,但getSource似乎不起作用。

付费偷看设置
发送
2条回答
葫芦娃快救爷爷
1楼 · 2020-09-20 01:21.采纳回答

嗨,

这是一个已知问题,它将在下一版本中(部分)得到修复。 通常,SLD不支持删除操作,并且如果启用了SLD,则删除将不会持久。

据我所知,在这种情况下,没有实现启用的SLD的功能奇偶校验的截止日期。

如果您出于记录目的记录了删除,则可以使用新的GDPR注释框架。 如果这样做是为了允许回滚(重新存储已删除的数据),那么将是不可能的。

干杯, Wojtek

SAP浪
2楼-- · 2020-09-20 01:43

顺便说一句,禁用SLD可使删除工作,然后Backoffice的行为将达到预期。 因此,我们现在可能会这样做,但是能够使用SLD会很好。

一周热门 更多>