2015-03-31 27 views
0

我想將文件移動到位置d:從查詢select filepath from emp where status='y'動態\目標:騾子移動文件,從數據庫查詢動態另一個位置

這是我的表:

emp_Name File Path  File Name Status 
ABC   D:\emp   abc.txt  y 
xyz   D:\emp   xyz.txt  y 
bcs   D:\emp   bcs.txt  n 

以下是我的源代碼:

<flow name="testdbFlow1"> 
    <http:listener config-ref="HTTP_Listener_Configuration" 
     path="/" doc:name="HTTP" /> 
    <jdbc-ee:outbound-endpoint queryKey="allEmps" 
     queryTimeout="-1" connector-ref="JDBCConnector" exchange-pattern="request-response" 
     doc:name="Database" /> 

    <foreach doc:name="Foreach"> 
     <choice doc:name="Choice"> 
      <when expression="#[payload.status == 'Y']"> 
       <processor-chain doc:name="Processor Chain"> 
        <set-variable variableName="filePath" value="#[payload.filepath]" 
         doc:name="Variable" /> 
        <set-variable variableName="filename" value="#[payload.filename]" 
         doc:name="Variable" /> 

        <logger message="#[filePath]" level="INFO" 
         doc:name="Logger" /> 
        <logger message="#[filename]" 
         level="INFO" doc:name="Logger" /> 

        <file:inbound-endpoint path="#[filePath]" name="input" doc:name="File" 
         pollingFrequency="12000" responseTimeout="10000"> <file:filename-wildcard-filter 
         pattern="#[filename]" /> </file:inbound-endpoint> 

        <file:outbound-endpoint name="output" path="D:\target" doc:name="File"/> 

       </processor-chain> 
      </when> 
      <otherwise> 
       <processor-chain doc:name="Processor Chain"> 
        <set-variable variableName="filePath" value="#[payload.filepath]" 
         doc:name="Variable" /> 
        <set-variable variableName="filename" value="#[payload.filename]" 
         doc:name="Variable" /> 

        <logger message="#[filePath]" level="INFO" 
         doc:name="Logger" /> 
        <logger message="#[filename]" 
         level="INFO" doc:name="Logger" /> 

       </processor-chain> 
      </otherwise> 
     </choice> 
    </foreach> 

</flow> 

但它不工作。

+0

您是否在日誌中看到任何錯誤?因爲我不相信在處理器鏈的中間有一個入站端點是有效的。另外,你確定文件名和路徑可以以這種方式訪問​​嗎?你確定有效載荷有他們嗎?我會在進入foreach後立即添加一個記錄器,以查看有效負載是什麼。 – afelisatti 2015-03-31 16:11:15

回答

0

入站流程在流程中不可用。我會建議使用Groovy更簡單的解決方案,因爲您確切知道需要使用的文件。

而不是使用文件:入境手動創建一個輸入流:

<set-payload value="#[groovy: new java.io.FileInputStream(new java.io.File(filename))]"/> 

你將不得不刪除與消耗陸續Groovy腳本文件。

+0

謝謝彼得回覆我。使用Groovy使用文件後,如何移動到D:\ target文件夾。請建議我 – 2015-04-01 06:32:05

+0

Groovy腳本沒有使用該文件,而是返回一個InputStream(如文件:inbound-endpoint所具有的)。您可以保留文件:outbound-endpoint照原樣拷貝文件內容。但在你的文件:出站端點後,你必須用腳本手動刪除源文件,例如 Petter 2015-04-01 08:17:39

相關問題