Comment intégrer Creatio à d'autres systèmes ?

Comment intégrer Creatio à d'autres systèmes ?

Par la puissance de la plateforme Low-Code / No-Code, Creatio essaie de limiter un maximum les besoins en développement lorsqu'on parle d'intégrations via des WebServices. Dans la suite de cet article, nous passerons en revue les méthodes d'exposition et d'appel d'API via des logiques très simples et basiques afin de s'attarder, par la suite, sur des logiques conditionnelles plus complexes ayant recourt, certaines fois, à du code.

De quelles manières Creatio peut communiquer avec d'autres systèmes ?

Pour communiquer avec d'autres systèmes, Creatio propose de multiples solutions :

  • L'appel d'une API via l'élément spécifique d'un business process
  • L'exposition des données via le protocole OData
  • L'exposition d'un WebService côté serveur en C# --> Pour appliquer une logique plus complexe

L'appel d'une API via l'élément spécifique d'un business process

J'aimerais commencer avec cette fonctionnalité très spécifique à Creatio permettant l'appel d'un WebService au sein d'une logique plus ou moins complexe d'un business process. Cette fonctionnalité étant à mon sens extrêmement puissante bien qu'avec quelques limites, elle permet d'intégrer plusieurs systèmes en seulement quelques minutes dépendant de la complexité de celle-ci.

Configuration du WebService

Creatio met à disposition une section à part dans le module Studio (module de base obligatoire et présent dans tous les autres modules) afin de configurer un WebService.

image.png

Depuis cette section, il est possible de créer un WebService en REST ou en SOAP. Dans cet article, nous allons principalement nous attarder sur l'appel d'une API en REST, étant plus populaire au moment de l'écriture de cet article.

Vous pouvez notamment insérer l'URL de l'API, les méthodes souhaitées, la méthode d'authentification avec ses identifiants ainsi que, bien évidemment, les différents paramètres souhaités de chaque méthode. Voici un exemple illustratif :

Corps de l'API :

image.png

Méthode :

image.png

Une fois que le WebService est configuré à votre guise, il est temps d'appliquer sa propre logique !

Appliquer sa propre logique via un Business Process

Creatio propose la création de Business Process afin de permettre à des utilisateurs non-techniques d'appliquer leur logique métier souhaitée. Vous trouverez de plus amples informations ici : Article Business Process

Cet article va s'attarder uniquement sur l'élément "WebService" du processus :

image.png

Qui se présente de manière automatique comme suit :

image.png

Via le processus, vous pouvez imaginer, par exemple, de lire la provenance d'un contact, regarder dans un lookup permettant de visualiser la monnaie locale en fonction du pays et de la transformer en francs suisses, en euro ou en ce que vous souhaitez.

De la même manière, pour intégrer deux systèmes entre eux, le système d'arrivée devrait exposer ses propres méthodes et, depuis Creatio, il suffit de les appeler comme indiqué ci-dessus. On peut imaginer recevoir des données grâce à la méthode GET, insérer des données dans le système d'arrivée avec la méthode POST, mettre à jour des données grâce à la méthode PUT et en supprimer grâce à la méthode DELETE. En bref, vous pouvez pratiquement tout faire de manière assez complexe sans avoir besoin de coder une seule ligne. Dans le cas où la logique viendrait à se complexifier, il est toujours possible d'ajouter des éléments de type "Script" en C# dans le processus.

L'exposition des données via le protocole OData

Une autre spécificité à surligner de la part de Creatio est la génération automatique d'OData au moment de création d'un objet. Dans Creatio, un objet représente simplement une table avec ses colonnes. Grâce à ceci, il est possible d'effectuer un grand nombre d'opérations figurant Out-of-the-box dans le système. Il est possible de recevoir des données selon certains filtres, recevoir des collections d'objets, recevoir seulement les champs spécifiques de certains objets, créer des entrées directement dans Creatio pour l'objet en question, mettre à jour des entrées, etc.

Il existe une documentation extrêmement bien écrite afin de comprendre le fonctionnement en question avec l'aide de Postman : Documentation Creatio OData Postman

L'exposition d'un WebService côté serveur en C#

Installation de l'IDE

Finalement, si l'OData généré automatiquement sur les objets ne suffit pas, il est possible d'exposer un WebService avec sa propre logique, allant jusqu'à une complexité extrêmement élevée. Afin d'implémenter ceci et si vous avez une instance de Creatio de développement on-premise, je vous conseille fortement d'installer Visual Studio. Et le configurer pour qu'il soit compatible avec Creatio en suivant le Guide

Pour des instances sur le Cloud Creatio, vous serez malheureusement obligés de développer le WebService directement dans les paramètres avancés de Creatio sans avoir la possibilité de débugger le code.

Best practices pour l'implémentation de code côté serveur

Afin d'initier l'environnement pour commencer à coder, je conseille fortement d'aller dans les paramètres avancés de Creatio et créer un nouveau paquet en "Separate Assembly" afin qu'il puisse se compiler plus rapidement. Dans ce paquet, ajoutez un "Source Code".

image.png

Ensuite, sauvez simplement le script qui vient d'être crée et publiez le. Grâce à cette procédure qui vient d'être entreprise, nous pourront retrouver le script dans projet C# côté serveur (.csproj). Ouvrez Visual Studio et ouvrez le projet en question se trouvant à l'emplacement :

C:\inetpub\wwwroot\Creatio\Terrasoft.WebApp\Terrasoft.Configuration\Pkg{Nom du paquet}\Files

L'implémentation

Dans votre code source, copiez-collez le script suivant :

 namespace Terrasoft.Configuration.{nom de votre script}
{
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.ServiceModel;
    using System.ServiceModel.Activation;
    using System.ServiceModel.Web;
    using Terrasoft.Core;
    using Terrasoft.Core.DB;
    using Terrasoft.Core.Entities;
    using Terrasoft.Web.Common;

    [ServiceContract]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
    public class {nom de votre script}: BaseService
    {
        /// Connection to the DB
        #region Properties
        private SystemUserConnection _systemUserConnection;
        private SystemUserConnection SystemUserConnection
        {
            get
            {
                return _systemUserConnection ?? (_systemUserConnection = (SystemUserConnection)AppConnection.SystemUserConnection);
            }
        }
        #endregion


        #region Methods : REST
        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        public string NomDeVotreMethode()
        {
            return "la logique de votre WebService";
        }
    }

        #endregion

        #region Methods : Private

        #endregion
    }

Ensuite, pour accéder à votre WebService, il vous faudra accéder à l'URL suivant :

http://{votre site Creatio}/0/rest/{nom de votre script}/{NomDeVotreMethode}**

Vous pouvez tester votre nouveau WebService grâce à, par exemple, Postman. N'oubliez pas l'authentification .

Conclusion

Creatio est extrêmement puissant en matière d'intégration, d'appels et d'exposition de WebServices. Il est possible d'arriver à des résultats incroyables par le simple biais de Business Processes au niveau de l'appel d'APIs et grâce à l'OData généré automatiquement sur la création d'un objet pour l'exposition de WebServices. De plus, si vous avez besoin de logique encore plus complexe, il est toujours possible d'ajouter des scripts à vos business process et d'exposer un WebService côté serveur avec du code pur et dur.

A propos de l'auteur

photo_profil_jon-modified (1).png

Jonathan Quendoz Consultant technique SAP / CRM Creatio @ CISEL Informatique SA