[JAVA] So implementieren Sie die asynchrone Verarbeitung in Outsystems

Einführung

Durch die Teilnahme am Adventskalender als IT-Mitglied des Unternehmens, das den Arbeitsplatz gewechselt hat, Ich werde zum ersten Mal einen Artikel über Qiita veröffentlichen! Seit ich meinen Job gewechselt habe, habe ich Apps mit Outsystems entwickelt. Ich möchte mitteilen, was ich im Entwicklungsprozess nicht finden konnte.

Dieses Mal werde ich vorstellen, wie die asynchrone Verarbeitung in Outsystems implementiert wird.

Vorstellen

Ich werde zum ersten Mal posten, also werde ich mich vorstellen. Zuvor arbeitete ich ungefähr 7 Jahre als SE, die in verschiedenen Projekten mit ungefähr 30 SIern ansässig ist. Zu dieser Zeit entwickelte ich in Java und C # und führte auch vorgelagerte Prozesse wie Anforderungsdefinition und Design durch. Von dort wechselte ich den Job zu einem mit dem Ausland verbundenen Personalunternehmen und wurde eine interne SE. Derzeit entwickeln wir hauptsächlich Apps zur Verbesserung der internen Geschäftseffizienz mit Outsystems.

Inhaltsverzeichnis

--Was ist asynchrone Verarbeitung?

Was ist asynchrone Verarbeitung?

Was ist überhaupt asynchrone Verarbeitung? Ich werde es denen erklären, die sagen. Ich dachte, aber es gab einen Artikel, der es erklärte, also beziehen Sie sich bitte darauf. https://qiita.com/kiyodori/items/da434d169755cbb20447

Wenn Sie beispielsweise eine Schaltfläche auf einer Webseite drücken und es lange dauert, bis der Bildschirm angezeigt wird Die Benutzerfreundlichkeit ist also nicht gut Dies bedeutet, dass die Verarbeitung, die nicht auf das Verarbeitungsergebnis warten muss, asynchron ausgeführt wird!

In Java neu eine Klasse, die Thread erbt, oder eine Klasse, die Runnable implementiert Es scheint durch Aufrufen der Startmethode realisiert zu werden, Ich konnte nicht herausfinden, wie ich es mit Outsystems erreichen kann, also wollte ich es teilen.

Gehen wir zum Hauptthema!

Implementierungsmethode in der Client-Verarbeitung

Für die Client-Verarbeitung können Sie Javascript setTimeout verwenden. Zum Beispiel so. image.png

Was das obige Bild tut Überprüfen Sie den Akkustatus Ihres Smartphones oder Tablets und senden Sie eine Warn-E-Mail, wenn der Akku fast leer ist Ich erstelle eine Client-Aktion namens NotifyBatteryStatus Ich rufe es mit setTimeout auf.

setTimeout($actions.NotifyBatteryStatus($parameters.Level, $parameters.IsPlugged), 0); Das erste Argument von setTimeout ist die Aktion (mit Argument), die Sie asynchron verarbeiten möchten. Das zweite Argument ist, wie viele Millisekunden ausgeführt werden sollen. Dieses Mal möchte ich es sofort ausführen, also setze ich es auf 0.

Da das Senden von E-Mails keine andere Wahl hat, als eine Serveraktion aufzurufen, dauert es einige Zeit, sie über das Netzwerk zu verarbeiten. Ich musste mir also das Verarbeitungsergebnis nicht ansehen Ich versuche es asynchron auszuführen, einschließlich des Teils, der bestimmt, ob eine E-Mail gesendet werden soll.

Wenn Sie es also in der Client-Verarbeitung asynchron machen möchten, können Sie setTimeout verwenden! Dies scheint bald herauszukommen, wenn Sie Erfahrung mit Javascript haben.

Implementierungsmethode in der Serververarbeitung

Es ist übrigens leicht zu erreichen, dass die Client-Verarbeitung mit Javascript erfolgen kann. Die Implementierungsmethode in der Serververarbeitung ist für Outsystems einzigartig und die Untersuchung hat lange gedauert. Zusammenfassend gibt es also zwei Möglichkeiten!

Asynchrone Verarbeitung mit Timer (Argument kann nicht angegeben werden)

Timer ist ein Batch-Prozess, der gestartet oder manuell ausgeführt werden soll, nicht wahr? Ich fühle mich. Sie können diesen Timer über eine Serveraktion aufrufen. image.png

So was Sie können den Timer-Prozess aufrufen, indem Sie Wake ~ unter dem Timer in die Serveraktion ziehen und dort ablegen. Es funktioniert also asynchron mit der Serveraktion, die Sie ausführen. Wenn Sie Wake ~ aufrufen, wird es nicht sofort ausgeführt, sondern nach einigen Sekunden.

