2015-11-05 92 views
0

我想通過Mulesoft ESB從Salesforce刪除記錄列表。 我已經在github上創建了一個示例項目,並且可以找到流xml here通過Mulesoft ESB從Salesforce刪除記錄

XML代碼段,用於刪除記錄低於:

<sfdc:delete config-ref="Salesforce__Basic_authentication" doc:name="Salesforce"> 
      <sfdc:ids ref="#[payload]" /> 
     </sfdc:delete> 

其中,有效載荷數據類型是串列表。

雖然刪除我得到的異常以下記錄:

ERROR 2015-11-05 23:39:39,755 [[tutorial].HTTP_Listener_Configuration.worker.01] org.mule.exception.DefaultMessagingExceptionStrategy: 
******************************************************************************** 
Message    : Could not serialize object (org.mule.api.serialization.SerializationException) 
Type     : org.mule.api.transformer.TransformerException 
Code     : MULE_ERROR--2 
JavaDoc    : http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transformer/TransformerException.html 
Transformer   : ObjectToByteArray{this=7be7e15, name='_ObjectToByteArray', ignoreBadInput=false, returnClass=SimpleDataType{type=[B, mimeType='*/*', encoding='null'}, sourceTypes=[SimpleDataType{type=java.io.Serializable, mimeType='*/*', encoding='null'}, SimpleDataType{type=java.io.InputStream, mimeType='*/*', encoding='null'}, SimpleDataType{type=java.lang.String, mimeType='*/*', encoding='null'}, SimpleDataType{type=org.mule.api.transport.OutputHandler, mimeType='*/*', encoding='null'}]} 
******************************************************************************** 
Exception stack is: 
1. com.sforce.soap.partner.DeleteResult (java.io.NotSerializableException) 
    java.io.ObjectOutputStream:1184 (null) 
2. java.io.NotSerializableException: com.sforce.soap.partner.DeleteResult (org.apache.commons.lang.SerializationException) 
    org.apache.commons.lang.SerializationUtils:111 (null) 
3. Could not serialize object (org.mule.api.serialization.SerializationException) 
    org.mule.serialization.internal.AbstractObjectSerializer:68 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/serialization/SerializationException.html) 
4. Could not serialize object (org.mule.api.serialization.SerializationException) (org.mule.api.transformer.TransformerException) 
    org.mule.transformer.simple.SerializableToByteArray:66 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transformer/TransformerException.html) 
******************************************************************************** 
Root Exception stack trace: 
java.io.NotSerializableException: com.sforce.soap.partner.DeleteResult 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184) 
    at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1378) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) 
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) 
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) 
    at org.apache.commons.lang.SerializationUtils.serialize(SerializationUtils.java:108) 
    at org.apache.commons.lang.SerializationUtils.serialize(SerializationUtils.java:133) 
    at org.mule.serialization.internal.JavaObjectSerializer.doSerialize(JavaObjectSerializer.java:44) 
    at org.mule.serialization.internal.AbstractObjectSerializer.serialize(AbstractObjectSerializer.java:64) 
    at org.mule.transformer.simple.SerializableToByteArray.doTransform(SerializableToByteArray.java:62) 
    at org.mule.transformer.simple.ObjectToByteArray.doTransform(ObjectToByteArray.java:78) 
    at org.mule.transformer.AbstractTransformer.transform(AbstractTransformer.java:415) 
    at org.mule.DefaultMuleMessage.getPayload(DefaultMuleMessage.java:425) 
    at org.mule.DefaultMuleMessage.getPayload(DefaultMuleMessage.java:373) 
    at org.mule.DefaultMuleMessage.getPayloadAsBytes(DefaultMuleMessage.java:714) 
    at org.mule.module.http.internal.listener.HttpResponseBuilder.build(HttpResponseBuilder.java:175) 
    at org.mule.module.http.internal.listener.HttpMessageProcessorTemplate.sendResponseToClient(HttpMessageProcessorTemplate.java:97) 
    at org.mule.execution.AsyncResponseFlowProcessingPhase.runPhase(AsyncResponseFlowProcessingPhase.java:83) 
    at org.mule.execution.AsyncResponseFlowProcessingPhase.runPhase(AsyncResponseFlowProcessingPhase.java:38) 
    at org.mule.execution.PhaseExecutionEngine$InternalPhaseExecutionEngine.phaseSuccessfully(PhaseExecutionEngine.java:65) 
    at org.mule.execution.PhaseExecutionEngine$InternalPhaseExecutionEngine.phaseSuccessfully(PhaseExecutionEngine.java:69) 
    at com.mulesoft.mule.throttling.ThrottlingPhase.runPhase(ThrottlingPhase.java:185) 
    at com.mulesoft.mule.throttling.ThrottlingPhase.runPhase(ThrottlingPhase.java:1) 
    at org.mule.execution.PhaseExecutionEngine$InternalPhaseExecutionEngine.process(PhaseExecutionEngine.java:114) 
    at org.mule.execution.PhaseExecutionEngine.process(PhaseExecutionEngine.java:41) 
    at org.mule.execution.MuleMessageProcessingManager.processMessage(MuleMessageProcessingManager.java:32) 
    at org.mule.module.http.internal.listener.DefaultHttpListener$1.handleRequest(DefaultHttpListener.java:126) 
    at org.mule.module.http.internal.listener.grizzly.GrizzlyRequestDispatcherFilter.handleRead(GrizzlyRequestDispatcherFilter.java:83) 
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111) 
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536) 
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) 
    at org.mule.module.http.internal.listener.grizzly.ExecutorPerServerAddressIOStrategy.run0(ExecutorPerServerAddressIOStrategy.java:102) 
    at org.mule.module.http.internal.listener.grizzly.ExecutorPerServerAddressIOStrategy.access$100(ExecutorPerServerAddressIOStrategy.java:30) 
    at org.mule.module.http.internal.listener.grizzly.ExecutorPerServerAddressIOStrategy$WorkerThreadRunnable.run(ExecutorPerServerAddressIOStrategy.java:125) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

回答

1

你實際上是成功刪除。問題在於您的Mule流在進行Salesforce調用後結束,並且默認情況下它會嘗試返回當前的有效內容。該有效負載是SF調用的結果,該調用的類型爲com.sforce.soap.partner.DeleteResult,而Mule不知道如何序列化它。

首先,嘗試在SF調用後簡單地添加一個「設置有效載荷」組件,並將載荷設置爲任何你想要的,比如說「hello world」。一旦你明白髮生了什麼,你可以添加一個groovy腳本來處理DeleteResult,並實際確定刪除是否成功,如果不是,可能會做一些事情。

+0

謝謝葉戈爾!你是對的。這是原因。 :) –

0

在這種情況下,如果您不希望顯式更改有效內容並希望從SFDC連接器發送確切的有效內容,請嘗試在sfdc連接器和記錄器之後將對象連接到json連接器以記錄有效載荷。