2
使用mule數據映射器從CSV轉換爲JSON。我想檢查是否必填字段爲空。如果空記錄該字段並將其丟棄以供進一步處理。驗證datamapper中的字段(CSV到JSON)。
我知道腳本選項我們有if(input.data.length> 0)。' 但如果這失敗瞭如何丟棄整行?
使用mule數據映射器從CSV轉換爲JSON。我想檢查是否必填字段爲空。如果空記錄該字段並將其丟棄以供進一步處理。驗證datamapper中的字段(CSV到JSON)。
我知道腳本選項我們有if(input.data.length> 0)。' 但如果這失敗瞭如何丟棄整行?
只需將整個轉換封裝在if語句的開關大括號中,就可以在mule datamapper中執行此操作。事情是這樣的:
if (input.Quantity > 0) {
output.id = input.id;
output.Customer = input.Customer;
output.Quantity = input.Quantity;
output.Price = input.Price;
}
然而不同的,也許更好,方法是讓DataMapper的變換中的每一行成JSON,然後分裂和過濾的流作爲單獨的步驟。
<flow name="filterindatamapperFlow2" doc:name="filterindatamapperFlow2">
<file:inbound-endpoint path="/tmp/inbox" doc:name="Inbound file"/>
<data-mapper:transform config-ref="CSV_To_UnfilteredJSON" doc:name="CSV To Unfiltered JSON"/>
<request-reply>
<vm:outbound-endpoint path="splittandprocess" exchange-pattern="one-way"/>
<vm:inbound-endpoint path="result"/>
</request-reply>
<json:object-to-json-transformer doc:name="Object to JSON"/>
<file:outbound-endpoint path="/tmp/outbox" doc:name="Outbound file"/>
</flow>
<flow name="splittandprocess">
<vm:inbound-endpoint path="splittandprocess" exchange-pattern="one-way"/>
<json:json-to-object-transformer returnClass="java.util.List" doc:name="JSON to Object"/>
<splitter expression="#[payload]" doc:name="Splitter"/>
<json:json-to-object-transformer returnClass="java.util.Map" doc:name="JSON to Object"/>
<message-filter doc:name="Filter Out Orders With No Quantity" onUnaccepted="handleFilteredMessages">
<expression-filter expression="#[payload['Quantity'] > 0]" />
</message-filter>
<collection-aggregator failOnTimeout="false" timeout="1000"/>
<vm:outbound-endpoint path="result" exchange-pattern="one-way"/>
</flow>
<flow name="handleFilteredMessages">
<logger message="Payload filtered #[payload]" level="ERROR" doc:name="Logger"/>
</flow>
情景是我有csv文件。檢查幾個字段是否爲非零。如果其中一個爲零,則丟棄整行,記錄該值並繼續到文件中的下一行。 – user3483129 2015-02-11 18:16:40
正是這樣,上面的腳本將做什麼。該行的數量列爲零,該行將被跳過。我會盡快發佈一個更完整的例子。此外編輯datamapper腳本直接切換到腳本視圖,而不是圖形映射器。 – 2015-02-11 18:32:12
是的,它的工作原理,你知道如何使用記錄器組件記錄這個值嗎? – user3483129 2015-02-11 19:47:05