我定义了这样的服务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>。)

希望能有所帮助。

08-05 09:50
查看更多