Acumatica, positionné comme un ERP (Enterprise Resource Planning) de milieu de gamme, peut être déployé pour une grande variété d'entreprises - grandes, moyennes ou petites. Au fur et à mesure que les entreprises se développent, la quantité de données qu'elles doivent gérer augmente. Cependant, dans mon expérience de développement de codes personnalisés sur la plateforme Acumatica, je constate qu'un grand nombre d'organisations avec lesquelles je travaille sont trop exigeantes en matière de gestion et de traitement des données.
Acumatica dispose d'une grande variété d'écrans de traitement pour effectuer diverses tâches "en masse", et dispose en outre d'un cadre robuste mais facile à suivre pour mettre en œuvre vos propres écrans de traitement. Cependant, les enregistrements sont traités de manière séquentielle (1,2,3, etc.). Heureusement, il est possible d'activer le traitement parallèle pour les clients ayant des besoins importants en matière de traitement des données.
Le traitement parallèle tire parti du fait que les applications peuvent utiliser plus d'un fil de traitement à la fois. Pensez à l'époque où, avant les ordinateurs, les employés de bureau traitaient les transactions à la main. Comment accélérer le nombre de transactions que vous pouvez enregistrer ? Soit vous cherchiez à tout prix l'employé extraordinaire qui est super rapide, soit vous engagiez simplement plus d'employés et vous répartissiez le travail de manière égale entre eux. Acumatica peut être configuré de la même manière.
Pour activer le traitement parallèle, vous devez ajouter les clés suivantes au fichier web.config sous le nœud Configuration/Appsettings :
GIST : https://gist.github.com/lekker-solutions/320b32b5eeb15e36ce29957095862b3d
Pour tester cela, ajoutons ces clés au fichier web.config et créons un écran de traitement de base qui traite une liste d'enregistrements :
GIST : https://gist.github.com/lekker-solutions/46b8a010c4ceae41bea63707b8e9ba22
Bien que nous ayons ajouté les clés, l'écran de traitement renvoie toujours la liste complète des lots GL lorsque l'option "Traiter tout" est sélectionnée.
Cela est dû au fait que les clés ne définissent qu'une règle globale pour le traitement. Elle doit encore être activée sur votre écran personnalisé lui-même. Le code ci-dessous montre comment procéder :
GIST : https://gist.github.com/lekker-solutions/33552d7e645905d0a995a9df7f56db49
Essayons maintenant de traiter le bouton "tout" :
Lorsque vous regardez le résultat de l'écran de traitement, vous pouvez voir que tous les enregistrements ont été traités, même si le thread que nous avons attrapé n'en a vu que 10 :
Voici un diagramme illustrant la différence entre les deux et l'endroit où le point d'arrêt est pris dans le code :
Lors d'un traitement séquentiel, le thread (alias le clerk) voit la liste complète des éléments à traiter. Dans le traitement parallèle, le thread ne voit que le nombre maximum d'éléments (spécifié au niveau max dans le fichier web.config et en plus dans les options de traitement parallèle au niveau de l'écran).
Le traitement parallèle, bien qu'il ne soit pas une solution miracle, peut augmenter de manière significative la capacité de traitement des utilisateurs d'Acumatica travaillant avec de grandes quantités de données. Avec seulement quelques changements dans le fichier web.config, vous pouvez facilement l'activer à la fois dans le code de base de l'ERP et dans votre code personnalisé. Il n'est pas nécessaire de gérer vos propres threads et les autres complexités qui en découlent.
J'espère que cet article vous aidera à faire face au volume de traitement des données qui augmente de plus en plus rapidement dans ce monde en pleine transformation numérique.
Bon codage !