Accueil Blog (en) Acumatica Hackathon 2022: Disséquer un centurion - Partie II

Acumatica Hackathon 2022: Disséquer un centurion - Partie II

Dans ce post en deux parties, Brian Stevens & Gerhart van den Heever discuter du projet de hackathon gagnant de l’équipe Theta - Acumatica Centurion. Le projet Centurion se protège contre les fichiers malveillants et peu recommandables et déclenche une alarme lorsque quelqu’un tente de télécharger des fichiers suspects sur Acumatica. Qu’il s’agisse d’écrans standard, d’applications de service Web 3rd-party ou de l’application Acumatica Mobile, Acumatica Centurion ne baisse jamais la garde.
Gerhard van den Heever | Le 16 février 2022

Acumatica Hackathon 2022: Disséquer un centurion - Partie II

Dans la partie 1, Brian Stevens a décrit comment Acumatica Centurion intercepte les fichiers pour l’analyse de l’IA. Si vous l’avez manqué, vous pouvez le lire ici.

Introduction

Bien que les téléchargements de test que nous avons effectués à partir d’un écran Acumatica standard et de l’application mobile Acumatica aient été assez faciles à faire, l’équipe Theta devait prouver que la méthodologie mise en œuvre fonctionnerait, quelle que soit la façon dont les fichiers sont téléchargés dans Acumatica.  Cela signifiait que nous avions besoin d’un outil pour agir dans le rôle d’un système de parti 3rd en utilisant des services Web pour pousser les pièces jointes dans Acumatica.  Ces efforts se sont concentrés sur la création de l’utilitaire de téléchargement en masse en tant qu’application Windows autonome qui utilise des services Web pour télécharger des fichiers.

L’une des caractéristiques étonnantes d’Acumatica est que le composant de services Web est une fonctionnalité standard de l’application. Pour chaque écran d’Acumatica, l’application dispose d’un service Web de soulignement qui peut être utilisé pour insérer, modifier ou supprimer des enregistrements de l’application. Ce qui le rend encore meilleur, c’est le fait que lorsque des écrans personnalisés sont créés, ils sont prêts pour le service Web et un développeur n’a pas besoin de passer beaucoup de temps à fournir les méthodes de point de terminaison du service Web.

Construire les composantes de base du projet

Explorons maintenant deux sections du projet: l’une, la méthode Web qui fournit une connexion pour les systèmes 3rd party à utiliser et deux, le système 3rd party que nous avons utilisé pendant le projet - une application Windows Forms .

Pour notre projet, nous avons eu besoin d’un écran de journal pour fournir aux administrateurs système des informations concernant les pièces jointes lorsqu’elles sont téléchargées sur Acumatica. L’écran de journal fournit ces informations sur le fichier lui-même et qui essaie de le télécharger. Ces résultats sont reçus de Centurion avant d’être autorisés à être téléchargés. Vous pouvez le considérer comme un processus de quarantaine et un écran de journalisation pour les administrateurs.

Une fois l’écran créé et testé, l’étape suivante consistait à ajouter des services Web. Pour notre nouveau service Web, un point de terminaison a été créé et un objet d’écran personnalisé a été défini. Pour l’objet, les champs obligatoires ont été ajoutés et la méthode était maintenant prête à être utilisée.

Ci-dessous, vous pouvez voir notre point de terminaison de services Web et les champs de données que nous avons mappés:

Ensuite, nous avons construit un utilitaire windows qui serait considéré comme un 3rd système de partis. L’application contient des informations (fichiers) qui doivent être transférées à Acumatica. Pour nos besoins, l’utilitaire nécessaire pour lire les fichiers d’un dossier et charge chaque fichier individuellement dans Acumatica.

L’utilitaire d’application utilise le dossier standard Microsoft Directory.GetFiles() pour retourner tous les noms de fichiers du dossier et créer un objet FileInfo. Lorsque le fichier est lu, il est converti en un tableau d’octets et déplacé vers un flux de mémoire. À l’aide du flux de mémoire, l’objet est envoyé à Acumatica à l’aide d’une méthode PUT simple du fichier et lié à l’enregistrement du journal créé à l’aide des bibliothèques Newtonsoft.Json . Lorsque la méthode PUT appelle les méthodes d’attachement d’Acumatica, les informations sont soumises à Cloudmersive pour une analyse plus approfondie et fournissent les résultats à l’enregistrement de journal spécifié.

Étape 1 – Obtenir les fichiers

L’application Windows lit les fichiers à partir d’un répertoire spécifié pour démarrer le processus des fichiers à télécharger :

GIST : https://gist.github.com/Gerhard-ZA/3b67ba2ff66fdd606d930a366218583f

Étape 2 - Créez une écriture de journal sur Acumatica

Maintenant, nous créons l’enregistrement qui est utilisé pour le journal d’entrée qui contient les résultats Cloudmersive :

GIST : https://gist.github.com/Gerhard-ZA/f99159f6002abcbc2f3a756ff0c8431e

Étape 3 - Conversion du fichier dans le flux de mémoire

Ensuite, chaque fichier est lu à partir du flux de fichiers et converti en un tableau d’octets:

GIST: https://gist.github.com/Gerhard-ZA/4fb8b62501783714fc565cef66ca1d21

Étape 4 – Envoyez les données à Acumatica, à l’aide des services Web PUT

Et enfin, les données du flux de mémoire sont téléchargées sur Acumatica.

GIST: https://gist.github.com/Gerhard-ZA/8c661c9f9723da53a4a96522db934daa

Extension de la solution

Nous pouvons facilement étendre la solution pour accomplir des choses plus utiles:

  1. Migration des données - téléchargez des images de masse à partir d’un système de dossiers, redimensionnez et attachez-les aux articles en stock
  2. Systèmes de3ème parti qui poussent dans les données et les documents EDI
  3. Utilisateurs qui prennent des photos pour le téléchargement - vérifiez NSFW et la taille du fichier
  4. Numériser les documents téléchargés à la recherche de virus

Résumé

La plate-forme Acumatica xRP nous a permis d’étendre facilement le système de base pour ajouter un scénario de cas d’utilisation avec un ensemble d’exigences commerciales que nous avions convenues entre les membres de notre équipe avant de nous envoler pour Las Vegas où le hackathon se tenait. Lors de nos sessions de planification, nous avons choisi un projet utilisant une sécurité avancée sans avoir à créer de nouveaux correctifs ou fichiers qui modifient le cœur du système lui-même. Nous avons simplement étendu Acumatica pour fournir un accès à la valeur commerciale que nous avons identifiée pour notre projet.  Nous avons pu exécuter avec succès notre plan dans le temps imparti du hackathon grâce à l’excellent travail d’équipe de tous les membres de notre équipe - seulement 12 heures.

Pour en savoir plus sur notre équipe et les autres équipes gagnantes, lisez le post de récapitulation du Hackathon 2022 ici.

Bon codage!


Présentation PowerPoint du Hackathon de l’équipe Theta (PDF)

Auteur du blog

Gerhard est directeur technique chez Astraia Technology (VAR) et FBA Software (ISV). Il est responsable de la création et de la livraison réussies du déploiement des solutions et des produits de l’organisation pour Acumatica. Il a plus de 10 ans d’expérience dans le développement de logiciels dans le domaine ERP et s’implique généralement en tant qu’architecte de système lors de projets. Étant né et élevé en Afrique, Gerhard aime sortir dans la nature et profite de chaque occasion pour faire un safari avec sa famille ou profiter des vignobles du Cap.

Recevez des mises à jour de blog dans votre boîte de réception.