Aktionsbaustein
Zur Navigation springen
Zur Suche springen
Der Aktionsbaustein ist der einzige Expecco-Elementtyp, der spezialisierte Subtypen aufweist. Die folgende Liste zeigt die konkreten Subtypen der Aktionsbausteine, die wiederum die Rolle der einzelnen Elemente kurz erklären und das Symbol, das dafür in der expecco-GUI verwendet wird, einführt:
Die zusammengesetzte Aktion (CompoundAction) wird zum Modellieren von Workflows verwendet. Jede Aktion dieses Typs enthält einen internen Workflow, der auch Internes Netzwerk des Blocks genannt wird. Alle anderen Aktionsbaustein-Typen werden als Elementarblöcke bezeichnet, da sie im Gegensatz dazu kein internes Netzwerk haben, sondern elementare Funktionsblöcke (als Programmcode oder Remote procedure Call) implementieren.
Das Smalltalk-Codeblockelement ist eine elementare Aktion, die durch ein Programm in Smalltalk-Syntax definiert wird. Der Code, wird zur Ausführung in der Smalltalk Syntax interpretiert von der unterliegenden VM (Virtual Machine) in expeccoo selbst ausgeführt; er hat also Zugriff auf das gesamte API des unterliegenden Laufzeitsystems (dazu gibt es auch einen eingebauten Klassenbrowser, der über das Tools-Menu geöffnet wird).
JavaScript-Codeblockelemente sind Aktionen, die in Form von Quellcode im JavaScript-Stil definiert werden. Jedes Element enthält Programmcode, der zur Laufzeit entsprechend der JavaScript-Syntax interpretiert wird. Wie bei obigem Baustein wird der Code in expecco direkt ausgeführt und hat Zugriff auf die internen APIs.
Bridged Code Elemente (Java, Python, NodeJS, C, C++, Smalltalk etc.) Bei diesen wird analog zu obigen eine Funktion in der jeweiligen Programmiersprache definiert, aber in einem externen Interpreter (node, python, java, etc.) ausgeführt. Der Interpreter wird dazu einmalig gestartet, das jeweilige Codefragment darin installiert, und mit jeder Aktivierung des Bausteins aufgerufen. Es ist also eine Remote Procedure Call Aktivierung, wobei die Werte der Eingangs- und AusgangsPins über eine Socketverbindung ausgetauscht werden. Der Interpreter kann daher sowohl auf der lokalen als auch auf einer entfernten Maschine laufen. Mittels sprachspezifischen Anweisungen können beliebige Bibliotheken eingebunden und angesprochen werden ("import" bzw. "require" Anweisungen der jeweiligen Programmiersprache).
Mit diesen Blöcken können beliebige Bibliotheken und Frameworks der jeweiligen Programmiersprache eingebunden und aufgerufen werden.
Die Shell- und Batch Skriptblockelemente werden zum Aufruf von Shell bzw. Batch Skripts verwendet. Jedes Element dieses Typs enthält ein Skript, welches zur Laufzeit in der Shell- oder Batch-Syntax interpretiert wird. Da der Inhalt direkt an das zugrunde liegende Betriebssystem weitergeleitet wird und nicht von der expecco-Engine interpretiert wird, hängt die Ausführbarkeit der Inhalte von der lokalen Plattform zur Ausführungszeit ab; d.h. daß Batch Skripte nicht auf Unix Plattformen und umgekehrt Shell Skripte nicht auf Windows laufen (es sei denn, es wurde unter Windows eine Shell Umgebung installiert). Der Elementtyp liefert auch die typischen Streams vom und zum Betriebssystemprozess, wie
stdin
,stdout
undstderr
. Expecco bietet auch einen kombinierten Shell+Batch Baustein, welcher je nach unterliegendem Betriebssystem einen der beiden Kommandointerpreter aufruft; damit lassen sich portable Skripte relativ einfach implementieren.
Script Elemente in anderen Programmiersprachen (Python, NodeJS, Ruby, GnuPlot, etc.) Bei diesen wird ein Scriptinterpreter für jede Aktionsausführung neu gestartet und der Code ausgeführt.
Mit diesen können Kommandos des unterliegenden Betriebssystem ausgeführt werden, als wäre es in ein OS-Konsolenfenster eingegeben worden. Die Ausführbarkeit des Befehls hängt von der lokalen Plattform zur Ausführungszeit ab. Das Element liefert auch die typischen Streams vom und zum Betriebssystemprozess, wie
stdin
,stdout
undstderr
.
- RPC (Remote Procedure Call) Elemente senden eine Anforderung via SOAP, REST oder XML-RPC an einen Dienst.
Mit Data Generator Blöcken können vordefinierte Datensätze in einer Zeitreihe generiert werden (und z.B. einem Testcase als Eingangsdaten dienen). Das Element enthält eine Liste von Werten sowie Zeitintervalle, die zur Laufzeit verwendet werden, um jedes Tupel zu einem bestimmten Zeitpunkt zu erzeugen und an die Ausgabeschnittstelle zu liefern.