要批量化 API 操作,请使用一些一致的符号(即,将请求包装在另一个数组中):sObjects
) 作为每个值的键。应在每个值之前重复相同的符号,因为这会转换为重复的 XML 子元素。例如,如果您想创造两个机会,请执行以下操作:
opportunity1 = [
:type, 'Opportunity',
:amount, '10.00',
:name, 'OPP1',
:closeDate, '2008-07-04',
:stageName, 'Closed Won'
]
opportunity2 = [
:type, 'Opportunity',
:amount, '10.00',
:name, 'OPP2',
:closeDate, '2008-07-04',
:stageName, 'Closed Won'
]
puts binding.create([:sObjects, opportunity1, :sObjects, opportunity2])
此 XML 在幕后创建并发送到 SFDC:
<create xmlns="urn:partner.soap.sforce.com">
<sObjects>
<type>Opportunity</type>
<amount>10.00</amount>
<name>OPP1</name>
<closeDate>2008-07-04</closeDate>
<stageName>Closed Won</stageName>
</sObjects>
<sObjects>
<type>Opportunity</type>
<amount>10.00</amount>
<name>OPP2</name>
<closeDate>2008-07-04</closeDate>
<stageName>Closed Won</stageName>
</sObjects>
</create>
以下是对同时创造的两个机会的回应:
{:createResponse=>{:result=>[{:id=>"0066000000KNMrOAAX", :success=>"true"}, {:id=>"0066000000KNMrPAAX", :success=>"true"}]}}
请注意,您一次最多可以创建 200 条记录。
另外,我注意到如果这两个值是同一个确切的对象(即执行类似的操作)binding.create([:sObjects, opportunity1, :sObjects, opportunity1])
,XML 转换器会崩溃,因此请确保它们实际上是单独的对象。这可能是框架中的一个错误,但在实际生产情况下这种情况很少见,被认为是严重的,但在测试时要小心。