在Mule 4中使用Groovy脚本调用流

时间:2019-03-24 01:16:15

标签: mule

我需要使用m子4中的groovy脚本来调用流。有人可以让我知道是否已经使用M子4尝试过

1 个答案:

答案 0 :(得分:1)

有可能,但我强烈建议您不要这样做。

您将必须深入研究Mule Java API并将其与它们耦合,还必须添加许多自己的错误处理等,并且要警惕平台更新以及Java API是否更改。

我个人将重组您的应用程序,使其仅在脚本中包含“业务逻辑”,然后让Mule在其他地方进行流查找。

您甚至可以在dataweave中查找流。

但这是一个粗略的工作示例(请注意,您必须自己加强此代码):

<flow name="test-flow">
        <scheduler>
            <scheduling-strategy>
                <fixed-frequency frequency="100000"></fixed-frequency>
            </scheduling-strategy>
        </scheduler>
        <set-payload value="bla bla" />
        <scripting:execute engine="groovy" doc:name="Toggle flow" doc:id="2eb6f071-bdef-4d3d-926d-2565fcd62d33">
            <scripting:code>
                import org.mule.runtime.api.message.Message;
                import org.mule.runtime.core.api.event.CoreEvent;
                import org.mule.runtime.core.api.event.EventContextFactory;
                flow=registry.lookupByName(&quot;another-flow&quot;).get();
                thisflow=registry.lookupByName(&quot;test-flow&quot;).get();
                msg = Message.builder().value(payload).build();
                event =CoreEvent.builder(EventContextFactory.create(thisflow,
                org.mule.runtime.dsl.api.component.config.DefaultComponentLocation.fromSingleComponent("add-location"))).message(msg).build();
                result =flow.process(event);
            </scripting:code>
        </scripting:execute>
    </flow>

    <flow name="another-flow">
        <logger level="ERROR" message="Another Flow #[payload]" />
    </flow>

您需要获取当前流和要调用的流。

使用Mule API-构造一个Mule事件,Messgae,有效负载等。您还需要添加所需的任何属性等。