#salesforce #mule #datamapper #mule-studio
#salesforce #mule #средство обработки данных #mule-studio
Вопрос:
Я пытаюсь сопоставить данные из базы данных в salesforce в mule, используя опцию CreateBulk в соединителе Salesforce ->
<flow name="datamapperFlow1" doc:name="datamapperFlow1">
<poll doc:name="Poll">
<fixed-frequency-scheduler frequency="30" timeUnit="SECONDS"/>
<db:select config-ref="Generic_Database_Configuration" doc:name="Database">
<db:parameterized-query><![CDATA[select * from Persons1]]></db:parameterized-query>
</db:select>
</poll>
<logger message="#[payload]" level="INFO" doc:name="Logger"/>
<foreach doc:name="For Each">
<data-mapper:transform config-ref="Map_To_HRISASI__c" doc:name="Map To HRISASI__c"/>
</foreach>
<sfdc:create-bulk config-ref="Salesforce" type="HRISASI__c" doc:name="Salesforce">
<sfdc:objects ref="#[payload]"/>
</sfdc:create-bulk>
<logger message="#[payload]" level="INFO" doc:name="Logger"/>
</flow>
Создано пакетное задание, но не удается вставить записи с приведенной ниже ошибкой в отделе продаж
<result>
<errors>
<fields>PHONE</fields>
<fields>EMPNAME</fields>
<fields>EMPLOYEEID</fields>
<message>
HRISASI__c: bad field names on insert/update call: PHONE, EMPNAME, EMPLOYEEID
</message>
<statusCode>INVALID_FIELD_FOR_INSERT_UPDATE</statusCode>
</errors>
<success>false</success>
<created>false</created>
</result>
мой скрипт для сопоставления данных выглядит следующим образом
//MEL
//START -> DO NOT REMOVE
output.__id = input.__id;
//END -> DO NOT REMOVE
output.EmployeeId__c = input.EmpId;
output.EmpName__c = input.Empname;
output.Phone__c = input.Phone;
Не мог бы кто-нибудь, пожалуйста, сказать мне, в чем причина ошибки
Заранее благодарю вас
Ответ №1:
Проблема заключалась в использовании datamapper внутри for each. Полезная нагрузка за пределами foreach не содержит сопоставления, и, следовательно, при попытке сопоставить данные с salesforce была выдана ошибка