创建潜在客户后,将 Salesforce 潜在客户和客户数据从 REST API 调用发送到 SAP Hybris

问题描述 投票:0回答:1

在 salesforce 中创建潜在客户时,我想将所有潜在客户详细信息及其帐户详细信息从 REST API 调用发送到 SAP hybris。

任何人都可以建议任何与如何将 salesforce 数据发送到 SAP 等外部系统相关的源代码吗?

下面是我用来创建自定义 API 的源代码。

我还想在创建或更新潜在客户时使用触发器,是否需要任何批量化或需要包装类来将数据从 salesforce 发送到外部站点(从 REST API)。

代码:

public class CalloutExampleToCreateMultipleContacts {

    public static final String CONSUMER_Key = ''; 
// paste your client id here
    public static final String CONSUMER_SECRET = '';
// paste the client secret here
    public static final String USERNAME = '[email protected]'; 
// paste your your name here
    public static final String PASSWORD = '';//paste the salesforce password and the security token
    

         public static void insertLead(List<Lead> LeadList){
        AccessTokenWrapper accessTokenWrapperObj = genrateToken();
        //this is the wrapper class of token generation 
        system.debug('--access token->'+accessTokenWrapperObj);
        if(accessTokenWrapperObj != null && accessTokenWrapperObj.access_token != null){

            String endpoint = 'https://cloudanalogy123-dev-             ed.my.salesforce.com/services/apexrest/createContact22/';
            String requestBody = JSON.serialize(LeadList);
            HTTP http = new HTTP();
            HttpRequest request = new HttpRequest();
            request.setBody(requestBody);
            request.setMethod('POST');
            request.setHeader('Authorization', 'Bearer '+accessTokenWrapperObj.access_token);
            request.setHeader('Content-type','application/json');
            request.setHeader('Accept','application/json');
            request.setEndpoint(endpoint);
            HttpResponse response = http.send(request);
            System.debug('Status code:'+response.getStatusCode()+'==>'+response.getBody());
            
            
         }
        }
    
         // function to get the access token

          public static AccessTokenWrapper genrateToken()
        {
         String requestBody =        'grant_type=password&client_id='+CONSUMER_Key+'&client_secret='+CONSUMER_SECRET+'&username='+USERNAME+'&password='+PASSWORD;
        String endpoint = 'https://login.salesforce.com/services/oauth2/token';
        HTTP http = new HTTP();
        HttpRequest request = new HttpRequest();
        request.setBody(requestBody);
        request.setMethod('POST');
        request.setEndpoint(endpoint);
        
        HttpResponse response = http.send(request);
        System.debug('response==>'+response.getBody()+'Status code:'+response.getStatusCode());
        if(response.getStatusCode() == 200){
            system.debug('');

        return 
             (AccessTokenWrapper)System.JSON.deserialize(response.getBody(),                    AccessTokenWrapper.class);
        }
         else{
            return null;
        }
        
        }
    
       // wrapper class to store the access token values
         public class AccessTokenWrapper{
        public string access_token;
        public string instance_url;
        public string id;
        public string token_type;
        public string issued_at;
        public string signature;
        
        
    } 
}  

  
salesforce apex salesforce-lightning hybris-data-hub salesforce-rest-api
1个回答
0
投票

采用编写 REST API 调用的方法有一些缺点。 特别是如果您有数百万行数据。您需要一个可扩展的解决方案。喜欢:

  1. 当您必须重新加载所有数据时会发生什么?
  2. 当加载数据的批处理作业超时并需要重新启动时会发生什么?
  3. 是否有可查询的上传数据记录?
  4. 您是否有一个解决方案具有关于数据刷新频率的服务级别协议?

我建议您设置 Salesforce 实例的 Heroku Connect Postgres 镜像。顺便说一句,如果您有企业许可证,Salesforce 会为您提供一些“免费”Heroku Connect 资源。

Heroku Connect 安装后,将 RDB 同步软件包(例如 SymmetricDS)安装到 Postgres 实例,然后将 SymDS 的触发器加载到 SAP Hybris 附加到的关系数据库中。

© www.soinside.com 2019 - 2024. All rights reserved.