flectSalesforce

インデックスに戻る link to github

概要

JavaDoc

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());

クエリー

    QueryResult result = 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");
    
    List list = 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 にお問い合わせください。