2017-07-24 3 views
0

Ich Abfrage der Daten (10 bis 20 Datensätze) von Salesforce Kontaktobjekt und von denen ich ID-Wert in die Variable erfassen müssen. um das zu tun, setze ich Payload als # [org.apache.commons.collections.IteratorUtils.toList (Nutzlast)], aber funktioniert nicht.Wie salesforce konvertieren Abfrage Antwort in lesbares Format in Mule?

PFB ist der Beispielcode:

<flow name="SetFunctionRole-table"> 
     <sfdc:query config-ref="SFA_NOL_CLOUDHUB2" query="dsql:SELECT Id, AccountId,Account_BP_ID__c,Account_BT_Code__c,Birthdate,Department,Email,Fax,FirstName,LastName,MiddleName,MobilePhone,Name FROM Contact WHERE AccountId = '#[flowVars.varCustomer_Id]' ORDER BY AccountId ASC" doc:name="get contacts from AccountId"/> 
     <logger message="#[payload]" level="INFO" doc:name="Logger"/> 
     <set-payload value="#[org.apache.commons.collections.IteratorUtils.toList(payload)]" doc:name="Set Payload"/> 
     <foreach collection="#[payload]" doc:name="For Each"> 
      <logger message="#[payload]" level="INFO" doc:name="Logger"/> 
      <set-variable variableName="varContact_id" value="#[payload['Id']]" doc:name="Variable"/> 
      <sfdc:query-single config-ref="SFA_NOL_CLOUDHUB2" query="dsql:SELECT Function__c,Id FROM Contact_Function_Role__c WHERE Contact__c = '#[flowVars.varContact_id]'" doc:name="Salesforce"/> 
      <logger message="#['Inserting key:' + flowVars.varContact_id + ' and value: ' + payload.Id]" level="INFO" doc:name="Logger"/> 
      <objectstore:store config-ref="ObjectStore__Connector" key="#[flowVars.varContact_id]" value-ref="#[payload.Id]" overwrite="true" doc:name="ObjectStore"/> 
     </foreach> 
    </flow> 

unten Fehlermeldung an Set Nutzlast Erste:

ERROR 2017-07-24 20:05:50,333 [[ws21.2-prod].SetFunctionRole-table.stage1.02] org.mule.exception.DefaultMessagingExceptionStrategy: 
******************************************************************************** 
Message    : Execution of the expression "org.apache.commons.collections.IteratorUtils.toList(payload)" failed. (org.mule.api.expression.ExpressionRuntimeException). 
Payload    : [email protected] 
Payload Type   : org.mule.streaming.ConsumerIterator 
Element    : /SetFunctionRole-table/processors/2 @ ws21.2-prod:create-prospect.xml:177 (Set Payload) 
Element XML   : <set-payload value="#[org.apache.commons.collections.IteratorUtils.toList(payload)]" doc:name="Set Payload"></set-payload> 
-------------------------------------------------------------------------------- 
Root Exception stack trace: 
[UnexpectedErrorFault [ApiFault exceptionCode='INVALID_OPERATION_WITH_EXPIRED_PASSWORD' 
exceptionMessage='The users password has expired, you must call SetPassword before attempting any other API operations' 
extendedErrorDetails='{[0]}' 
] 
] 

    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 

Antwort

1

Warum versuchen Sie die Payload zu setzen, ist eine solche 'kreative' Art und Weise, nicht notwendig, und wird auch nicht funktionieren.

Die SalesForce-Konnektorausgabe ist vom Typ org.mule.streaming.ConsumerIterator, die direkt von einem For Each-Bereich gelesen werden kann, daher ist dies bereits eine Auflistung.

Entfernen Sie die Set Payload und sehen, ob das funktioniert, wenn Sie debuggen sollten Sie das Verhalten sehen, ich habe gerade dies getestet und das funktioniert.

Verwandte Themen