我正在使用带有soap api的salesforce合作伙伴WSDL来上传salesforce上的数据并将其存储在SF对象上我有两个依赖对象,它们有一个子对象的查找字段
当我存储父对象时,我想存储依赖的子对象数据。
如何使用 SOAP api 实现这一点。
提前致谢..
我正在使用带有soap api的salesforce合作伙伴WSDL来上传salesforce上的数据并将其存储在SF对象上我有两个依赖对象,它们有一个子对象的查找字段
当我存储父对象时,我想存储依赖的子对象数据。
如何使用 SOAP api 实现这一点。
提前致谢..
您可以在 SOAP 中通过在父对象类型上使用外部 ID 字段来执行此操作,这将允许您在一次调用中发送父对象和子对象,并通过外部 Id 字段值自动关联它们。
这是一个 Java 示例,可一次性创建帐户和相关联系人。联系人通过 extId__c 字段与帐户相关联。
public static void main(String[] args) throws Exception {
// login to salesforce.
PartnerConnection pc = Connector.newConnection(args[0], args[1]);
// The new Account record we're going to create.
SObject acc = new SObject();
acc.setType("Account");
acc.setField("Name", "My New Account");
acc.setField("extId__c", UUID.randomUUID().toString());
// The new Contact record we're going to create.
SObject con = new SObject();
con.setType("Contact");
con.setField("FirstName", "Simon");
con.setField("LastName", "Fell");
// This Account object we build with the relationship to the account above based
// on the extId__c field, and then we set it on the contact record
// this is the standard FK lookup using ExternalIds feature.
SObject parentAcc = new SObject();
parentAcc.setType("Account");
parentAcc.setField("extId__c", acc.getField("extId__c"));
con.setField("Account", parentAcc);
// Now we can insert both records at once
SaveResult [] sr = pc.create(new SObject [] { acc, con} );
printSaveResult("Account result", sr[0]);
printSaveResult("Contact result", sr[1]);
}
private static void printSaveResult(String label, SaveResult sr) {
if (sr.isSuccess())
System.out.println(label + " success recordId is " + sr.getId());
else
System.out.println(label + " failed, reason is " + sr.getErrors()[0].getMessage());
}
当我运行它时,它会打印
Account result success recordId is 0013000001DFMRxAAP
Contact result success recordId is 0033000001aEgskAAC
当我登录 Web 应用程序时,我可以在其相关列表中看到我的新帐户记录和子联系人记录。
使用 SOAP API 无法实现这一点,因为使用该 API,您必须首先创建主对象,以便获取将子对象设置为的 ID。如果要在一个事务中创建所有对象,则必须将Apex 方法公开为 SOAP Web 服务并调用它。