0
我正在开发一个使用Mule ESB的集成,它需要从文件系统读取二进制文件(.zip)并将其创建为Salesforce中的附件。但是,我无法获得此项工作,并且出现以下错误:Mule ESB:读取二进制文件并在Salesforce中创建附件
INFO 2016-03-11 13:55:47,338 [[sfdc].File.receiver.01] org.mule.transport.file.FileMessageReceiver: Lock obtained on file: /Users/aaa/Desktop/temp/files/test.zip
INFO 2016-03-11 13:55:47,345 [[sfdc].sfdcFlow.stage1.02] org.mule.api.processor.LoggerMessageProcessor: Payload = [email protected]
INFO 2016-03-11 13:55:47,348 [[sfdc].sfdcFlow.stage1.02] com.mulesoft.weave.mule.utils.MuleWeaveFactory$: MimeType was not resolved 'application/zip' delegating to Java.
ERROR 2016-03-11 13:55:47,367 [[sfdc].sfdcFlow.stage1.02] org.mule.exception.DefaultMessagingExceptionStrategy:
Message : Could not find a transformer to transform "SimpleDataType{type=java.util.LinkedHashMap, mimeType='*/*', encoding='null'}" to "CollectionDataType{type=java.util.List, itemType=java.lang.Object, mimeType='*/*'}".
Type : org.mule.api.transformer.TransformerException
Code : MULE_ERROR-236
JavaDoc : http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transformer/TransformerException.html
Exception stack is:
1. Could not find a transformer to transform "SimpleDataType{type=java.util.LinkedHashMap, mimeType='*/*', encoding='null'}" to "CollectionDataType{type=java.util.List, itemType=java.lang.Object, mimeType='*/*'}". (org.mule.api.transformer.TransformerException)
org.mule.registry.MuleRegistryHelper:248 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transformer/TransformerException.html)
Root Exception stack trace:
org.mule.api.transformer.TransformerException: Could not find a transformer to transform "SimpleDataType{type=java.util.LinkedHashMap, mimeType='*/*', encoding='null'}" to "CollectionDataType{type=java.util.List, itemType=java.lang.Object, mimeType='*/*'}".
这是配置文件。
<sfdc:config name="Salesforce__Basic_Authentication" username="[email protected]" password="password" securityToken="token" url="https://test.salesforce.com/services/Soap/u/34.0" doc:name="Salesforce: Basic Authentication"/>
<file:connector name="File" readFromDirectory="/Users/aaa/Desktop/temp/files" autoDelete="true" streaming="true" validateConnections="true" doc:name="File"/>
<flow name="sfdcFlow">
<file:inbound-endpoint path="/Users/aaa/Desktop/temp/files" connector-ref="File" responseTimeout="10000" doc:name="File"/>
<logger message="Payload = #[payload]" level="INFO" doc:name="Logger"/>
<object-to-byte-array-transformer doc:name="Object to Byte Array"/>
<dw:transform-message doc:name="Transform Message">
<dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
{
ParentId: "b2U7A0B01054OyZ",
Name: "Test Name",
Description: "Test Descr",
Body: payload
}]]></dw:set-payload>
</dw:transform-message>
<sfdc:create config-ref="Salesforce__Basic_Authentication" type="Attachment" doc:name="Salesforce" />
</flow>
我检查了Anypoint交换和谷歌搜索,但我得到的所有指针是针对文本文件(如CSV)。欣赏是否有人可以共享一个工作示例来读取二进制文件并将其作为Salesforce中的附件创建(可附加到任何对象,如大小写对象)。
我使用Anypoint Studio 5.4.1和Mule运行时3.7.3 EE。
编辑:我能解决这个问题。基本上,正如@david所说,创建方法需要一个集合,我没有将它作为集合传递。这里是更新的代码(只是数据编辑部分):
[
{
ParentId: "b2U7AB010540yZ",
Name: "Test Name",
Description: "Test Descr",
Body: payload
}
]
请注意方括号的开放和关闭。谢谢@david。