Mule4: структура полезной нагрузки JSON/Java для операции SFDC UPSERT для полей кросс-родительских отношений

Я добавляю записи к объекту в Salesforce, используя соединитель SFDC, используя имя пользователя и пароль oauth. Я использую внешний идентификатор (скажем, ext_Id__c) для этой операции. Рассматривайте имя объекта как порядок. Существует поле «merchant__c», которое является реляционным полем, относящимся к идентификатору учетной записи (у которого есть внешнее поле acc_ext_Id__c).

Теперь мое требование состоит в том, чтобы обновить полеmerchant__c, используя значение acc_ext_Id__c. Мне нужно использовать коннектор Mule Salesforce.

Я попробовал обозреватель рабочего места, используя приведенный ниже запрос, я могу обновить запись.

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

Я пытался создать то же самое, используя dataweave

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

}]

Но выдавало ошибку

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: 

Как отправить запрос в SFDC, чтобы он обновился корректно?


person Prudhvi B    schedule 25.03.2021    source источник


Ответы (1)


Похоже, есть разница между тестом рабочей среды и скриптом DataWeave. В первом случае вы показываете объект, а скрипт DataWeave создает массив с объектом.

Вы пробовали отправить только объект (т.е. без квадратных скобок)?

Пример:

%dw 2.0
output application/java
---
{
    "merchant__r": {"acc_ext_Id__c" : "test"}
}
person aled    schedule 25.03.2021
comment
Да, он пытался отправить только объект, хотя это та же ошибка. Я только что изучил некоторые блоги и нашел способ. %dw 2.0 выходное приложение/java --- [{merchant__r: { type: Account, acc_ext_Id__c : test } }] - person Prudhvi B; 07.04.2021