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.
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.
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!
Pour le traitement du client, vous pouvez utiliser Javascript setTimeout. Par exemple, comme ça.
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.
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!
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.
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.
Avez-vous déjà utilisé Process? Je n'étais pas .. J'avais l'impression que je pouvais l'utiliser comme ça.
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.
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