[Salesforce] Registrieren und Aktualisieren statischer Ressourcen mit der Tooling-API (Java-Beispiel-SOAP-API)

Was ist die Tooling-API?

Die Tooling-API bietet SOAP- und REST-Schnittstellen, mit denen Sie benutzerdefinierte Entwicklungstools für Force.com-Anwendungen erstellen können. Dieses Mal verwenden wir die SOAP-API in der Tooling-API, um statische Ressourcen zu registrieren und zu aktualisieren. Verwenden Sie Enterprise WSDL.

Entwicklungsfluss

  1. Generierung und Erfassung von WSDL für Unternehmen
  2. Importieren Sie die erforderlichen Jar-Dateien in Ihr Projekt Generieren Sie eine Enterprise Jar-Datei und importieren Sie sie mit der in 3.1 erhaltenen WSDL in das Projekt.
  3. Implementierung der Quelle

Erläuterung

1. Generierung und Erfassung von WSDL für Unternehmen

Weitere Informationen finden Sie im Salesforce-Handbuch.

2. Importieren Sie die erforderlichen Jar-Dateien in Ihr Projekt

Für das Beispiel ist das Paket "Force.com Web Service Connector" erforderlich. Ein Beispiel für den Maven-Import wird der folgenden Einstellungsdatei pom.xml hinzugefügt. Weitere Projektmanagement-Tools finden Sie unter mvnrepository.

pom.xml


<!-- https://mvnrepository.com/artifact/com.force.api/force-wsc -->
<dependency>
    <groupId>com.force.api</groupId>
    <artifactId>force-wsc</artifactId>
    <version>48.1.0</version>
</dependency>

Generieren Sie eine Enterprise Jar-Datei und importieren Sie sie mit der in 3.1 erhaltenen WSDL in das Projekt.

Erstellen Sie eine Enterprise Jar-Datei mit der folgenden Quelle

java –classpath force-wsc-30.0.0.jar;ST4-4.0.7.jar;antlr-runtime-3.5.jar com.sforce.ws.tools.wsdlc enterprise.wsdl enterprise.jar

Es gibt viele Beispiele für Eclipse im Internet zum Importieren in ein Projekt. Suchen Sie also bei Google und lassen Sie dies weg. Das folgende Beispiel zeigt den Import von vscode.

  1. Verteilen Sie die oben generierte Jar-Datei in dem Ordner, in dem Sie sie speichern möchten.
  2. Fügen Sie der Datei ".classpath" unter dem Projektspeicherordner die folgende Sohle hinzu.

.classpath


<classpathentry kind="lib" path="C:\xxx\.jar\enterprise.jar"/>

4. Implementierung der Quelle

4.1. Importieren Sie die erforderlichen Klassen

//Zum Lesen statischer Ressourcen
import java.nio.file.Paths;
import java.io.IOException;
import java.nio.file.Files;

//Für Tooling-API-Aufrufe
import com.sforce.soap.enterprise.Connector;
import com.sforce.soap.enterprise.EnterpriseConnection;
import com.sforce.soap.enterprise.QueryResult;
import com.sforce.soap.enterprise.SaveResult;
import com.sforce.soap.enterprise.sobject.SObject;
import com.sforce.soap.enterprise.sobject.StaticResource;
import com.sforce.ws.ConnectionException;
import com.sforce.ws.ConnectorConfig;

4.2. Generieren Sie eine Unternehmensverbindung

getEnterpriseConnection


    private static EnterpriseConnection getEnterpriseConnection() throws ConnectionException {        ConnectorConfig config = new ConnectorConfig();
        config.setUsername("username"); //Geben Sie tatsächlich das Sandbox-Anmeldekonto an
        config.setPassword("password"); //Geben Sie tatsächlich das Sandbox-Anmeldekennwort an

        return Connector.newConnection(config);
    }

4.3. Statische Ressourcen hochladen

createStaticResource


    private static void createStaticResource(EnterpriseConnection connection) throws IOException, ConnectionException{
        
        StaticResource sr = new StaticResource();
        sr.setName("test");
        // STATICRESOURCE_FILE_PATP:Vollständiger Pfad der statischen Ressourcendatei
        byte[] Body = Files.readAllBytes(Paths.get(STATICRESOURCE_FILE_PATH));
        sr.setBody(Body);
        sr.setCacheControl("Public");
        sr.setContentType("application/json");

        SaveResult[] ret = connection.create(new SObject[]{sr});
        for(SaveResult r: ret) {
            System.out.println(r.getId());
            System.out.println(r.getSuccess());
            if (r.getErrors().length > 0) {
                System.out.println(r.getErrors()[0]);
            }
        }
    }

4.4 Statische Ressourcen aktualisieren

updateStaticResource


    private static void updateStaticResource(EnterpriseConnection connection) throws IOException, ConnectionException{
        // QUERY_STATICRESOURCE_SQL:SOQL zur Überprüfung statischer Ressourcen(select id form staticresource where name = 'test')
        QueryResult qr = connection.query(QUERY_STATICRESOURCE_SQL);
        SObject[] srs = qr.getRecords();
        StaticResource sr = (StaticResource)srs[0];
        byte[] Body = Files.readAllBytes(Paths.get(STATICRESOURCE_FILE_PATH));
        sr.setBody(Body);
        SaveResult[] ret = connection.update(new SObject[]{sr});
        for(SaveResult r: ret) {
            System.out.println(r.getId());
            System.out.println(r.getSuccess());
            if (r.getErrors().length > 0) {
                System.out.println(r.getErrors()[0]);
            }
        }
    }

4.5 Hauptmethode

main


    public static void main( String[] args )  throws IOException, ConnectionException {

        EnterpriseConnection connection = getEnterpriseConnection();
        // createStaticResource(connection);
        updateStaticResource(connection);
    }

Referenz

1. Metadaten-API 2. Force.com Web Service Connector 3. Salesforce SOAP API von Java aus aufrufen

Recommended Posts

[Salesforce] Registrieren und Aktualisieren statischer Ressourcen mit der Tooling-API (Java-Beispiel-SOAP-API)
Tipps zur Verwendung von Salesforce SOAP und Bulk API in Java
Generieren Sie Java-Clientcode für die SOAP-API von SalesForce
Behandeln Sie die Java 8-Datums- und Uhrzeit-API mit Thymeleaf mit Spring Boot
Behandeln Sie Ausnahmen kühl mit Java 8-Lambda-Ausdrücken und der Stream-API
Beispielcode zum Parsen von Datum und Uhrzeit mit Java SimpleDateFormat
[Java] Stapelbereich und statischer Bereich
[Java] JavaConfig mit statischer innerer Klasse
Beispiel für die Verwendung der Bulk-API von Salesforce vom Java-Client mit PK-Chunking