Accueil Blog Utilisation de SignalR avec les notifications push d'Acumatica

Utilisation de SignalR avec les notifications push d'Acumatica

Yuriy Zaletskyy | décembre 10, 2021

Utilisation de SignalR avec les notifications push d'Acumatica

Introduction

Il s'agit d'un suivi de la vidéo que j'ai partagée la semaine dernière sur l'atténuation du problème de l'épuisement des appels d'API à l'aide de notifications et de SignalR. Dans cet article de blog, je fournis plus de détails, ainsi que le code que vous pouvez utiliser dans votre mise en œuvre des informations que j'ai présentées.

Recevoir des notifications push Acumatica

Dans les étapes suivantes, je vous montrerai directement comment vous pouvez recevoir des notifications push d'Acumatica dans une application Windows Forms.

En utilisant les données Acumatica Sales Demo, effectuer les changements de configuration simples suivants. Ouvrez le fichier web.config et recherchez le fichier appSettings et définissez l'option EnablePushNotifications à vrai.

Ensuite, créez une enquête générique qui fournit les changements que vous devez suivre. Nommons-la "TestInqSO".TestInqSO". Nous ajouterons ensuite un élément SOOrder et des champs dans une grille - tels que Statut, Numéro de commande, Tenir, DocBal, OrderDescet ainsi de suite.

Ensuite, nous définissons plusieurs requêtes pour chaque notification de notification. Toutefois, pour obtenir des résultats optimaux, les requêtes de données doivent respecter les recommandations suivantes :

  • Ne pas utiliser l'agrégation et regroupement dans aucune des requêtes ; Acumatica ERP ne garantit pas que les notifications push fonctionneront correctement en utilisant ces paramètres.
  • N'utilisez pas de jointures entre plusieurs tables détaillées dans vos requêtes, car cela pourrait bloquer le système.
  • Si vous devez joindre plusieurs tables, utilisez une jointure gauche ou une jointure interne dans vos requêtes de données. Si vous utilisez une jointure interne, l'exécution de la requête peut être plus lente que pour une jointure gauche.
  • Utilisez une requête de données aussi simple que possible.
  • Pour une requête définie à l'aide d'une requête générique, n'utilisez pas de formule dans la Grille de résultats de la requête générique

Maintenant, allez dans le menu Push Notifications (SM302000) et créez-en une nouvelle.

Dans le champ Nom de la destinationtapez TestNotification par exemple.

Vérifier le Actif la case à cocher.

Dans le champ Type de destinationchoisissez SignalR Hub.

Dans le Demandes de renseignements génériques ajoutez une nouvelle ligne, Titre de la demande et sélectionnez l'option TestInqSO que vous avez créée précédemment et cochez la case Actif et se vos modifications.

À ce stade, vous voudrez créer un simple fichier Windows Forms avec deux boutons : Démarrer et Arrêter pour démarrer et fermer la connexion. Ensuite, créez Cliquez pour chacun des boutons.

Ensuite, définissez la classe de votre notification, comme le montre le code suivant.

GIST : https://gist.github.com/YuriyZaletskyy/7f934bd1b51eb3e1a65057c3f1c2ff91

Indiquer les étapes suivantes dans le formulaire clic de démarrage dans le gestionnaire de l'événement "start click" :

Configurez un jeton d'authentification de base pour authentifier l'application dans Acumatica ERP comme indiqué dans le code suivant.

GIST: https://gist.github.com/YuriyZaletskyy/e06bbda872d00d23b870032376958c59

Connectez-vous à une instance d'Acumatica ERP comme suit : 

GIST : https://gist.github.com/YuriyZaletskyy/e901c289ec2ccd51160fc0a08c175166

Si vous n'utilisez pas Locataires, vous pouvez vous authentifier de la manière suivante :

var basicAuthToken = Convert.ToBase64String(Encoding.UTF8.GetBytes(login + " :" + password)) ;

Vous créerez ensuite un proxy vers le SignalR en fonction du nom du hub qui a été spécifié dans le champ Nom de la destination lorsque la notification push a été définie dans le formulaire Push Notification (SM302000).

GIST : https://gist.github.com/YuriyZaletskyy/2b813ec12d8a46e46f971c3a65a7871d

Notifications de processus

Le code suivant affiche une fenêtre MessageBox avec des données JSON. Structure JSON formée par l'IG créée TestInqSO onglet Grille de résultats.

GIST : https://gist.github.com/YuriyZaletskyy/9695027bf9243bdda3361bb61cefcd9c

Lorsque les données sont créées sur l'instance Acumatica, vous recevrez ces changements dans le fichier NotificationResult.Inserted.

Lorsque des données sont supprimées sur l'instance, vous recevrez ces changements dans le fichier NotificationResult.Deleted.

Lorsque les données sont mises à jour sur l'instance, vous recevrez ces changements dans le champ NotificationResult.Deleted (données avant la mise à jour) et dans NotificationResult.Inserted (données après une mise à jour).

Dans le Arrêter il suffit de fermer la connexion :

connexion.Stop() ;

Désormais, chaque fois qu'une modification est apportée aux commandes clients (SO301000), vous recevrez des notifications.

Le code complet pour accomplir tout cela ressemble à ceci :

GIST : https://gist.github.com/YuriyZaletskyy/5dff485f3fcc787841b71e1e40cd6336

Résumé

Avec le flux de travail décrit dans cet article, vous pouvez facilement notifier les services et applications tiers des changements qui se produisent dans Acumatica. De plus, avec le mécanisme de notifications push d'Acumatica, vous pouvez obtenir une communication en temps réel entre Acumatica et d'autres services au lieu d'appeler régulièrement les API d'Acumatica, de pousser les restrictions d'appel d'API et de les épuiser, ce qui a un impact sur les limites de connexion de votre application.

Bon codage !

Articles connexes

Auteur du blog

Yuriy a commencé à programmer en 2003 en utilisant C++ et FoxPro avant de passer à .Net en 2006. Depuis 2013, il développe activement des applications utilisant le cadre Acumatica xRP, développant des solutions pour de nombreux clients au fil des ans. Il a un blog personnel, bien nommé Yuriy Zaletskyy's Blog, où il documente les problèmes de programmation qu'il a rencontrés au cours des six dernières années - partageant ses observations et ses solutions librement avec d'autres développeurs Acumatica.

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