Variables 无法访问Mule有效负载元件

Variables 无法访问Mule有效负载元件,variables,mule,record,Variables,Mule,Record,我有一个间歇的问题与骡子的批次:工作 我正在处理对Salesforce的查询产生的一组记录。这里的Payload是一个hashMap,它表示查询的一个结果记录。这是我的相关代码- <batch:process-records> <batch:step name="sfdc2edge_event_create_step_process"> <logger message="SFId: #[payload.Id]. Processing a re

我有一个间歇的问题与骡子的批次:工作

我正在处理对Salesforce的查询产生的一组记录。这里的Payload是一个hashMap,它表示查询的一个结果记录。这是我的相关代码-

<batch:process-records>
    <batch:step name="sfdc2edge_event_create_step_process">
        <logger message="SFId: #[payload.Id]. Processing a record" level="INFO" doc:name="Logger" />
        <logger message="Full Payload: #[payload]" level="INFO" doc:name="log payload"/>
        <batch:set-record-variable variableName="sfId" value="#[payload.Id]" doc:name="Set Record Variable - sfId" />
正如您所看到的,完整负载(日志中的第2行)有一个名为“Id”的元素,但是第一个日志条目无法获得它,以及set record变量命令


知道为什么无法访问该元素吗?

问题在于负载内容类型,在您的代码中,负载是一个简单的字符串,因此,
#[payload.Id]
不起作用。在将其转换为已知的内容类型(如json或java对象(映射、列表、对象))之前,必须根据需要进行转换。Davo,我没有提到这是一个间歇性问题(编辑了该问题)。它大部分时间都有效。此外,有效负载不是一个简单的字符串。它是对Salesforce的查询结果,Salesforce是一个hashMap。大多数情况下,它工作正常。您希望打印Id=00U3000000QF2uREAT吗?您能试试吗#[message.payload.Id]Naveen,我需要你的时候你在哪里?:)在你回答之前,我痛苦地发现“message.payload.Id”总是有效的。出于某种原因,“payload.Id”有时会停止工作。MuleSoft的支持毫无帮助。如果你将此作为答案发布,你将获得答案分数!
2015-12-31 09:01:43,818 INFO  SF2Edge_Event_Create - SFId: null. Processing a record [org.mule.api.processor.LoggerMessageProcessor]
2015-12-31 09:01:43,818 INFO  SF2Edge_Event_Create - Full Payload: {type=Event, Type=Client Transition Meeting - Internal, Id=00U3000000QF2uREAT, ActivityDate=2015-12-31, Account={type=Account, Id=null, EDGE_Customer_Number__c=219213}} [org.mule.api.processor.LoggerMessageProcessor]
2015-12-31 09:01:43,818 INFO  Record variable with key "sfId", not found on message using "#[payload.Id]". Since the value was marked optional, nothing was set on the record for this variable [com.mulesoft.module.batch.processor.AddRecordVariableTransformer]