骡子3.7:在别人面前开始特定流程

时间:2016-03-03 14:45:35

标签: mule

我有一个从postgres加载数据的流程,我希望这个流程在其他流程之前执行,我有很多流程。我试图在Mule 3.7中做到这一点

我有sereral http inbounds,几乎所有这些都需要这个从postgres加载数据的流程,因此它们不能是私有的

我该怎么做?

3 个答案:

答案 0 :(得分:1)

在您的问题中提供有限的上下文,单向操作是将您想要的流量设为Welcome(意思是,定义入站端点)并将其他流量设为public ,你用private

称之为明确

编辑:你可以在对象存储中定义一个变量说flow-ref,初始值为loadCache,当你运行其他流时,他们首先检查的是false仍为loadCache,然后调用false流,完成后loadData流将变量值设置为loadData。所以任何需要缓存数据的其他流程都会检查这个变量并根据使用true数据或调用函数来加载数据

这样的事情:

cache

对象存储引用https://docs.mulesoft.com/mule-user-guide/v/3.7/mule-object-stores

另一个选项可能是使用注册表对象而不是对象存储https://docs.mulesoft.com/mule-user-guide/v/3.7/storing-objects-in-the-registry

答案 1 :(得分:1)

您想要稍后执行的所有流程,使其初始状态停止如下: - <flow name="..." initialState="stopped">
现在,部署应用程序时,您不想执行的所有流程都不会运行。

现在在从postgres加载数据的流程结束时,从数据库加载数据后,开始所有停止的流程如下: - < / p>

<scripting:component>
    <scripting:script engine="groovy">
        muleContext.registry.lookupFlowConstruct('targetFlow').start()
    </scripting:script>
</scripting:component>

这将启动所有其他已停止的流程,并在您想要的流程之后执行,我希望满足您的要求。

答案 2 :(得分:0)

您可以在停止状态下加载所有相关流并让核心流首先启动,一旦它成功启动,您就可以按照您想要的顺序触发其余流的开始。