2016-09-14 52 views
0

我會開始說我是CloverETL的新手,沒有經過正式培訓。如何使用CloverETL生成動態XML元數據

我有一個工作,它運行一個ExecuteScript組件,並帶有一個調用Apple的iTunes Connect Reporter Java工具的命令來獲取報告的狀態,讓我知道它是否準備好或不能下載。 Java工具的消息使用XML,我使用UniversalDataWriter將它寫入XML文件。工作中的最後一個組件啓動另一個工作流程。

下一個作業流程從一個XMLExtract組件開始,該組件將映射文件中的XML並將XML的消息部分發送到Condition組件,以查找文件是否準備就緒並拆分條件以下載文件如果準備就緒,或者休眠並調用Java工具以在一段時間後再次獲取狀態(如果尚未準備就緒)。

就緒狀態的XML看起來是這樣的:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<Status> 
    <Message>Sales and Trends Reporter is currently available.</Message> 
    <Code>0</Code> 
</Status> 

滿狀態的XML看起來是這樣的:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<Error> 
    <Code>1</Code> 
    <Message>Sales and Trends is currently unavailable. Please try again in 15 minutes.</Message> 
    <Retry>875000</Retry> 
</Error> 

輸出是動態的,我不知道如何格式化元數據是能夠處理任一輸出。 XML中的消息部分是唯一對我很重要的部分。

回答

0

對您的用例的簡單解決方案是將XML響應保留爲字符串,並使用SimpleCopy組件將副本傳遞給兩個XMLExtract組件(輸出XML的數據)。您需要設置兩個XMLExtracts的文件URL屬性以從端口讀取。在XMLExtract的Mapping屬性中,它會要求您在源XML文件中「生成樹結構」,使用就緒狀態的XML作爲其中一個,不可用的狀態XML作爲另一個的XML,從而爲兩種情況創建結構。最後,在這兩種情況下將消息映射到輸出端口。

+0

因此,不是使用UniversalDataWriter將響應寫入XML文件,而是將來自ExecuteScript組件的響應直接提供給SimpleCopy組件,請更正? – KMac