成功运行impex时如何触发自动cron作业

2020-09-12 12:42发布

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

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


尊敬的专家,

我有一个要求,当通过impex添加新产品时,需要触发工作流程。

我知道WorkflowTempalte中的激活脚本功能如何工作。 该方法的局限性在于,只有在后台产品主控室中创建新产品时,才将其附加到工作流中。 通过impex添加新产品时,我需要将其附加到工作流程中。

有人可以提供一些见解吗?

注意:Iam使用Hybris 1808版本。

谢谢!

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

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


尊敬的专家,

我有一个要求,当通过impex添加新产品时,需要触发工作流程。

我知道WorkflowTempalte中的激活脚本功能如何工作。 该方法的局限性在于,只有在后台产品主控室中创建新产品时,才将其附加到工作流中。 通过impex添加新产品时,我需要将其附加到工作流程中。

有人可以提供一些见解吗?

注意:Iam使用Hybris 1808版本。

谢谢!

付费偷看设置
发送
4条回答
暮风yp
1楼 · 2020-09-12 13:21.采纳回答

我对工作流程引擎不是很熟悉,但是会使用impex afterEach 工作吗?

例如 像

  INSERT_UPDATE产品; code [unique = true]; catalogVersion(catalog(id),version)[unique = true]
  "#%groovy%afterEach:workflowService.createWorkflow(workflowTemplateService.getWorkflowTemplateForCode('my-workflow-template'),impex.lastImportedItem,userService.getUserForUID('workflow-owner'))"
  ; 1234;默认值:暂存
  ; 5678;默认值:分期
  

您需要确保已启用脚本来运行impex,并且旧式模式已关闭 impex.legacy.scripting = false 。 这应该从模板" my-workflow-template"创建一个新的工作流,该模板由用户" workflow-user"拥有,并附加刚刚导入的产品。

如果您需要启用传统模式,那么也可以使用Beanshell来实现,但是它更加冗长且难以阅读。

  INSERT_UPDATE产品; code [unique = true]; catalogVersion(catalog(id),version)[unique = true]
  "#%afterEach:ctx = Registry.getApplicationContext(); ctx.getBean("" workflowService"")。createWorkflow(ctx.getBean("" workflowTemplateService"")。getWorkflowTemplateForCode("" my-workflow-template""),  impex.getLastImportedItem(),ctx.getBean("" userService"")。getUserForUID("" workflow-owner""))""
  ; 1234;默认值:暂存
  ; 5678;默认值:分期
  

afterEach周围的文档有点稀疏,但是这里有一些示例

https://help.hybris.com/1808/hcd/8bdf595b86691014b902e0974f71491a.html

这里有一些脚本编写

https://help.hybris.com/1808/hcd/640172cbde9149ab8eb818180544020a.html

callcenter油条
2楼-- · 2020-09-12 13:10

是的,我自己没有尝试过,只是直接写在评论中。

问题是 createWorkflow 需要一个 ItemModel ,但是从 getLastImportedItem()返回的对象是Jalo类型。

尝试

  modelService.get(impex.lastImportedItem)
  

用于Groovy代码

  ctx.getBean("" modelService"")。get(impex.getLastImportedItem())
  

对于Beanshell版本

宇峰Kouji
3楼-- · 2020-09-12 13:04

亲爱的

是的,您在第一行提到您对工作流程不熟悉。 由于篇幅所限,无法确认。 感谢您的更新。 实际上,当我反编译WorkflowServiceImpl时,Idid找不到具有三个参数的任何方法。 现在我所做的是删除最后一个参数,即工作流所有者参数。 现在它的工作正常。 下面是代码行。

""#%groovy%afterEach:workflowService.createWorkflow(workflowTemplateService.getWorkflowTemplateForCode('wfl_template_name'),modelService.get(impex.lastImportedItem))"

感谢您的及时帮助。 它实际上帮助了我很多。

粗暴的香蕉
4楼-- · 2020-09-12 13:17

亲爱的,我还有一个问题。 我想知道impex是下面代码行中哪个对象的实例。

ctx.getBean("" modelService"")。get(impex.getLastImportedItem())

当我在行下运行时,工作流模板将针对每个数据行实例化。 如果我有10个数据行,则将实例化10个工作流模板。 我想所有10个产品都只有一个工作流实例。 因此,我想在" impex"实例类中找到其他方法。 如果你知道,你能和我一起吃饭吗?

一周热门 更多>

点击此处---> EasySAP.com 一起学习S4 HANA ...

相关问答