后台无法找到操作定义

2020-08-18 09:07发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)此问题在版本18.11.4中发生...

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

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


此问题在版本18.11.4中发生,而在18.08中未发生问题

我正在尝试在产品座舱透视图中向产品列表视图添加简单的操作。 后台框架找不到操作定义。

这是我到目前为止所做的。

我创建了动作定义,并将其放入/my-backoffice-extension/backoffice/resources/widgets/actions/generateartiklepassaction

  
 
       GenerateArtiklePassAction 
      为选定产品生成Artikle Pass 
       danielv 
       0.1 
 
       de.frutarom.backoffice.widgets.actions.artiklepass.GenerateArtiklePassAction 
 
 
       java.util.Collection 
 
       icons/icon_action_artiklepass_default.png 
       icons/icon_action_artiklepass_hover.png 
       icons/icon_action_artiklepass_disabled.png 
 
 
  




  

我创建了动作处理程序类,并将其放在myextension/backoffice/src/...下的src文件夹中。

 公共类GenerateArtiklePassAction实现CockpitAction  {
 
      @资源
      私人ArtiklePassService artiklePassService;
 
      @资源
      public ObjectFacade objectFacade;
 
      @Override
      public ActionResult  perform(ActionContext  actionContext){
          List  ctxProducts = this.getDataAsCollection(actionContext);
          ctxProducts.stream()。forEach(artiklePassService :: generateArtiklePassForProduct);
          返回新的ActionResult(ActionResult.SUCCESS);
      }
 
      @Override
      public boolean canPerform(ActionContext  ctx){
 
          如果(ctx.getData()== null){
              返回false;
          }否则,如果(ctx.getData()instanceof Collection){
              集合selectedItems =(Collection)ctx.getData();
              ObjectFacadeOperationResult reloadResult = this.getObjectFacade()。reload(selectedItems);
              集合refreshedItems = reloadResult.getSuccessfulObjects();
              返回isCollectionReady(refreshedItems);
          }其他{
             返回!getObjectFacade()。isNew(ctx.getData());
          }
      }
 
      私人List  getDataAsCollection(ActionContext  ctx){
          List  ctxObjects = new ArrayList();
          if(ctx.getData()instanceof Collection){
              ctxObjects.addAll((Collection )ctx.getData());
          }其他{
              ctxObjects.add((ProductModel)ctx.getData());
          }
 
          返回ctxObjects;
      }
 
      私有布尔值isCollectionReady(Collection 集合){
          返回CollectionUtils.isNotEmpty(collection)&& collection.stream()。noneMatch(getObjectFacade():: isNew);
      }
 
      @Override
      public boolean needsConfirmation(ActionContext  ctx){
          返回true;
      }
 
      @Override
      公共字符串getConfirmationMessage(ActionContext  ctx){
          返回ctx.getLabel(" artiklepass.confirm");
      }
 
      公共ArtiklePassService getArtiklePassService(){
          返回artiklePassService;
      }
 
      公共无效setArtiklePassService(ArtiklePassService artiklePassService){
          this.artiklePassService = artiklePassService;
      }
 
      公共ObjectFacade getObjectFacade(){
          返回objectFacade;
      }
 
      公共无效setObjectFacade(ObjectFacade objectFacade){
          this.objectFacade = objectFacade;
      }
  }
 


  
 

我在my-backoffice-extension/resourcces/my-backoffice-extension-backoffice-config.xml中创建了ui配置

  <?xml version =" 1.0" encoding =" UTF-8" standalone =" yes"?>
 
  
 
      <!-应在此处提供frutarombackoffice UI配置->
 
      
          
              
                   actiongroup.common 
                  
              
          
      
 
 
      
          
              
                   actiongroup.common 
                  
              
          
      
 
      
          
              
                   actiongroup.common 
                  
              
          
      
 
  


  

我可以看到正在生成my-backoffice-extension_bof.jar,如果打开它,可以看到我的动作定义,也可以看到处理程序类。

我已经尝试过多次刷新F4菜单中的后台办公配置。

我总是得到相同的结果。 操作按钮未显示,我在日志中得到警告:

  WARN [hybrisHTTP1] [Action]找不到代码[de.frutarom.cockpitng.action.generateartiklepass]的动作定义


  

作为一个有趣的事实,对于OOTB操作(例如"运行cronjob")也显示了相同的警告,并且这些操作不可见,这使我认为这是一个后台错误。

  WARN [hybrisHTTP1] [Action]找不到代码[com.hybris.cockpitng.action.runcronjob]的动作定义
      WARN [hybrisHTTP1] [Action]找不到代码[com.hybris.cockpitng.action.abortcronjob]的动作定义
      WARN [hybrisHTTP1] [Action]找不到代码[de.hybris.platform.platformbackoffice.actions.deletecronjoblogs.DeleteCronJobLogsAction]的动作定义

  

替代文字

关于如何进行这项工作的任何建议?

(54.3 kB)