Plug-ins ohne Benutzeroberfläche

Plug-ins ohne Benutzeroberfläche überwachen Fensternachrichten oder werten eine Steuerungsdatei aus.

Es ist nicht zwingend notwendig, dass ein Plug-in die Innovator-Oberfläche um eigene Oberflächenelemente erweitert. Es gibt zwei Anwendungsfälle, bei denen Plug-ins verborgen im Hintergrund arbeiten.

Überwachung von Nachrichten

Es ist die Anforderung vorstellbar, dass bei Änderungen am Modell automatisiert weitere Aktionen ausgeführt werden sollen. Es könnten beispielsweise nach jedem Erzeugen einer Klasse gewisse Standardmethoden und -eigenschaften für diese Klasse generiert werden.

Bei Änderungen am Modell werden Refresh-Nachrichten verschickt. Es wird also ein MessageHandler benötigt, der eingehende Refresh-Nachrichten überprüft und ggf. zusätzliche Aktionen ausführt. MessageHandler sind üblicherweise an Fenster gebunden, die im Falle von Toolfenstern Nachrichten aber nur dann bekommen, wenn sie sichtbar sind. Eine Lösung über Fenster ist also nicht optimal. Abhilfe schafft die Schnittstelle IMessageHandable.

IMessageHandable

Die Klasse, die IApplicationComponent realisiert, kann zusätzlich die Schnittstelle IMessageHandable realisieren (siehe IWorkArea). Diese Schnittstelle enthält den Handler für Fensternachrichten:

void IMessageHandable.MessageHandler(WindowMessage)

Der Handler erhält alle Nachrichten mit Ausnahme derer, die gezielt an einzelne Fenster geschickt werden (Activated, Deactivated, Command).

Hinweis

Zur Verwendung der IMessageHandable-Schnittstelle siehe das Sample MID.Innovator.Plugin.Sample.HandleMessage.

Auswertung einer Steuerungsdatei

Die Innovator-Oberfläche kann mit einer Steuerungsdatei als Aufrufparameter gestartet werden. Die Steuerungsdatei enthält die notwendigen Daten für die Anmeldung an einem Modell, das zugehörige Plug-in, das für die Verarbeitung der Datei zuständig ist, und beliebige weitere Daten. Nach erfolgter Modellanmeldung wird eine HandleControlFile-Nachricht an das Plug-in geschickt, das dann die weitere Auswertung der Steuerungsdatei vornimmt. Dieser Ablauf soll am Beispiel einer Dokumentationsgenerierung veranschaulicht werden:

Hinweis

Zur Auswertung der Steuerungsdatei siehe das Sample MID.Innovator.Plugin.Sample.ControlFile.

  • Als erster Schritt ist die Steuerungsdatei als XML-Datei zu erstellen. Für das Beispiel ist dies die Datei DocuGeneration.xml im Verzeichnis Sample.ControlFile.

    Die Einträge Repository und Model dienen der Modellauswahl. Login enthält die notwendigen Angaben für die Modellanmeldung. Die Rolle (Attribut Role) ist in jedem Fall festzulegen. Der Benutzer (User) und ein ggf. vergebenes Passwort (Password) sind nur dann anzugeben, wenn der Repository-Server nicht mit Single Sign-on betrieben wird.

    Der Eintrag Assembly legt das Plug-in fest, das die Verarbeitung der Steuerungsdatei übernimmt. Der Wert des Eintrags entspricht dem Namen der Plug-in-Assembly.

    Der Eintrag SilentMode bewirkt die Verarbeitung der Steuerungsdatei im 'stillen Modus'. Fehlermeldungen werden dann nicht in Dialogboxen ausgegeben, sondern in der Windows Ereignisanzeige. Im Anschluss wird die Programmausführung abgebrochen. Optional kann eine Protokolldatei angegeben werden, in der zusätzlich die Ausgabe der Meldung erfolgt.

    Außer den Anmeldedaten kann die Steuerungsdatei beliebige anwendungsabhängige Daten enthalten. In diesem Beispiel enthält der Eintrag DocuCommand die Daten, die für die Dokumentationsgenerierung notwendig sind. Es wird eine WinWord-Dokumentation für ein Element und dessen Unterelemente (rekursiv) generiert.

  • Die erstellte Steuerungsdatei wird der Innovator-Oberfläche beim Start als Parameter übergeben:

    innovator.exe "MID.Innovator.controlFile=c:\Innovator\16.1\Plugin Samples\Sample.ControlFile\DocuGeneration.xml" 
  • Die Oberfläche startet und führt eine automatische Modellanmeldung gemäß den Daten in der Steuerungsdatei durch.

  • Nach erfolgter Anmeldung wird eine HandleControlFile-Nachricht an das festgelegte Plug-in geschickt. Der Pfad der Steuerungsdatei ist in den Daten der Nachricht enthalten.

  • Das Plug-in kann dann die Steuerungsdatei auslesen, die anwendungsabhängigen Daten auswerten und die Aktion dementsprechend ausführen.