[JAVA] Comment implémenter le traitement asynchrone dans Outsystems

introduction

En participant au Calendrier de l'Avent en tant que membre informatique de l'entreprise qui a changé d'emploi, Je publierai un article sur Qiita pour la première fois! Depuis que j'ai changé de travail, je développe des applications avec Outsystems. Je voudrais partager ce que je n'ai pas trouvé de réponse même si je l'ai recherchée pendant le processus de développement.

Cette fois, je vais vous présenter comment implémenter le traitement asynchrone dans Outsystems.

Auto-introduction

Je posterai pour la première fois, alors je vais me présenter. Auparavant, j'ai travaillé pendant environ 7 ans en tant que SE qui est résidente dans divers projets avec environ 30 SIers. À cette époque, je développais en Java et C #, et réalisais également des processus en amont tels que la définition et la conception d'exigences. À partir de là, j'ai changé d'emploi pour une société de ressources humaines affiliée à l'étranger et je suis devenue une SE en interne. Actuellement, nous développons principalement des applications pour améliorer l'efficacité commerciale interne avec Outsystems.

table des matières

Qu'est-ce que le traitement asynchrone?

Qu'est-ce que le traitement asynchrone en premier lieu? Je vais l'expliquer pour ceux qui le disent. J'ai pensé, mais il y avait un article qui l'expliquait, alors veuillez vous y référer. https://qiita.com/kiyodori/items/da434d169755cbb20447

Par exemple, si vous appuyez sur un bouton sur une page Web et qu'il faut beaucoup de temps pour parcourir l'écran La convivialité n'est pas bonne, donc Cela signifie que le traitement qui n'a pas à attendre le résultat du traitement s'exécutera de manière asynchrone!

En Java, nouvelle classe qui hérite de Thread ou une classe qui implémente Runnable Cela semble être réalisé en appelant la méthode start, Je ne savais pas comment y parvenir avec Outsystems, alors je voulais le partager.

Passons au sujet principal!

Méthode de mise en œuvre dans le traitement des clients

Pour le traitement du client, vous pouvez utiliser Javascript setTimeout. Par exemple, comme ça. image.png

Ce que fait l'image ci-dessus Vérifiez l'état de la batterie de votre smartphone ou tablette et envoyez un e-mail d'alerte lorsque la batterie est faible Je crée une action client appelée NotifyBatteryStatus Je l'appelle avec setTimeout.

setTimeout($actions.NotifyBatteryStatus($parameters.Level, $parameters.IsPlugged), 0); Le premier argument de setTimeout est l'action (avec argument) que vous souhaitez traiter de manière asynchrone. Le deuxième argument est le nombre de millisecondes à exécuter. Cette fois, je veux l'exécuter immédiatement, donc je le mets à 0.

Étant donné que l'envoi de courrier n'a pas d'autre choix que d'appeler une action serveur, il faut du temps pour le traiter via le réseau. Je n'ai pas eu à regarder le résultat du traitement, donc J'essaie de l'exécuter de manière asynchrone, y compris la partie qui détermine s'il faut envoyer un e-mail.

Donc, si vous voulez le rendre asynchrone dans le traitement client, vous pouvez utiliser setTimeout! Cela semble bientôt sortir si vous avez de l'expérience avec Javascript.

Méthode de mise en œuvre dans le traitement du serveur

En passant, il est facile de savoir que le traitement du client peut être effectué en utilisant Javascript. La méthode de mise en œuvre dans le traitement du serveur est unique à Outsystems et il a fallu beaucoup de temps pour enquêter. Donc, en conclusion, il y a deux façons!

Traitement asynchrone à l'aide de la minuterie (l'argument ne peut pas être spécifié)

Le minuteur est un processus par lots qui doit démarrer ou être exécuté manuellement, n'est-ce pas? Je me sens. Vous pouvez appeler ce minuteur à partir d'une action du serveur. image.png

Comme ça Vous pouvez appeler le processus Timer en faisant glisser et en déposant Wake ~ sous le Timer dans l'action du serveur. Ainsi, cela fonctionne de manière asynchrone avec l'action du serveur que vous effectuez. Lorsque vous appelez Wake ~, il ne sera pas exécuté immédiatement, mais sera exécuté après quelques secondes.

