【发布时间】:2014-09-25 17:48:11
【问题描述】:
我正在构建一个用于更新插入记录的聚合过程。我有一个分散收集子流,其中每个路径都查询 Salesforce 环境,将数据映射到一致的输出地图列表中,然后分散收集将消息传递到组合集合转换器。输出是一个 ArrayList,其中包含作为批处理的一部分我需要进行 upsert 的所有值。
问题是当 Arraylist 被传递到 Process 步骤时,Mule 会抛出以下错误:
对象“org.mule.transport.NullPayload”的类型不正确。它的类型必须是“{interface java.lang.Iterable,interface java.util.Iterator,interface org.mule.routing.MessageSequence,interface java.util.Collection}”(java.lang.IllegalArgumentException) (com.mulesoft. module.batch.exception.BatchException)。消息负载的类型:NullPayload
使用 Mule Debugger 我可以看到输入阶段完成时的有效负载不为空,并且是 ArrayList 类型。如果我简化流程,请删除分散聚集,以便输入阶段只是一个查询,而 DataMapper 我仍然收到相同的错误。
如何获取地图列表并使用批处理功能对其进行处理?
输入阶段:
</processor-chain>
<processor-chain>
<sfdc:query config-ref="Salesforce-B" query="dsql:SELECT Amount,CloseDate,CreatedDate,Id,LeadSource,Name,OwnerId,Primary_Source__c,Probability,StageName FROM Opportunity WHERE lastModifiedDate > #[lastUpdate]" doc:name="B" fetchSize="10"/>
<logger message="B has #[payload.size().toString()] Opportunities for upsert" level="INFO" doc:name="Logger"/>
<data-mapper:transform config-ref="List_Opportunity__To_Map_B" doc:name="Opp to Sales B"/>
</processor-chain>
</scatter-gather>
<combine-collections-transformer doc:name="Combine Collections"/>
【问题讨论】:
标签: arraylist mule batch-processing esb