Mule4: Struktur muatan JSON/Java untuk operasi SFDC UPSERT untuk bidang hubungan lintas induk

Saya memasukkan catatan ke objek di tenaga penjualan menggunakan konektor SFDC menggunakan nama pengguna dan kata sandi oauth. Saya menggunakan Id eksternal (misalnya ext_Id__c) untuk operasi ini. Pertimbangkan nama objek sebagai pesanan. Ada bidang yang mengatakan 'merchant__c' yang merupakan bidang relasional yang mengacu pada Id Akun (yang memiliki bidang eksternal acc_ext_Id__c).

Sekarang persyaratan saya adalah memperbarui bidang merchant__c menggunakan nilai acc_ext_Id__c. Saya perlu menggunakan konektor Mule Salesforce.

Saya mencoba workbench rest explorer, menggunakan permintaan di bawah ini saya dapat memperbarui catatan

{
 "merchant__r": {"acc_ext_Id__c" :   "test"}
}

Saya mencoba membuat yang sama menggunakan dataweave

%dw 2.0
output application/java
---
[{
    "merchant__r": {"acc_ext_Id__c" :   "test"}

}]

Tapi itu menimbulkan kesalahan

com.sforce.soap.partner.fault.InvalidSObjectFault: null
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_265]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_265]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_265]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_265]
    at java.lang.Class.newInstance(Class.java:442) ~[?:1.8.0_265]
    at com.sforce.ws.bind.TypeMapper.readSingle(TypeMapper.java:721) ~[force-wsc-50.0.0.jar:?]
    at com.sforce.ws.bind.TypeMapper.readObject(TypeMapper.java:593) ~[force-wsc-50.0.0.jar:?]
    at com.sforce.ws.transport.SoapConnection.parseDetail(SoapConnection.java:250) ~[force-wsc-50.0.0.jar:?]
    at com.sforce.ws.transport.SoapConnection.createException(SoapConnection.java:224) ~[force-wsc-50.0.0.jar:?]
    at com.sforce.ws.transport.SoapConnection.receive(SoapConnection.java:163) ~[force-wsc-50.0.0.jar:?]
    at com.sforce.ws.transport.SoapConnection.send(SoapConnection.java:108) ~[force-wsc-50.0.0.jar:?]
    at com.sforce.soap.partner.PartnerConnection.update(PartnerConnection.java:865) ~[force-partner-api-50.0.0.jar:?]
    at org.mule.extension.salesforce.internal.service.CoreServiceImpl.lambda$update$2(CoreServiceImpl.java:154) ~[mule-salesforce-connector-10.7.0-mule-plugin.jar:?]
    at org.mule.extension.salesforce.internal.connection.ForceWSCConnection.executeOverPartnerClient(ForceWSCConnection.java:264) ~[mule-salesforce-connector-10.7.0-mule-plugin.jar:?]
    at org.mule.extension.salesforce.internal.service.ForceWSCService.executeOverPartnerClient(ForceWSCService.java:24) ~[mule-salesforce-connector-10.7.0-mule-plugin.jar:?]
    at org.mule.extension.salesforce.internal.service.CoreServiceImpl.update(CoreServiceImpl.java:154) ~[mule-salesforce-connector-10.7.0-mule-plugin.jar:?]
    at org.mule.extension.salesforce.internal.operation.core.UpdateOperation.update(UpdateOperation.java:56) ~[mule-salesforce-connector-10.7.0-mule-plugin.jar:?]
    at org.mule.extension.salesforce.internal.operation.core.UpdateOperation$update$MethodComponentExecutor.execute(Unknown Source) ~[?:?]
    at org.mule.runtime.module.extension.internal.runtime.execution.GeneratedMethodComponentExecutor.execute(GeneratedMethodComponentExecutor.java:97) ~[mule-module-extensions-support-4.3.0-20210119.jar:4.3.0-20210119]
    at org.mule.runtime.module.extension.internal.runtime.execution.CompletableMethodOperationExecutor.doExecute(CompletableMethodOperationExecutor.java:29) ~[mule-module-extensions-support-4.3.0-20210119.jar:4.3.0-20210119]
    at org.mule.runtime.module.extension.internal.runtime.execution.AbstractCompletableMethodOperationExecutor.execute(AbstractCompletableMethodOperationExecutor.java:63) ~[mule-module-extensions-support-4.3.0-20210119.jar:4.3.0-20210119]
    at org.mule.runtime.module.extension.internal.runtime.operation.DefaultExecutionMediator.executeCommand(DefaultExecutionMediator.java:211) ~[mule-module-extensions-support-4.3.0-20210119.jar:4.3.0-20210119]
    at org.mule.runtime.module.extension.internal.runtime.operation.DefaultExecutionMediator.executeWithInterceptors(DefaultExecutionMediator.java:194) ~[mule-module-extensions-support-4.3.0-20210119.jar:4.3.0-20210119]
    at org.mule.runtime.module.extension.internal.runtime.operation.DefaultExecutionMediator.lambda$execute$1(DefaultExecutionMediator.java:113) ~[mule-module-extensions-support-4.3.0-20210119.jar:4.3.0-20210119]
    at org.mule.runtime.module.extension.internal.runtime.operation.DefaultExecutionMediator.lambda$new$0(DefaultExecutionMediator.java:61) ~[mule-module-extensions-support-4.3.0-20210119.jar:4.3.0-20210119]
    at org.mule.runtime.module.extension.internal.runtime.operation.DefaultExecutionMediator.execute(DefaultExecutionMediator.java:112) ~[mule-module-extensions-support-4.3.0-20210119.jar:4.3.0-20210119]
    at org.mule.runtime.module.extension.internal.runtime.operation.ComponentMessageProcessor.executeOperation(ComponentMessageProcessor.java:563) ~[mule-module-extensions-support-4.3.0-20210119.jar:4.3.0-20210119]
    at org.mule.runtime.module.extension.internal.runtime.operation.OAuthOperationMessageProcessor.executeOperation(OAuthOperationMessageProcessor.java:58) ~[mule-module-extensions-support-4.3.0-20210119.jar:4.3.0-20210119]
    at org.mule.runtime.module.extension.internal.runtime.operation.ComponentMessageProcessor.prepareAndExecuteOperation(ComponentMessageProcessor.java:765) ~[mule-module-extensions-support-4.3.0-20210119.jar:4.3.0-20210119]
    at org.mule.runtime.module.extension.internal.runtime.operation.ComponentMessageProcessor.lambda$onEventSynchronous$19(ComponentMessageProcessor.java:465) ~[mule-module-extensions-support-4.3.0-20210119.jar:4.3.0-20210119]
    at org.mule.runtime.module.extension.internal.runtime.operation.ComponentMessageProcessor.onEventSynchronous(ComponentMessageProcessor.java:472) ~[mule-module-extensions-support-4.3.0-20210119.jar:4.3.0-20210119]
    at org.mule.runtime.module.extension.internal.runtime.operation.ComponentMessageProcessor.lambda$null$9(ComponentMessageProcessor.java:380) ~[mule-module-extensions-support-4.3.0-20210119.jar:4.3.0-20210119]
    at reactor.core.publisher.FluxPeekFuseable$PeekFuseableConditionalSubscriber.onNext(FluxPeekFuseable.java:482) [reactor-core-3.2.12.RELEASE.jar:3.2.12.RELEASE]
    at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:287) [reactor-core-3.2.12.RELEASE.jar:3.2.12.RELEASE]
    at reactor.core.publisher.FluxPeekFuseable$PeekFuseableConditionalSubscriber.onNext(FluxPeekFuseable.java:496) [reactor-core-3.2.12.RELEASE.jar:3.2.12.RELEASE]
    at org.mule.runtime.core.privileged.processor.chain.AbstractMessageProcessorChain$2.onNext(AbstractMessageProcessorChain.java:430) [mule-core-4.3.0-20210119.jar:4.3.0-20210119]
    at org.mule.runtime.core.privileged.processor.chain.AbstractMessageProcessorChain$2.onNext(AbstractMessageProcessorChain.java:425) [mule-core-4.3.0-20210119.jar:4.3.0-20210119]
    at reactor.core.publisher.FluxHide$SuppressFuseableSubscriber.onNext(FluxHide.java:127) [reactor-core-3.2.12.RELEASE.jar:3.2.12.RELEASE]
    at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:204) [reactor-core-3.2.12.RELEASE.jar:3.2.12.RELEASE]
    at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:345) [reactor-core-3.2.12.RELEASE.jar:3.2.12.RELEASE]
    at reactor.core.publisher.FluxSubscribeOnValue$ScheduledScalar.run(FluxSubscribeOnValue.java:178) [reactor-core-3.2.12.RELEASE.jar:3.2.12.RELEASE]
    at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:50) [reactor-core-3.2.12.RELEASE.jar:3.2.12.RELEASE]
    at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:27) [reactor-core-3.2.12.RELEASE.jar:3.2.12.RELEASE]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_265]
    at org.mule.service.scheduler.internal.AbstractRunnableFutureDecorator.doRun(AbstractRunnableFutureDecorator.java:111) [mule-service-scheduler-1.3.2/:?]
    at org.mule.service.scheduler.internal.RunnableFutureDecorator.run(RunnableFutureDecorator.java:54) [mule-service-scheduler-1.3.2/:?]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_265]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_265]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_265]
