2017-08-28 2 views
0

J'ai un scénario où j'ai besoin de supprimer des données complètes d'un objet Salesforce. Pour obtenir, en premier, tous les identifiants de cet objet sont récupérés et enregistrés dans un fichier au format .csv.Comment supprimer les données de l'objet Salesforce?

Une fois les données téléchargées dans le fichier, vous devez supprimer l'enregistrement par les enregistrements en utilisant le lot.

Je suis en mesure d'interroger sur l'objet et enregistrer les données dans .csv mais lors de la suppression des données parfois obtenir en dessous de l'erreur.

Message    : null (java.nio.BufferUnderflowException). 
    Element    : /batch-delete-genericFlow/processors/3 @ apl-sfa-batch-interface-v44:batch-delete-all.xml:48 (Transform Message) 
    -------------------------------------------------------------------------------- 
    Exception stack is: 
    null (java.nio.BufferUnderflowException). (org.mule.api.MessagingException) 
     java.nio.Buffer.nextGetIndex(Buffer.java:500) 
     java.nio.HeapCharBuffer.get(HeapCharBuffer.java:135) 
     com.mulesoft.weave.reader.UTF8StreamSourceReader.decode$1(SeekableStreamSourceReader.scala:147) 
     com.mulesoft.weave.reader.UTF8StreamSourceReader.read(SeekableStreamSourceReader.scala:167) 
     com.mulesoft.weave.reader.csv.parser.StreamingCSVParser.read(StreamingCSVParser.scala:61) 
     (66 more...) 

     (set debug level logging or '-Dmule.verbose.exceptions=true' for everything) 
******************************************************************************** 

PFB supprimer le code de code de lot:

<batch:job name="batch-delete-genericBatch" max-failed-records="-1"> 
     <batch:input> 
      <enricher target="#[flowVars['jobInfo_delete']]" doc:name="Enricher jobId"> 
       <sfdc:create-job config-ref="SFA_MSBI" type="#[flowVars.sObjectName]" concurrencyMode="Serial" contentType="CSV" operation="delete" doc:name="Create Job"/> 
      </enricher> 
      <expression-component doc:name="Save Job ID"><![CDATA[sessionVars.jobInfo_delete = flowVars.jobInfo_delete.id 
]]></expression-component> 
     </batch:input> 
     <batch:process-records> 
      <batch:step name="Batch_Step" > 
       <batch:commit doc:name="Batch Commit" size="5000"> 
        <processor-chain doc:name="Processor Chain"> 
         <dw:transform-message metadata:id="df884737f2bc" doc:name="Transform Message"> 
          <dw:set-payload><![CDATA[%dw 1.0 
%output application/java 
--- 
payload map { 
    Id: $.Id 
}]]></dw:set-payload> 
         </dw:transform-message> 
         <sfdc:create-batch config-ref="SFA_MSBI" doc:name="Salesforce"> 
          <sfdc:job-info ref="#[flowVars.jobInfo_delete]"/> 
          <sfdc:objects ref="#[payload]"/> 
         </sfdc:create-batch> 
        </processor-chain> 
       </batch:commit> 
      </batch:step> 
     </batch:process-records> 
     <batch:on-complete> 
      <async doc:name="Async"> 
       <sfdc:close-job config-ref="SFA_MSBI" jobId="#[sessionVars.jobInfo_delete]" doc:name="Salesforce"/> 
      </async> 

     </batch:on-complete> 
    </batch:job> 

S'il vous plaît conseiller.

Répondre

0

On dirait que l'erreur provoque une certaine valeur. S'il vous plaît poster plus de code pour avoir du contexte. Le temps moyen suivant est un bon moyen de supprimer les SFO.

<sfdc:delete config-ref="mySalesforceConfig"> 
    <sfdc:ids> 
     <sfdc:id>001...</sfdc:id> 
    </sfdc:ids> 
</sfdc:delete> 

http://mulesoft.github.io/salesforce-connector/8.3.1/apidocs/apidoc.html#_delete

+0

mis à jour le code de suppression qui est effectuée à l'aide Traitement par lots. – Thiru