七、Salesforce API:
1.SOAP API:可以用来创建、检索、更新和删除数据。但是相对来说比较笨重。
2.REST API:功能与SOAP API类似,优势是更加轻量级。
3.BULK API:基于REST API的大量数据处理API。可以使用query, queryAll, insert, update, upsert和delete等方法。
4.Metadata API:用于修改Salesforce元数据。
5.WSDL:Web Service定义语言,提供了在开发环境中用于调用API的详细信息。
八、JAVA调用REST API:
static int proxyPort = 10080;
static String userName = "sys-set@nexim.sony.com";
static String password = "nexim1234";
static String authEndPoint = "https://login.salesforce.com/services/Soap/u/57.0";
static String object = null;
static String strSoql = "select id from Account";
public static boolean login() {
// FSC Shiroma ログインユーザIn/Out分割に伴いコメントアウト
String soapEndpoint = null;
String restEndpoint = null;
ConnectorConfig partnerConfig = null;
ConnectorConfig config = null;
Proxy proxy = null;
// リトライ可能回数を取得
RETRY_LIMIT = 5;
RETRY_WAIT_TIME = 10000;
while (true) {
try {
// SFDC接続情報設定
// ログインしてセッションIDを取得
partnerConfig = new ConnectorConfig();
// ログイン情報設定
partnerConfig.setUsername(userName);
partnerConfig.setPassword(password);
partnerConfig.setAuthEndpoint(authEndPoint);
// proxy情報設定
proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));
partnerConfig.setProxy(proxy);
// 接続
new PartnerConnection(partnerConfig);
// 接続設定の定義
config = new ConnectorConfig();
// セッションIDを格納
config.setSessionId(partnerConfig.getSessionId());
config.setProxy(proxy);
soapEndpoint = partnerConfig.getServiceEndpoint();
restEndpoint = soapEndpoint.substring(0, soapEndpoint.indexOf("Soap/")) + "async/" + apiVersion;
config.setRestEndpoint(restEndpoint);
// 圧縮設定についてデバッグ時でなければtrueに設定
config.setCompression(true);
// trueだとHTTPリクエストおよびレスポンスの表示
config.setTraceMessage(false);
// configからBulkConnectionオブジェクトを作成
connection = new BulkConnection(config);
break;
} catch (ConnectionException e) {
if (!connectionRetry()) {
System.out.println(e.getMessage());
return false;
}
} catch (AsyncApiException e) {
if (!connectionRetry()) {
System.out.println(e.getMessage());
return false;
}
}
}
return true;
}
九、Bulk API:
1.Bulk API通过简单的接口,可以向Salesforce中导入大量的数据,或是进行大量数据的查询。
2.Bulk API 2.0要在Salesforce API 41.0及之后的版本的API才能使用,而关于其的查询Job则需要在API 47.0及之后版本才能使用。
3.API的有效期限:Salesforce API从Release日开始,最少有3年的support时间。
十、Date、Date/Time、Text类型之间的转换:
1.Date/Time和Date之间的转换:
(1)Date/Time和Date之间的转换:
①DATEVALUE()函数:Date/Time→Date
②DATETIMEVALUE()函数:Date→Date/Time,Time默认为标准时间的12:00 am。
(2)Date和Text之间的转换:
①TEXT()函数:Date→Text
②DATEVALUE()函数:Text→Date,Text格式应遵循YYYY-MM-DD。
(3)Date/Time和Text之间的转换:
①TEXT()函数:Date/Time→Text
②DATEVALUE()函数:Text→Date,Text格式应遵循YYYY-MM-DD。
十一、数据库操作:
1.Apex操作数据库的方法:
(1)DML语句:
查找:[queryString]
添加:insert
修改:update
删除:delete
添加或修改:upsert
(2)DataBase类的方法:
查找:[queryString]
添加:insert
修改:update
删除:delete
添加或修改:upsert
2.DML和Database类操作的区别:
(1)DML进行批量操作时,如果其中某一条出错,则会全部回滚;而Database类的操作可以设定参数来控制是否跳过出错的那条数据。
(2)Database类方法可以进行事务处理,DML则无法进行。
3.两种方法比较:
(1)普通的增删改查处理推荐使用DML,因为写法简便。
(2)如果需要使用批处理、事务、或是某一条数据出错跳过的场合则要使用Database类。
4.Database类常用方法:
(1)public static List<SObject> query(String queryString)
查询
(2)public static Database.SaveResult insert(sObject recordToInsert, Boolean allOrNone)
插入单条数据
public static Database.SaveResult[] insert(sObject[] recordsToInsert, Boolean allOrNone)
插入多条数据
注:allOrNone参数设为true时,一个操作失败则全部回滚;为false时,即使本条数据操作失败,也会继续进行下面的操作。
(3)update和delete的写法和insert类似。
5.Database类进行事务处理:
(1)public static System.Savepoint setSavepoint()
设置savepoint
(2)public static Void rollback(System.Savepoint databaseSavepoint)
回滚