Невозможно отправить файл в другой каталог WSO2 ESB

У меня есть простой прокси-сервис на основе vfs. Я хочу опросить файл DiscardedContracts.csv, добавить время с именем файла и переместить его в каталог Out.

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="ContractsDiscardedFileReader"
       startOnLoad="true"
       statistics="disable"
       trace="disable"
       transports="vfs">
   <target>
      <inSequence>
         <property expression="fn:concat('DiscardedContracts', get-property('SYSTEM_DATE', 'yyMMddHHmmss'), '.csv')"
                   name="transport.vfs.ReplyFileName"/>
         <log separator="==-------Going to move discarded contract file in out directory---------=="/>
         <log level="custom" separator="==-------File--------==">
            <property expression="fn:concat('DiscardedContracts', get-property('SYSTEM_DATE', 'yyMMddHHmmss'), '.csv')"
                      name="transport.vfs.ReplyFileName"/>
         </log>
         <property name="OUT_ONLY" scope="default" type="STRING" value="true"/>
         <send>
            <endpoint name="FileEpr">
               <address uri="vfs:file:///opt/file/contracts/Out/"/>
            </endpoint>
         </send>
      </inSequence>
      <faultSequence>
         <sequence key="DeliveriesFileProcessingFaultSequence"/>
      </faultSequence>
   </target>
   <parameter name="transport.vfs.ContentType">text/plain</parameter>
   <parameter name="transport.vfs.ActionAfterProcess">MOVE</parameter>
   <parameter name="transport.vfs.CreateFolder">true</parameter>
   <parameter name="transport.vfs.MoveAfterFailure">vfs:file:///opt/file/contracts/Fail</parameter>
   <parameter name="sequential">true</parameter>
   <parameter name="transport.vfs.LockReleaseSameNode">false</parameter>
   <parameter name="transport.vfs.Build">false</parameter>
   <parameter name="transport.vfs.MoveAfterProcess">vfs:file:///opt/file/contracts/Out/</parameter>
   <parameter name="coordination">true</parameter>
   <parameter name="transport.vfs.Streaming">true</parameter>
   <parameter name="transport.PollInterval">30</parameter>
   <parameter name="transport.vfs.FileURI">vfs:file:///opt/file/mysql</parameter>
   <parameter name="transport.vfs.ActionAfterFailure">MOVE</parameter>
   <parameter name="transport.vfs.AutoLockRelease">false</parameter>
   <parameter name="transport.vfs.FileSortAttribute">lastmodifiedtimestamp</parameter>
   <parameter name="transport.vfs.FileSortAscending">true</parameter>
   <parameter name="transport.vfs.DistributedLock">false</parameter>
   <parameter name="transport.vfs.FileNamePattern">.*.csv</parameter>
   <parameter name="transport.vfs.Locking">disable</parameter>
   <description/>
</proxy>

Но проблема в том, что я могу сопоставить дату и время с именем файла, но файл не перемещается в каталог Out должным образом. Он создает файл response.xml, содержащий мои данные. Я не знаю, как меняется имя файла и расширение. Нужна помощь, спасибо.


person Mishi    schedule 01.01.2018    source источник


Ответы (1)


Я считаю, что это потому, что вы не установили transport.vfs.ReplyFileName. (Вы только зарегистрировали его.) Его значение по умолчанию — response.xml.

Если убрать свойство transport.vfs.ReplyFileName из медиатора логов, то должно работать.

Ссылка: https://docs.wso2.com/display/ESB500/VFS+Transport< /а>

Обновить: установите scope="transport" для свойства, как показано ниже.

<property expression="fn:concat('DiscardedContracts', get-property('SYSTEM_DATE', 'yyMMddHHmmss'), '.csv')" 
    scope="transport"
    name="transport.vfs.ReplyFileName"/>
person Bee    schedule 01.01.2018
comment
Но я поставил. Вы можете проверить, что это первое в моей последовательности. У меня есть свойство, и я объединяю в нем системную дату. После этого я зарегистрировал его. - person Mishi; 01.01.2018
comment
Ах, извините, я пропустил это. Попробуйте установить scope="transport" в свойстве. Обновил ответ. - person Bee; 01.01.2018
comment
Спасибо чувак. Бьюсь головой о стены. - person Mishi; 02.01.2018