Die Schwierigkeit bei der asynchronen Verarbeitung im Timer besteht jedoch darin, dass Parameter nicht übergeben werden können. Die nächste Lösung besteht darin, es zu lösen.

Asynchrone Verarbeitung mit Process (Argumente können angegeben werden)

Haben Sie jemals Process verwendet? Ich war nicht .. Ich hatte das Gefühl, ich könnte es so gebrauchen. image.png

Sie können Launch ~ of Process über die Serveraktion aufrufen und das Argument angeben. Entität ist nicht möglich, aber BasicType wie Text and Integer und EntityIdentifier können als Argumente verwendet werden. Übergeben Sie also den EntityIdentifier als Argument und Es ist möglich, Daten von Entity abzurufen und in Process zu verarbeiten.

Schließlich

Aus diesem Grund habe ich die Implementierung der asynchronen Verarbeitung in Outsystems vorgestellt. Vor kurzem hat Saas verschiedene APIs veröffentlicht, aber es braucht Zeit, um sie mit REST oder SOAP aufzurufen, also braucht es Zeit. Ich denke, es ist üblich, solche Prozesse asynchron aufzurufen Ich hoffe, Sie können sich darauf beziehen!

Recommended Posts

So implementieren Sie die asynchrone Verarbeitung in Outsystems
So implementieren Sie die Datumsberechnung in Java
So implementieren Sie den Kalman-Filter mit Java
So erzwingen Sie Codierungskonventionen in Java
So implementieren Sie Ranking-Funktionen in Rails
So implementieren Sie eine ähnliche Funktion in Rails
So implementieren Sie Paginierung in GraphQL (für Ruby)
So machen Sie ein Bild mit Processing teilweise transparent
So implementieren Sie UICollectionView mit Code nur in Swift
So implementieren Sie die Gastanmeldung in 5 Minuten im Rails-Portfolio
So implementieren Sie eine nette Funktion in Ajax mit Rails
[Rails, JS] So implementieren Sie die asynchrone Anzeige von Kommentaren
Zusammenfassung der Implementierung von Standardargumenten in Java
[Rails] So implementieren Sie Scraping
[Java] So implementieren Sie Multithreading
[Rails] So definieren Sie Makros in Rspec und standardisieren die Verarbeitung
So implementieren Sie eine einzeilige Anzeige von TextView in der Android-Entwicklung
Wie man Lombok im Frühling benutzt
So finden Sie May'n in XPath
So blenden Sie die Bildlaufleiste in WebView aus
Versuchen Sie, die asynchrone Verarbeitung in Azure zu implementieren
Wie man in Ruby auf unbestimmte Zeit iteriert
Versuchen Sie, Yuma in Ruby zu implementieren
Wie man Ant in Gradle ausführt
Wie man die Programmierung in 3 Monaten beherrscht
Wie man JAVA in 7 Tagen lernt
So installieren Sie Bootstrap in Ruby
Implementierung der asynchronen Verarbeitung in Tomcat
Verwendung von InjectorHolder in OpenAM
So installieren Sie jQuery in Rails 6
[Rails] So implementieren Sie die Sternebewertung
Wie verwende ich Klassen in Java?
So benennen Sie Variablen in Java
So setzen Sie Lombok in Eclipse
Versuchen Sie, Yuma in Java zu implementieren
[Verarbeitung × Java] Verwendung von Arrays
So verketten Sie Zeichenfolgen mit Java
So installieren Sie Swiper in Rails
Ich habe versucht, die Ajax-Verarbeitung der ähnlichen Funktion in Rails zu implementieren
So implementieren Sie einen Job, der die Java-API in JobScheduler verwendet
[RubyOnRails] Implementieren eines Pulldowns für form_with basierend auf Tabellendaten
So verhindern Sie die doppelte Verarbeitung durch addEventListener
[swift5] So legen Sie die Farbe hexadezimal fest
Mehrsprachige Unterstützung für Java Verwendung des Gebietsschemas
So ändern Sie den App-Namen in Rails
Verwendung des benannten Volumes in docker-compose.yml
Versuchen Sie, n-ary Addition in Java zu implementieren
So filtern Sie den JUnit-Test in Gradle
So fügen Sie ein Video in Rails ein
Wie kann ich Spring Tool in Eclipse 4.6.3 einbinden?
So fügen Sie eine JAR-Datei in ScalaIDE hinzu
So führen Sie eine Basiskonvertierung in Java durch
[Verarbeitung × Java] Verwendung der Schleife