Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Mule 4中使用Groovy脚本调用流_Mule - Fatal编程技术网

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

在Mule 4中使用Groovy脚本调用流,mule,Mule,我需要在mule 4中使用groovy脚本调用流。有人能告诉我他们是否使用Mule 4进行过尝试吗?这是可能的,但我强烈建议您不要这样做 您必须深入挖掘Mule Java API并将自己与之结合,还要添加许多自己的错误处理等,并且要警惕平台更新和Java API更改时的错误 就我个人而言,我会重组你的应用程序,使其在脚本中只包含“业务逻辑”,并让Mule在别处进行流程查找 您甚至可以在dataweave中查找流 但这里有一个粗略的工作示例(请注意,您必须自己强化此代码): 导入org.mule

我需要在mule 4中使用groovy脚本调用流。有人能告诉我他们是否使用Mule 4进行过尝试吗?这是可能的,但我强烈建议您不要这样做

您必须深入挖掘Mule Java API并将自己与之结合,还要添加许多自己的错误处理等,并且要警惕平台更新和Java API更改时的错误

就我个人而言,我会重组你的应用程序,使其在脚本中只包含“业务逻辑”,并让Mule在别处进行流程查找

您甚至可以在dataweave中查找流

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


导入org.mule.runtime.api.message.message;
导入org.mule.runtime.core.api.event.corevent;
导入org.mule.runtime.core.api.event.EventContextFactory;
flow=registry.lookupByName(“另一个流”).get();
thisflow=registry.lookupByName(“测试流”).get();
msg=Message.builder().value(有效载荷).build();
event=CoreEvent.builder(EventContextFactory.create(thisflow,
org.mule.runtime.dsl.api.component.config.DefaultComponentLocation.fromSingleComponent(“添加位置”)).message(msg.build();
结果=流程(事件);
您需要获取当前流和要调用的流


使用Mule API-构造Mule事件、消息、负载等。您还需要添加任何需要的属性等。

这是可能的,但我强烈建议您不要这样做

您必须深入挖掘Mule Java API并将自己与之结合,还要添加许多自己的错误处理等,并且要警惕平台更新和Java API更改时的错误

就我个人而言,我会重组你的应用程序,使其在脚本中只包含“业务逻辑”,并让Mule在别处进行流程查找

您甚至可以在dataweave中查找流

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


导入org.mule.runtime.api.message.message;
导入org.mule.runtime.core.api.event.corevent;
导入org.mule.runtime.core.api.event.EventContextFactory;
flow=registry.lookupByName(“另一个流”).get();
thisflow=registry.lookupByName(“测试流”).get();
msg=Message.builder().value(有效载荷).build();
event=CoreEvent.builder(EventContextFactory.create(thisflow,
org.mule.runtime.dsl.api.component.config.DefaultComponentLocation.fromSingleComponent(“添加位置”)).message(msg.build();
结果=流程(事件);
您需要获取当前流和要调用的流


使用Mule API-构建Mule事件、消息、负载等。您还需要添加所需的任何属性等。

感谢Ryan的回复。我通过使用Java类而不是groovy实现了这个功能。感谢Ryan的回复。我能够通过使用Java类而不是groovy来实现该功能。
<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>