2020-09-12 12:42发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
尊敬的专家,
我有一个要求,当通过impex添加新产品时,需要触发工作流程。
我知道WorkflowTempalte中的激活脚本功能如何工作。 该方法的局限性在于,只有在后台产品主控室中创建新产品时,才将其附加到工作流中。 通过impex添加新产品时,我需要将其附加到工作流程中。
有人可以提供一些见解吗?
注意:Iam使用Hybris 1808版本。
谢谢!
我对工作流程引擎不是很熟悉,但是会使用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"拥有,并附加刚刚导入的产品。
impex.legacy.scripting = false
如果您需要启用传统模式,那么也可以使用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
是的,我自己没有尝试过,只是直接写在评论中。
问题是 createWorkflow 需要一个 ItemModel ,但是从 getLastImportedItem()返回的对象是Jalo类型。
createWorkflow
ItemModel
getLastImportedItem()
尝试
modelService.get(impex.lastImportedItem)
用于Groovy代码
或
ctx.getBean("" modelService"")。get(impex.getLastImportedItem())
对于Beanshell版本
亲爱的
是的,您在第一行提到您对工作流程不熟悉。 由于篇幅所限,无法确认。 感谢您的更新。 实际上,当我反编译WorkflowServiceImpl时,Idid找不到具有三个参数的任何方法。 现在我所做的是删除最后一个参数,即工作流所有者参数。 现在它的工作正常。 下面是代码行。
""#%groovy%afterEach:workflowService.createWorkflow(workflowTemplateService.getWorkflowTemplateForCode('wfl_template_name'),modelService.get(impex.lastImportedItem))"
感谢您的及时帮助。 它实际上帮助了我很多。
亲爱的,我还有一个问题。 我想知道impex是下面代码行中哪个对象的实例。
当我在行下运行时,工作流模板将针对每个数据行实例化。 如果我有10个数据行,则将实例化10个工作流模板。 我想所有10个产品都只有一个工作流实例。 因此,我想在" impex"实例类中找到其他方法。 如果你知道,你能和我一起吃饭吗?
最多设置5个标签!
我对工作流程引擎不是很熟悉,但是会使用impex afterEach 工作吗?
例如 像
您需要确保已启用脚本来运行impex,并且旧式模式已关闭
impex.legacy.scripting = false
。 这应该从模板" my-workflow-template"创建一个新的工作流,该模板由用户" workflow-user"拥有,并附加刚刚导入的产品。如果您需要启用传统模式,那么也可以使用Beanshell来实现,但是它更加冗长且难以阅读。
afterEach周围的文档有点稀疏,但是这里有一些示例
https://help.hybris.com/1808/hcd/8bdf595b86691014b902e0974f71491a.html >
这里有一些脚本编写
https://help.hybris.com/1808/hcd/640172cbde9149ab8eb818180544020a.html
是的,我自己没有尝试过,只是直接写在评论中。
问题是
createWorkflow
需要一个ItemModel
,但是从getLastImportedItem()
返回的对象是Jalo类型。尝试
用于Groovy代码
或
对于Beanshell版本
亲爱的
是的,您在第一行提到您对工作流程不熟悉。 由于篇幅所限,无法确认。 感谢您的更新。 实际上,当我反编译WorkflowServiceImpl时,Idid找不到具有三个参数的任何方法。 现在我所做的是删除最后一个参数,即工作流所有者参数。 现在它的工作正常。 下面是代码行。
""#%groovy%afterEach:workflowService.createWorkflow(workflowTemplateService.getWorkflowTemplateForCode('wfl_template_name'),modelService.get(impex.lastImportedItem))"
感谢您的及时帮助。 它实际上帮助了我很多。
亲爱的,我还有一个问题。 我想知道impex是下面代码行中哪个对象的实例。
ctx.getBean("" modelService"")。get(impex.getLastImportedItem())
当我在行下运行时,工作流模板将针对每个数据行实例化。 如果我有10个数据行,则将实例化10个工作流模板。 我想所有10个产品都只有一个工作流实例。 因此,我想在" impex"实例类中找到其他方法。 如果你知道,你能和我一起吃饭吗?
一周热门 更多>