繁体   English   中英

管理.NET + Salesforce API的事务

[英]Managing Transaction for .NET + Salesforce API

我有.NET应用程序,可通过API更新数据库和Salesforce。 我需要更新多个Salesforce对象。

代码看起来像这样

public class Service ....

public void myTransaction(..){
DBConnection dbcon;
SFConnection sfcon;

// DB Begin Transaction

//Update Database tables 
//Update SF Objects 

// DB End Transaction

}

请帮助我更好地了解如何实现交易。

我知道这是旧的,但参考那些冲浪的人:

就像LaceySnr提示的那样,无法通过API正确进行事务处理(截至2016年)。 但是,有两种方法可以通过API实现类似事务的结果。

  1. 通过在Apex中创建自定义REST端点,或
  2. 通过使用带有API的AllOrNone标头。

REST端点

要创建自定义REST端点,您将创建使用@RestResource定义的顶点类。 在该类中,您将定义一个用@HttpPost装饰的函数,该函数带有sObjects列表。 在函数中,您将设置一个保存点。

调用此新端点时,如果存在可捕获错误,则可以自行回滚。 否则,Salesforce会在成功完成该功能后自动提交。 换句话说,您不必显式提交事务。 请参阅此文档以创建REST端点 和developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/langCon_apex_transaction_control.htm用于事务控制(我不能发布两个以上的链接)。

示例顶点:

    @RestResource(urlMapping='/myendpoint/*')
    global with sharing bool class MyFirstRESTController {

       @HttpPost
       global static boolean doSomething(List<sObject> objectsToUpdate) {
           boolean error = false;
           Savepoint sp = Database.setSavepoint();

           //do something

           //oh no! there was an error
           if( error ) {
                Database.rollback(sp);
           }
           return error;
       }
    }

在该示例中,如果您将所有sObjects发布到/ services / apexrest / myendpoint / doSomething /,则应调用该函数并提供一些事务控制(例如,将对象转换为JSON并发布)。 您需要在对自定义REST端点的调用上使用“ Authorization:Bearer sessionId ”标头。 sessionId可以与从SOAP登录名检索到的sessionId相同(以防您使用wdsl生成服务)。

AllOrNone Header

有关AllOrNone标头,请参阅SOAP API文档 此标头允许您指示如果任何单个记录在更新时失败,则它们都会失败。 实质上,如果一条记录失败,则回滚整个事务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM