工作流程激活脚本未触发

2020-09-06 16:20发布

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

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


我正在使用hybris 6.7版并创建一个新的自定义工作流程,该想法是在每次创建新类型的新实例时触发该工作流程。 在工作流程的POC中,在bc2_acc配方中,我创建了新的类型代码和WorkflowTemplate。

这是创建工作流程模板的提示

  INSERT_UPDATE WorkflowTemplate; 代码[unique = true]; 名称[lang = zh]; 所有者(uid);  description [lang = en]; 激活脚本
                                ;  PlayerHireWorkFlow; 雇用新球员; 管理员; 球员租用工作流程的模板;  " action.equals('create')&&
  ((de.hybris.platform.servicelayer.type.TypeService)Registry.getApplicationContext()。getBean('typeService'))。isAssignableFrom('Player',itemType.getCode())"
  

如果我使用 workflowProcessingService.startWorkflow(workflow); 命令触发一个工作流,那么该脚本将很完美。

我在 DefaultScriptEvaluationService.evaluateActivationScripts 方法上放置了一个breackpoint,但是在创建新项目时从未调用过。

缺少什么吗?

谢谢

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

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


我正在使用hybris 6.7版并创建一个新的自定义工作流程,该想法是在每次创建新类型的新实例时触发该工作流程。 在工作流程的POC中,在bc2_acc配方中,我创建了新的类型代码和WorkflowTemplate。

这是创建工作流程模板的提示

  INSERT_UPDATE WorkflowTemplate; 代码[unique = true]; 名称[lang = zh]; 所有者(uid);  description [lang = en]; 激活脚本
                                ;  PlayerHireWorkFlow; 雇用新球员; 管理员; 球员租用工作流程的模板;  " action.equals('create')&&
  ((de.hybris.platform.servicelayer.type.TypeService)Registry.getApplicationContext()。getBean('typeService'))。isAssignableFrom('Player',itemType.getCode())"
  

如果我使用 workflowProcessingService.startWorkflow(workflow); 命令触发一个工作流,那么该脚本将很完美。

我在 DefaultScriptEvaluationService.evaluateActivationScripts 方法上放置了一个breackpoint,但是在创建新项目时从未调用过。

缺少什么吗?

谢谢

付费偷看设置
发送
5条回答
半个程序猿
1楼-- · 2020-09-06 16:30

