flectSalesforce
インデックスに戻る
概要
SalesforceのSOAP APIラッパーです。
以下の機能がサポートされています。
- クエリ
- Create, Update, Delete, Upsert
- SQLライクなINSERT文やDELETE文によるデータ更新
- メタデータ取得
- Bulk API
- RDBのSELECT文からの直接Bulk Upsert
- Metadata API(一部のみ)
- OAuthログイン
※ 社内で必要な機能から実装されるため、すべての機能が網羅的に実装されることはおそらくありません。
SalesforceExplorerはこのライブラリの参照実装です。
サンプル
ログイン
SalesforceClient client = new SalesforceClient(new File("partner.wsdl")); UserInfo userInfo = client.login(SALESFORCE_USERNAME, SALESFORCE_PASSWORD, SALESFORCE_SECURITY_TOKEN); System.out.println(userInfo.getUsername() + ", " + userInfo.getDisplayName());
クエリー
QueryResultresult = client.query("SELECT ID, NAME FROM Account"); for (SObject obj : result.getRecords()) { System.out.println(obj.getId() + ", " + obj.getString("Name")); }
Metadataの取得
SObjectDef objectDef = client.describeSObject("Account"); if (objectDef != null) { for (FieldDef field : objectDef.getFieldList()) { System.out.println(field.getName() + ", " + field.getLabel() + ", " + field.getFieldType()); } }
オブジェクトの作成
SObject parent = client.newObject("parent__c"); parent.set("ExId__c", "xxxx"); Listlist = new ArrayList (); for (int i=0; i<10; i++) { SObject child = client.newObject("child__c"); child.setName("test_" + (i+1)); child.set("parent__r", parent); } List resultList = client.create(list); for (SaveResult result : resultList) { System.out.println(result.isCreated() + ", " + result.getId()); }
Insert文、Delete文
String insert = "insert into test__c (name, int__c, date__c) values(?, ?, ?)";
for (int i=0; i<10; i++) {
DmlResult ret = client.executeUpdate(insert, "test_" + (i+1), i+1, new Date());
System.out.println(ret.getSuccessCoount() == 1 ? "OK" : "NG");
}
DmlResult ret2 = client.executeUpdate("delete from test__c where int__c <= ?", 5);
System.out.println("DeleteCount = " + ret2.getSuccessCount());//5
RDBのSELECT結果をBulkUpsert
java.sql.Connection con; String sql = "SELECT Id as ExId__c, Name as Text__c, ParentId as \"parent__r.ExId__c FROM table1"; SQLSyncRequest request = new SQLSyncRequest(con, sql, "test__c"); request.setExternalIdFieldName("ExId__c"); client.syncSQL(request);
もう少し詳細な説明とサンプルがHeroku上で公開されています。
最新版
ダウンロード - 1.2.1
Maven
<repositories> <repository> <id>jp.co.flect</id> <name>FLECT maven repository</name> <url>http://flect.github.io/maven-repo/</url> </repository> </repositories> <dependencies> <dependency> <groupId>jp.co.flect</groupId> <artifactId>flectSalesforce</artifactId> <version>1.2.1</version> </dependency> </dependencies>
ライセンス
MIT
商用利用を公式サポートする有償版のご用意があります。
詳細は info@flect.co.jp にお問い合わせください。