[Salesforce] Enregistrement et mise à jour des ressources statiques avec l'API Tooling (exemple d'API SOAP Java)

Qu'est-ce que l'API Tooling?

L'API Tooling fournit des interfaces SOAP et REST qui vous permettent de créer des outils de développement personnalisés pour les applications Force.com. Cette fois, nous utiliserons l'API SOAP dans l'API Tooling pour enregistrer et mettre à jour les ressources statiques. Utilisez Enterprise WSDL.

Flux de développement

  1. Génération et acquisition de WSDL d'entreprise
  2. Importez les fichiers Jar requis dans votre projet Générez un fichier Enterprise Jar et importez-le dans le projet à l'aide du WSDL obtenu en 3.1.
  3. Mise en œuvre à la source

La description

1. Génération et acquisition de WSDL d'entreprise

Veuillez consulter le manuel Salesforce.

2. Importez les fichiers Jar requis dans votre projet

L'exemple nécessite le package «Force.com Web Service Connector». Un exemple d'importation Maven est ajouté au fichier de paramètres pom.xml ci-dessous. Pour d'autres outils de gestion de projet, voir 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>

Générez un fichier Enterprise Jar et importez-le dans le projet à l'aide du WSDL obtenu en 3.1.

Créez un fichier Enterprise Jar avec la source suivante

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

Il existe de nombreux exemples d'éclipse sur le net pour l'importation dans un projet, alors recherchez sur Google et omettez cela. Voici un exemple d'importation de vscode.

  1. Distribuez le fichier Jar généré ci-dessus dans le dossier dans lequel vous souhaitez l'enregistrer.
  2. Ajoutez la semelle suivante au fichier ".classpath" sous le dossier de sauvegarde du projet.

.classpath


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

4. Mise en œuvre à la source

4.1. Importer les classes requises

//Pour lire des ressources statiques
import java.nio.file.Paths;
import java.io.IOException;
import java.nio.file.Files;

//Pour les appels d'API Tooling
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. Générer une connexion d'entreprise

getEnterpriseConnection


    private static EnterpriseConnection getEnterpriseConnection() throws ConnectionException {        ConnectorConfig config = new ConnectorConfig();
        config.setUsername("username"); //Spécifiez en fait le compte de connexion sandbox
        config.setPassword("password"); //Spécifiez en fait le mot de passe de connexion au sandbox

        return Connector.newConnection(config);
    }

4.3. Télécharger des ressources statiques

createStaticResource


    private static void createStaticResource(EnterpriseConnection connection) throws IOException, ConnectionException{
        
        StaticResource sr = new StaticResource();
        sr.setName("test");
        // STATICRESOURCE_FILE_PATP:Chemin complet du fichier de ressources statiques
        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. Mettre à niveau les ressources statiques

updateStaticResource


    private static void updateStaticResource(EnterpriseConnection connection) throws IOException, ConnectionException{
        // QUERY_STATICRESOURCE_SQL:SOQL pour l'inspection des ressources statiques(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. Méthode principale

main


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

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

référence

1. API de métadonnées 2. Force.com Web Service Connector 3. Appelez l'API SOAP Salesforce depuis Java

Recommended Posts

[Salesforce] Enregistrement et mise à jour des ressources statiques avec l'API Tooling (exemple d'API SOAP Java)
Conseils d'utilisation de Salesforce SOAP et de l'API Bulk en Java
Générer du code client Java pour l'API SOAP de SalesForce
Gérez l'API de date et d'heure Java 8 avec Thymeleaf avec Spring Boot
Gérez les exceptions avec fraîcheur avec les expressions lambda Java 8 et l'API Stream
Exemple de code pour analyser la date et l'heure avec SimpleDateFormat de Java
[Java] Zone de pile et zone statique
[Java] JavaConfig avec classe interne statique
Exemple d'utilisation de l'API Bulk de Salesforce à partir d'un client Java avec PK-chunking