请尝试以下操作:

  INSERT_UPDATE WorkflowTemplate; code [unique = true]; name [lang = en]; owner(uid); description [lang = en];激活脚本
  ; PlayerHireWorkFlow;聘请新玩家;管理员;玩家租用工作流程的模板;
  (((" create" .equals(action)&& initialValues!= null)||
  (" save" .equals(action)&& currentValues!= null))&&
  ((de.hybris.platform.servicelayer.type.TypeService)Registry.getApplicationContext()。getBean(" typeService"))。isAssignableFrom(" Player",itemType.getCode())
  

请注意,我上面编写的代码基于以下已成功用于 Product 项目类型的代码:

  INSERT_UPDATE UserGroup; UID [unique = true]; groups(uid)[mode = append]
  ; testproductmgrgrp;后台产品经理组,员工组
 
  INSERT_UPDATE Employee; UID [unique = true]
  ; testlocmgr
 
  $ START_USERRIGHTS
  类型; UID;成员组;密码;目标;读取;更改;创建;删除; change_perm
  员工; testlocmgr ;; 1234 ;;;;;
  ;;;;工作流程; +; + ;;;;
  ;;;; WorkflowAction; +; + ;;;;
 
  类型; UID;成员组;密码;目标;读取;更改;创建;删除; change_perm
  员工; testproductmgr ;; 1234 ;;;;;
  ;;;;工作流程; +; + ;;;;
  ;;;; WorkflowAction; +; + ;;;;
  $ END_USERRIGHTS
 
  UPDATE Employee; UID [unique = true];描述;名称;组(uid); sessionLanguage(isocode); sessionCurrency(isocode)
  ; testlocmgr;本地化经理;本地化经理; testproductmgrgrp; zh-CN; EUR
  ; testproductmgr;产品经理;产品经理; testproductmgrgrp; zh-CN; EUR
 
  INSERT_UPDATE WorkflowTemplate; code [unique = true]; name [lang = en]; owner(uid); description [lang = en]; visibleForPrincipals(uid);激活脚本
  ; SampleWorkFlow; Product Workflow; admin;这是一个示例工作流程模板,当平台中的产品批准状态已更改以检查时,将启动该模板; testproductmgrgrp; \
  (((" create" .equals(action)&& initialValues!= null && initialValues.get(" approvalStatus")!= null &&" check" .equals(initialValues.get(" approvalStatus")。getCode()))||  \
  ("保存" .equals(action)&& currentValues!= null && currentValues.get(" approvalStatus")!= null &&" check" .equals(currentValues.get(" approvalStatus")。getCode())))&& \
  ((de.hybris.platform.servicelayer.type.TypeService)Registry.getApplicationContext()。getBean(" typeService"))。isAssignableFrom(" Product",itemType.getCode())
 
  INSERT_UPDATE WorkflowActionTemplate; code [unique = true]; name [lang = en]; principalAssigned(uid); workflow(code)[unique = true]; actionType(code)
  ; SampleAction1;产品本地化; testlocmgr; SampleWorkFlow;开始;
  ; SampleAction2;本地化验证; testproductmgr; SampleWorkFlow; normal;
  ; SampleAction3; End; testproductmgr; SampleWorkFlow; end;
 
  INSERT_UPDATE WorkflowDecisionTemplate; code [unique = true]; name [lang = en]; actionTemplate(code);
  ; LocalizationDone; Localization done; SampleAction1;
  ; LocalizationRejected; Localization拒绝; SampleAction2;
  ;本地化已批准;本地化已批准; SampleAction2;
 
  INSERT_UPDATE WorkflowActionTemplateLinkTemplateRelation; source(code)[unique = true]; target(code)[unique = true]; andConnectionTemplate; qualifier;
  ; LocalizationDone; SampleAction2; true; WorkflowActionTemplateLinkTemplateRelation;
  ; LocalizationRejected; SampleAction1; true; WorkflowActionTemplateLinkTemplateRelation;
  ; LocalizationApproved; SampleAction3; true; WorkflowActionTemplateLinkTemplateRelation;
  
三十六小时_GS
2楼-- · 2020-09-06 16:52

嗨Jaime

将您的播放器项目类型添加到当前仅具有产品的backofficeWorkflowTemplateActivationSupportedTypes(backoffice-workflow-spring.xml)。 这应该有效。

SAP小黑
3楼-- · 2020-09-06 16:52

我尝试了您的建议Arvind,但没有成功。 我唯一需要更改的是引号,以便能够导入impex。 对我来说,罕见的是,我什至尝试了一个语义错误的激活脚本,但没有看到任何错误,就像根本没有对其进行评估一样。

土豆飞人
4楼-- · 2020-09-06 16:42

我做了一个测试,从后台创建产品,并按您所说的那样工作。 我还尝试更改我的工作流程激活脚本,并将其与Player类型的Product type instade链接,并触发了该脚本。 什么都不起作用,是当我从后台创建Player类型时,在这种情况下,脚本未评估(基于断点)。 我正在调查,但似乎工作流触发是附加到后台产品的创建上,而不是文件创建/保存或删除上的附加文件。

每次执行以下操作时,都会评估一个激活脚本:创建,保存,删除

https://help.hybris.com/6.7.0/hcd/ 8c878e7286691014b3aaf108edc38cca.html

callcenter油条
5楼-- · 2020-09-06 16:44

没有任何属性限制; 您可以使用要评估的任何属性。

一周热门 更多>