点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好
我正在使用groovy脚本登录不同的步骤。 由于我不想重复复制脚本并只更改两个值,因此我认为应该可以使用参数。
这是我要使用的脚本:
导入com.sap.gateway.ip.core.customdev.util.Message; 导入java.util.HashMap; def消息logpayload(消息消息,字符串nameOfAttachment,字符串mimeType){ def有效负载= message.getBody(String.class); def messageLog = messageLogFactory.getMessageLog(message); messageLog.setStringProperty(" Logging",nameOfAttachment); messageLog.addAttachmentAsString(nameOfAttachment,payload,mimeType); 返回消息; }
我这样配置它:
但是,当我运行它时,出现以下异常。 有谁知道我该如何解决这个问题?
java.lang.NoSuchMethodException:方法的无签名:org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.logpayload(message," FlatFile.txt"," text/plain")()适用于参数类型:(com.sap。 gateway.ip.core.customdev.processor.MessageImpl)值:[com.sap.gateway.ip.core.customdev.processor.MessageImpl@737f25ed]
谢谢
弗洛里安
(7.2 kB)
弗洛里安嗨
CPI希望您的脚本步骤功能的签名为:
但是,您可以根据需要向脚本文件中添加任意数量的具有任意签名的函数。
因此,您可以将logPayload方法更改为:
,然后添加任意数量的调用它的函数,例如:
这将删除重复的代码。
让我知道它是如何工作的。
此致
Morten
嗨弗洛里安。 很高兴您可以使用它。 至于空白,请使用
相反,它应该起作用。 这需要更改返回语句的代码。或者,您可以根据需要保留它。
此致
Morten
Hey Morten,
非常感谢。 使用void函数对我不起作用。 这就是代码对我的工作方式。
此。
因此,推测一下,在CPI iFlow的Groovy脚本中用户定义的函数:
1。 必须只包含一个参数,并且该消息是消息-因此,我们只需要指定脚本功能名称即可,例如"正确"屏幕截图中显示的Bharath。
2。 processData-在创建Groovy脚本时默认显示,并非必须实施。
Morten Wittrock -如果这些假设正确,请发表评论。
嗨弗洛里安,
另一种解决方案是使用属性或标头变量。 您可以使用
或
可以是另一种解决方案,它可能具有更高的灵活性,但添加了更多的cpi特定代码。
此致
Dominic
感谢Morten提供此解决方案,仅为了完成此回答,以使其他读者能够在配置脚本时尝试弄清楚如何使用"脚本功能"功能 "处理"选项卡下的函数名称,仅提及脚本名称(不需要括号或传递" message"参数,CPI隐含地理解为只能通过脚本函数传递" message"参数),以下屏幕截图 显示不正确和正确的方法(必须通过很少的尝试和错误来解决,因为我找不到使用此功能的示例的任何文档)。
错误:
正确:
Dominic的职位就是那个!
谢谢
Matthias
一周热门 更多>