2016-03-03 36 views
1

之前具體流程我有一個流程,從Postgres的加載數據,我想其他的流在此之前流執行,我有很多流量。我想這樣做是騾子3.7騾3.7:啓動其他

我sereral HTTP界外球,幾乎所有的人都需要這種流動加載從Postgres的數據,因此它們不能是私有

我怎麼能這樣做?

回答

1

所有你想稍後再執行流程,使他們的初始狀態停止如下: - <flow name="..." initialState="stopped">
現在所有你不想執行應用程序時,部署將不會運行的流程。

現在,在年底前將數據從數據庫加載之後加載從Postgres的數據,流程,開始一切都是停止如下流程: -

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

這將啓動所有其他流程停止並將在您想要的流程之後執行,我希望能夠滿足您的要求。

+0

我使用這個策略,但不是使用groovy,而是使用 app.registry.targetFlowName.start();

1

隨着您的問題提供了有限的情況下,單向做的是讓你想運行1日定爲public流(含義,定義入站端點),讓其他流量爲private,你調用使用flow-ref是明確地

編輯:你可以有一個可變說,在對象存儲中定義的具有false初始值,當你其他loadCache運行流程,他們檢查的第一件事是,如果loadCache仍然false,然後調用loadData流量和loadData完成時的流量將變量的值設置爲true。因此,任何其他流需要緩存數據,會檢查這個變量,並基於該使用cache數據或調用函數加載數據

事情是這樣的:

<flow...> 
     .... 
    <!-- flows with http or other inbounds --> 
    <objectstore:retrieve config-ref="ObjectStore__Configuration" key="cacheLoad" defaultValue-ref="#[false]" targetProperty="flowVars.cacheLoad" doc:name="retrieve cacheLoad"/> 

</flow> 

<flow> ... 
    <!--load data from postgress--> 
    <objectstore:store config-ref="ObjectStore__Configuration" key="cacheLoad" value-ref="#[true]" doc:name="store cacheLoad"/>    

</flow> 

對象存儲參考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

+0

我sereral HTTP界外球,幾乎所有的人都需要這個流程,從Postgres的加載數據,因此它們不能是私有 –

+0

請更好地解釋你的情況。當你說我希望這個流程在別人流動之前執行時,你的意思是在你的其他公共流程被觸發之前,或者在早上第一件事情或者什麼? –

+0

我需要在啓動mule時在其他人之前執行此流程,因爲我從postgres加載數據並將數據保存在內存中,然後在其他流程中從內存中獲取數據,這樣我就不需要再次執行查詢。 –

0

您可以加載所有依賴流動處於停止狀態,讓你的核心流程第一次啓動,一旦它開始SUC您可以按照您想要的順序觸發其餘流程的開始。

相關問題