2015-03-03 3 views
0

Вот как выглядит мой поток.Блок выражения Mule не работает?

enter image description here

В настройках "Expression", я просто следующее:

key != 0 

Имя файла/шаблона для соединителя файла является # [ключ]

Это все еще выводя файл с именем 0, который содержит тело электронной почты. Он также выводит все другие вложения правильно. Я просто не хочу, чтобы он писал тело электронной почты в файл. Что я делаю не так?

Полный код:

<?xml version="1.0" encoding="UTF-8"?> 
<mule xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns="http://www.mulesoft.org/schema/mule/core" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:spring="http://www.springframework.org/schema/beans" 
     xmlns:imap="http://www.mulesoft.org/schema/mule/imap" 
     xmlns:vm="http://www.mulesoft.org/schema/mule/vm" 
     xmlns:file="http://www.mulesoft.org/schema/mule/file" 
     xmlns:email="http://www.mulesoft.org/schema/mule/email" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd 
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/3.6/mule.xsd 
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/3.6/mule-file.xsd 
http://www.mulesoft.org/schema/mule/imap http://www.mulesoft.org/schema/mule/imap/3.6/mule-imap.xsd 
http://www.mulesoft.org/schema/mule/email http://www.mulesoft.org/schema/mule/email/3.6/mule-email.xsd 
http://www.mulesoft.org/schema/mule/vm http://www.mulesoft.org/schema/mule/vm/3.6/mule-vm.xsd 
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd" version="EE-3.6.0"> 

    <imap:connector name="imapConnector" checkFrequency="10000" doc:name="IMAP" /> 

    <expression-transformer name="returnAttachments" doc:name="Expression"> 
     <return-argument evaluator="attachments-list" expression="*"/> 
    </expression-transformer> 

    <file:connector name="fileName" doc:name="File"> 
     <file:expression-filename-parser/> 
    </file:connector> 
    <flow name="incoming-orders"> 
     <imap:inbound-endpoint host="server" port="143" user="user" password="pass" disableTransportTransformer="true" transformer-refs="returnAttachments" doc:name="IMAP"/> 
     <foreach doc:name="For Each" collection="#[message.inboundAttachments]" counterVariableName="i" rootMessageVariableName="msg"> 
      <expression-component doc:name="Expression">key != 0</expression-component> 
      <file:outbound-endpoint path="c:\Mule\in" outputPattern="#[key]" doc:name="File" responseTimeout="10000"> 
       <expression-transformer> 
        <return-argument expression="payload.inputStream" evaluator="groovy"/> 
       </expression-transformer> 
      </file:outbound-endpoint> 
     </foreach> 
    </flow> 
</mule> 

ответ

1

Похоже, что foreach обрабатывает значения на inboundAttachments карте, так что вы не получите ключи. Я предлагаю что-то вроде:

<foreach doc:name="For Each" collection="#[message.inboundAttachments.entrySet()]"> <expression-transformer doc:name="Expression" expression="#[payload.key != 0]"/> ... </foreach>

Теперь вы будете обрабатывать пары ключ-значение, так что вы, возможно, потребуется использовать set-payload отправить только payload.value, перед сохранением ключа в переменной для использования в файле конечных точек.

+0

Спасибо за подробный ответ. Я только что загрузил Mule несколько дней назад, поэтому я все еще учился. Я посмотрю, поможет ли это. –

+0

Это сделало это, спасибо! –

+0

Я понимаю и не проблема, вы проверяете документы, так что это хорошее начало для изучения! – afelisatti

Смежные вопросы