我有一个从postgres加载数据的流程,我希望这个流程在其他流程之前执行,我有很多流程。我试图在Mule 3.7中做到这一点
我有sereral http inbounds,几乎所有这些都需要这个从postgres加载数据的流程,因此它们不能是私有的
我该怎么做?
答案 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)
您可以在停止状态下加载所有相关流并让核心流首先启动,一旦它成功启动,您就可以按照您想要的顺序触发其余流的开始。