Déclencher un WF K2 sur événement Salesforce

Nous avons vu il y a quelques temps comment utiliser du contenu Salesforce dans ses applications K2 avec la nouvelle version du connecteur. Aujourd’hui, je vous propose de voir comment paramétrer Salesforce pour déclencher un workflow K2 sur capture d’événement.

Pré-requis côté K2

Dans un 1er temps, il est primordial d’avoir pensé à activer les webservices K2. On en parlait dans cet article sur les intégrations Flow, je vous invite donc à le consulter si ce point vous est étranger.

Ensuite, il nous faut un workflow à démarrer avec un datafield qui contiendra l’identifiant de l’objet SalesForce qui a déclenché. Pour l’article, nous allons utiliser un très simple processus qui envoi un e-mail. Le classique HelloWorldFromK2 qui ressemble à ça :

Le workflow utilize pour les tests

Nous noterons l’ID interne du workflow qu’on retrouve dans l’URL du Management Site une fois le workflow sélectionné.

Retrouver l’ID du process rapidement

Et maintenant, côté Salesforce

Alors l’idée n’est pas de rentrer dans le détail et de faire une formation complète sur l’ajout de spécifique dans Salesforce, mais de vous donner les clés pour pouvoir commencer à mixer les technologies.

Autoriser le tenant Salesforce à communiquer avec votre serveur K2

Pour cela il faut aller dans la partie SETTINGS > Security > Remote Site Settings de la configuration de votre tenant Salesforce et ajouter un nouveau site. Il faut juste lui donner un nom et spécifier la bonne URL racine :

Configuration d’un remote site
Paramétrer une connexion vers ce serveur

L’idée est de paramétrer une ouverture de connexion qui sera ensuite utilisée au niveau de l’appel aux webservices K2. Pour cela, toujours dans la partie configuration de la plateforme Salesforce, aller dans les SETTINGS > Security > Named Credentials et ajouter les informations de connexion à votre serveur. Nous avons configuré une connexion par mot de passe plutôt qu’OAuth, mais cette option est également envisageable.

Configuration d’une connexion à réutiliser
Créons à présent un trigger Salesforce

Pour cela, nous allons avoir besoin de la console de développement Salesforce, qu’on retrouve dans le menu de configuration en haut à droite de Salesforce

Accès à la developer console Salesforce

Créons un trigger sur l’objet compte depuis le menu File > New > Apex Trigger, en sélectionnant l’objet Account dans la liste déroulante et en choisissant un nom pour notre classe.

Création d’un trigger sur l’objet Account

Reste juste à écrire le code nécessaire.

Pour faire court : on paramètre le trigger pour qu’il se déclenche après la création du compte côté Salesforce. Alors, il appelle la méthode StartWF de la classe K2France en passant l’ID salesforce et le nom du compte.

Trigger Salesforce

La classe K2 est configurée pour utiliser les Named Credentials créés précédemment. On commence par construire l’URL du webservice, incluant l’ID du workflow K2, puis on crée la chaîne json contenant le Folio et 2 datafields permettant de faire le lien avec Salesforce (seul l’ID est réellement necessaire) :

Le contenu de la Class K2France

Avec la possibilité de faire du copier/coller pour ceux qui veulent :

public class K2France {
    @future (callout=true)
 public static  void StartWF(string accountId,string accountName)
 {
     //system.Debug('K2');
     string workflowEndpointURI = '/Api/Workflow/V1/workflows/';
     string workflowid = '108';
     string workflowURL = workflowEndpointURI + workflowid;
     Httprequest request = new HttpRequest();
     Http http = new Http();
     request.setMethod('GET');
     request.setEndpoint('callout:K2France'+workflowURL);
     request.setHeader('Content-Type', 'application/json');
     request.setTimeout(120000);
     string jsonString = '{"folio": "Account '+accountName+'","expectedDuration": 86400,"priority": 1,"dataFields": {"Account_ID": "'+accountId+'","Account_Name": "'+accountName+'"}}';
     request.setBody(jsonString);          
     //Making call to external REST API
     HttpResponse response = http.send(request);  
     //System.debug('responseBody: '+response.getBody());
 }
}

A l’exécution

Reste donc à créer un compte dans Salesforce et regarder ce qu’il se passe :

Création du compte dans Salesforce
Résultat côté K2 Workspace
Résultat côté e-mail

Si vous avez des questions, n’hésitez pas à utiliser les commentaires.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.