Introduction
Lors de l’intégration dans Acumatica à l’aide de l’API REST, il est très utile d’utiliser Acumatica.RESTClient.dll. L’équipe de développement d’Acumatica a fourni cet outil dans Github à l’adresse suivante : Acumatica/AcumaticaRESTAPIClientForCSharp (github.com)
Une partie de ce référentiel est le code complet d’un outil qui crée tous les modèles pour un point de terminaison donné qui peuvent être utilisés conjointement avec RESTClient. Cet outil s’appelle EndpointModelGenerator.
Téléchargez la dernière version de ce référentiel complet, car les modifications de code seront apportées à la fois à lacumatica A. REPOS. API. Client.sln et aussi le EndpointModelGenerator.sln.
Dans mon article de blog précédent, Intégration à l’aide du client d’API REST avec le module de fabrication d’Acumatica, je décris comment utiliser les modèles existants pour les points de terminaison DEFAULT et MANUFACTURING . Mais que se passe-t-il si vous devez personnaliser ces points de terminaison ou créer un nouveau point de terminaison ?
Le code EndpointModelGenerator fourni dans Github est une application de bureau C# qui utilise la sortie JSON de la définition Open API d’un point de terminaison De services Web et crée les classes C # associées qui peuvent être utilisées avec restclient.dll. Passons en revue les étapes sur la façon dont cela fonctionne.
Vous devez ouvrir la solution dans Visual Studio 2022, car elle nécessite .Net 6. Construisez et exécutez le projet tel quel, et il vous sera demandé de faire 3 étapes:
- Entrez le chemin d’accès à un projet Visual Studio qui conservera les modèles.
- Coller dans le JSON pour le point de terminaison
- Cliquez sur un bouton pour générer les fichiers C# pour les modèles.
C’est assez simple - mais il y a du travail de préparation à faire.
Prérequis
Pour commencer, j’ai étendu le point final par défaut à un nouveau appelé DEVMVPBlog, version 20.200.001. Voir ci-dessous pour la capture d’écran de ce point final. Il y a une nouvelle entité dans ce point de terminaison pour les questions d’inventaire, qui est absente du point de terminaison DEFAULT . N’importe lequel de vos points de terminaison personnalisés à partir de la version 20 ou supérieure fonctionnera de la même manière.
Ensuite, créez un nouveau projet dans la solution Acumatica.REST.Client . Pour cet exemple, le projet est ajouté au dossier Points de terminaison. Il s’agit d’une bibliothèque de classes C #, et je l’ai nommée Acumatica.DEVMVPBlog_20.200.001 pour conserver la même convention d’affectation de noms que celle utilisée par les projets de point de terminaison existants. Le projet est créé avec un seul fichier de classe vide, comme indiqué :
Supprimez le Class1.cs car il ne sera pas utilisé, puis enregistrez vos modifications dans la solution.
Ensuite, vous devez revenir au point de terminaison personnalisé, cliquer sur les ellipses (...), et choisir OpenAPI 2.0. Un nouvel onglet s’affiche pour afficher la représentation JSON de la définition de point de terminaison. (voir les exemples ci-dessous)
Les données JSON pour mon point de terminaison étendu sont TRÈS longues - plus de 95000 lignes. Il est trop grand pour être collé dans la zone de texte sur le EndpointModelGenerator, j’ai donc choisi d’apporter une modification à la façon dont EndpointModelGenerator fonctionne dans le code de base. Donc, pour cette étape, j’ai enregistré le texte JSON de la page Web dans un fichier texte avec l’extension de .json.
J’ai ensuite modifié le code EndpointModelGenerator pour demander à l’utilisateur de rechercher le fichier de schéma de point de terminaison .json au lieu de le coller directement dans le champ de texte. Ensuite, j’ai changé le bouton Générer pour ouvrir le fichier et l’utiliser dans le processus générateur lui-même.
Le formulaire ressemble maintenant à ceci, avec les étapes (1), (2) et (3) toutes définies comme des boutons.
Les modifications de code au processus de génération sont affichées ici :
GIST: https://gist.github.com/dianecawley/2018d5f1cc4146966848056bd6b45f6f
Exécuter le générateur de modèles
Maintenant que tout est préparé, il est temps d’exécuter le générateur et de voir les résultats.
Étape (1) – Cliquez sur Sélectionner un projet. Accédez au fichier .csproj qui a été créé pour être utilisé avec la nouvelle définition de point de terminaison, puis cliquez sur Ouvrir.
Notez que plusieurs autres zones de texte sont remplies avec les informations nécessaires pour procéder à la génération des modèles.
Étape (2) – Cliquez sur Sélectionner le fichier de schéma JSON. Accédez au fichier .json créé à partir de la définition Open API d’Acumatica, puis cliquez sur Ouvrir.
Le chemin d’accès au fichier est affiché sur le formulaire.
Étape (3) - Cliquez sur le bouton Générer . C’est là que tout le travail a lieu. La zone de texte du journal sera renseignée avec chacune des entités du point de terminaison au fur et à mesure de leur traitement.
Vérifiez les résultats dans RESTAPIClient Code
Ouvrez la solution Acumatica.REST.API.Client. Notez que le projet Acumatica.DEVMVPBlog_20.200.001 a maintenant été renseigné avec les sous-dossiers API et Modèle - et toutes les entités du point de terminaison ont maintenant des définitions de classe appropriées. J’ai ouvert la classe InventoryIssue car c’était la raison principale du nouveau point de terminaison dans cet exemple.
La création de la solution créera le Acumatica.DEVMVPBlog_20.200.001.dll, qui pourra ensuite être utilisé dans votre projet de code d’intégration.
Utilisez le point de terminaison résultant .dll
Ouvrez votre solution d’intégration et ajoutez une référence au point de terminaison nouvellement créé .dll (à partir de la version de la dernière section).
Ensuite, ajoutez les instructions « utilisation » pour les deux *. Api et *. Classes de modèles dans les .dll référencées. Voir l’exemple ci-dessous.
Voici un snip de code utilisant l’objet InventoryIssues nouvellement disponible
GIST: https://gist.github.com/dianecawley/842df182253669de0a2d37c429ec1b76
Conclusion
Le générateur de modèle de point de terminaison est un véritable générateur de temps lorsqu’un point de terminaison personnalisé a été créé dans Acumatica et qu’un logiciel tiers doit utiliser le client d’API REST pour l’intégration. Même si quelques étapes sont nécessaires dans le processus de création des modèles de point de terminaison, c’est beaucoup moins que d’écrire les classes individuellement. Un grand merci à Dmitrii Naumov pour la création du client API REST ainsi que du générateur de modèles. En tant qu’ISV Acumatica avec un produit connecté, notre équipe gagne du temps en utilisant ces outils.
Bon codage!