我定义了这样的服务xml:
<service verb="targetExample">
<in-parameters><parameter name="testInput"/></in-parameters>
<out-parameters><parameter name="testOutput"/></out-parameters>
<actions>
<set field="testOutput" value="Input was: ${testInput}"/>
<log level="info" message="targetExample testOutput: '${testOutput}'"/>
</actions>
</service>
我很好奇是否有机会调用它而无需添加过渡来包装它。我试图遵守命名$ {path}。$ {verb}#$ {noun}的服务,但徒劳地,如果不定义以下过渡,就无法调用它。
<transition name="localExample">
<service-call name="moqui.example.ExampleServices.targetExample" web-send-json-response="true"/>
<default-response type="none"/>
</transition>
另外,我还想知道是否有人设法用java而不是groovy来实现服务(我在文档中读到这是可能的)。
我要的是以下定义中的test.java文件的工作示例:
<service verb="targetJavaExample" type="java"
location="component://example/src/orq/moqui/example/test.java">
<in-parameters><parameter name="testInput"/></in-parameters>
<out-parameters><parameter name="testOutput"/></out-parameters>
</service>
最佳答案
也可以从屏幕xml中定义的任何<actions>
标记内调用任何服务。例如各节的开头,表格的开头(<row-actions>
),嵌入到各种文件中或放入自己的文件中并像脚本一样运行。
在服务中,定义服务调用的“动作”时,您随时可以使用<script>... </script>
随时下拉到Groovy / Java。 -XML Actions中总是如此。 (如果您有某些字符可能被解释为XML标记,则为<script><![CDATA[... ]]></script>
。)
希望能有所帮助。