Commands sind Objekte, die genau eine Methode namens execute haben. Dadurch ist es möglich, eine Sequence aus Methoden aufzurufen, indem eine Liste von Commands zusammengestellt wird. Die wird beispielsweise von den SequenceSelectionActions genutzt.
Die Plugins des Systems stellen Commands über Systembibliotheken zur Verfügung:
Verwaltungsaufgaben, wie beispielsweise das Aktivieren und Deaktivieren des FormelCaches (Start-/StopFormulaCacheCommand) oder das Speichern von Änderungen (SaveObjectCommand) werden als atomare Commands bereitgestellt, aus denen dann eine Sequenz zusammenzustellen ist, um einen Workflow zu automatisieren.
Diese feingranulare Aufteilung in Commands ist sinnvoll, um Möglichkeiten zu Performance-Optimierungen bereitzustellen (z.B. Nutzung eines aktiven Formelcaches für mehrere Commands etc.).
Aufgabe der Aktionen (Actions) ist es, das User Interface (UI) mit der Applikationslogik zu verbinden.
Das System-Objekt Action ist die Oberklasse für alle zukünftig bereitgestellten Möglichkeiten, Commands der Applikationslogik aus der Benutzungsschnittstelle aufzurufen.
Die bisher durch das System bereitgestellten Ausprägungen sind SelectionActions, die immer voraussetzen, dass ein oder mehrere Objekte selektiert sind, für die eine Aktion ausgeführt wird. Darüberhinaus wird es später möglicherweise auch Aktionen geben, die keine Selektion voraussetzen und "global" funktionieren.
Eine SelectionAction nimmt eine Auswahl selektierter Objekte (selectedEOs) (im allgemeinen Fall eine Multiselection) und gibt diese an ihre interne run-Methode weiter
SelectionActions verfügen über die folgenden Attribute:
- Bild: Das hier hinterlegte Icon wird sowohl im Kontext-Menü als auch als Button in der Toolbar angezeigt, falls die Option Button zum Projekt-Explorer-Toolbar hinzufügen aktiviert ist.
- Selektiertes Objekt: Objekt der Klassifikations-Hierarchie des Anwendungsmodells, für das die Action ausgeführt werden kann. Wenn hier beispielsweise die RTS24 des Pfuderer-Modells ausgewählt ist, so wird die Aktion auch nur im Kontext-Menü für RTS24-Objekte (Klassen/Instanzen) angezeigt.
- In Bibliothek sichtbar / In Projekten sichtbar: Legt fest, ob die Action für Klassen (Bibliothek) oder Instanzen (Projekte) oder beide ausgeführt werden kann, beispielsweise nur für RTS24-Instanzen in Projektkonfigurationen
- Anzahl selektierter Objekte: Legt fest, wieviele Objekte selektiert sein können/müssen, damit die Aktion sinnvoll ausgeführt werden kann. Beispiele sind 1, 1..2, 3..6, + (=1..n)
Anmerkung: Diese Festlegung leitet sich beispielsweise aus Randbedingungen der Implementierung der run-Methode ab. Diese ist möglicherweise nur für die Verarbeitung eines Objektes ausgelegt. - PopUp-Pfad: Definiert den Pfad zur Aktion innerhalb des Kontext-Menüs. Die einzelnen Pfadeinträge werden mit ForwardSlash getrennt. Beispielsweise Menü/Untermenü/erzeugen.
- Angezeigter Name: Im Kontext-Menü angezeigter Name der Aktion.
- Schaltfläche im Projekt-Explorer: Der Projekt-Explorer-Sicht wird in der Toolbar-Leiste eine Schaltfläche hinzugefügt, worüber die Aktion gestartet werden kann.
Anmerkung: Damit die Änderung sichtbar wird, muss die Sicht geschlossen und neu geöffnet werden (oder ein Neustart durchgeführt werden)
Finden von SelectionActions:
Beim Anpassen einer PopUp-Struktur, die aus vielen Aktionen besteht, ist es wichtig, ausgehend von einem PopUp-Eintrag zur entsprechenden Aktion navigieren zu können. Dies ist möglich, indem man die Aktion über das Kontext-Menü ausführt, dabei aber die Taste STRG gedrückt hält.
SelectionActions können über Scripte beliebig angepasst werden. Für das Customizing des UIs ist in diesem Fall aber Scripting-KnowHow erforderlich! Scripte haben im Weiteren den Nachteil, dass im Script-Code festgelegt ist, wann beispielsweise welche Commands aufgerufen werden. Der Zusammenhang zwischen Aktionen und Commands ist nicht modelliert und kann so auch nicht navigiert werden.
Für die Definition einfacher Aktionen ist das System-Objekt SequenceSelectionAction definiert. Es ermöglicht die tabellarische Spezifikation einer Folge von Commands.
Die Zusammenhänge zwischen Aktionen und Commands sind bei der SequenceSelectionAction modelliert, d.h. es ist beispielsweise möglich, mit Standardmechanismen (Alt+Maus) aus der Tabelle mit Commands (siehe Screenshot) direkt zu den Commands zu navigieren.
Bei der Ausführung einer SequenceSelectionAction wird aus der modellierten Folge von Commands im Hintergrund automatisch ein Script erzeugt und dann als allgemeine SelectionAction ausgeführt.