Cependant, la difficulté avec le traitement asynchrone dans Timer est que les paramètres ne peuvent pas être transmis. La prochaine solution est de le résoudre.

Traitement asynchrone utilisant Process (des arguments peuvent être spécifiés)

Avez-vous déjà utilisé Process? Je n'étais pas .. J'avais l'impression que je pouvais l'utiliser comme ça. image.png

Vous pouvez appeler Launch ~ of Process à partir de l'action serveur et spécifier l'argument. Entity n'est pas possible, mais BasicType tel que Text and Integer et EntityIdentifier peuvent être utilisés comme arguments. Passez donc le EntityIdentifier comme argument et Il est possible d'obtenir des données d'Entity et de les traiter dans Process.

finalement

C'est pourquoi j'ai présenté comment implémenter le traitement asynchrone dans Outsystems. Récemment, Saas publie diverses API, mais il faut du temps pour l'appeler avec REST ou SOAP, donc cela prend du temps. Je pense qu'il est courant d'appeler de tels processus de manière asynchrone, donc J'espère que vous pourrez vous y référer!

Recommended Posts

Comment implémenter le traitement asynchrone dans Outsystems
Comment implémenter le calcul de la date en Java
Comment implémenter le filtre de Kalman par Java
Comment appliquer les conventions de codage en Java
Comment implémenter la fonctionnalité de classement dans Rails
Comment implémenter une fonctionnalité similaire dans Rails
Comment implémenter la pagination dans GraphQL (pour ruby)
Comment rendre une image partiellement transparente avec le traitement
Comment implémenter UICollectionView avec du code uniquement dans Swift
Comment implémenter la connexion invité en 5 minutes sur le portefeuille de rails
Comment implémenter une fonctionnalité intéressante dans Ajax avec Rails
[Rails, JS] Comment implémenter l'affichage asynchrone des commentaires
Résumé de la mise en œuvre des arguments par défaut en Java
[Rails] Comment mettre en œuvre le scraping
[Java] Comment implémenter le multithreading
[Rails] Comment définir des macros dans Rspec et standardiser le traitement
Comment implémenter l'affichage sur une seule ligne de TextView dans le développement Android
Comment utiliser Lombok au printemps
Comment trouver May'n dans XPath
Comment masquer la barre de défilement dans WebView
Essayez d'implémenter le traitement asynchrone dans Azure
Comment itérer indéfiniment en Ruby
Essayez d'implémenter Yuma dans Ruby
Comment exécuter Ant dans Gradle
Comment maîtriser la programmation en 3 mois
Comment apprendre JAVA en 7 jours
Comment installer Bootstrap dans Ruby
Implémentation du traitement asynchrone dans Tomcat
Comment utiliser InjectorHolder dans OpenAM
Comment installer jQuery dans Rails 6
[Rails] Comment mettre en œuvre le classement par étoiles
Comment utiliser les classes en Java?
Comment nommer des variables en Java
Comment définir Lombok dans Eclipse
Essayez d'implémenter Yuma en Java
[Traitement × Java] Comment utiliser les tableaux
Comment concaténer des chaînes avec Java
Comment installer Swiper in Rails
J'ai essayé d'implémenter le traitement Ajax de la fonction similaire dans Rails
Comment implémenter un travail qui utilise l'API Java dans JobScheduler
[RubyOnRails] Comment implémenter le pull-down sur form_with en fonction des données de table
Comment éviter le traitement en double par addEventListener
[swift5] Comment spécifier la couleur en hexadécimal
Prise en charge multilingue de Java Comment utiliser les paramètres régionaux
Comment changer le nom de l'application dans les rails
Comment utiliser le volume nommé dans docker-compose.yml
Essayez d'implémenter l'ajout n-aire en Java
Comment filtrer JUnit Test dans Gradle
Comment insérer une vidéo dans Rails
Comment inclure Spring Tool dans Eclipse 4.6.3?
Comment ajouter un fichier jar dans ScalaIDE
Comment faire une conversion de base en Java
[Traitement × Java] Comment utiliser la boucle