ERROR 2021-03-24 21:45:14,082 [[MuleRuntime].uber.20: [test].testFlow.BLOCKING @407540e] [processor: ; event: 193ef9f1-8cbc-11eb-a48f-8c04ba3265ac] org.mule.runtime.core.internal.exception.OnErrorPropagateHandler: 

Bagaimana cara mengirim permintaan ke SFDC agar diperbarui dengan benar?


person Prudhvi B    schedule 25.03.2021    source sumber


Jawaban (1)


Sepertinya ada perbedaan antara pengujian meja kerja dan skrip DataWeave. Dalam kasus pertama Anda menampilkan sebuah objek, sementara skrip DataWeave membuat array dengan sebuah objek.

Sudahkah Anda mencoba mengirim objeknya saja (yaitu tanpa tanda kurung siku)?

Contoh:

%dw 2.0
output application/java
---
{
    "merchant__r": {"acc_ext_Id__c" : "test"}
}
person aled    schedule 25.03.2021
comment
Ya, ia mencoba mengirim hanya objek, meskipun kesalahannya sama. Saya baru saja menjelajahi beberapa blog dan menemukan caranya. %dw 2.0 keluaran aplikasi/java --- [{ merchant__r: { ketik: Akun, acc_ext_Id__c : test } }] - person Prudhvi B; 07.04.2021