Plugins

Aus Letto-Wiki
Zur Navigation springen Zur Suche springen

Plugin

Allgemeines:

  • Plugins sind kleine Unterprogramme, welche in allen Fragetypen verwendet werden können und Graphiken, Texte und Berechnungen automatisch generieren können.
  • Die Definition eines Plugins erfolgt über einen Definitionsstring und dem Plugin-Typ. zB. erzeugt der Pluginstring "R+C" der Plugins "WSR" eine Serienschaltung von einem Widerstand und einem Kondensator
  • Die genaue Definition wie der Plugin-String eingegeben werden muss ist in der Hilfe des jeweiligen Plugins ersichtlich
  • aktuell sind in LeTTo folgende Plugins realisiert:
    • Gsr: zeichnet elektrische Schaltungen und liefert auch die Maxima-Berechnung dazu - siehe Video
    • Wsr: zeichnet lineare elektrische Schaltungen und liefert auch die Maxima-Berechnung dazu - siehe Video
    • Dsr: zeichnet lineare Drehstromschaltungen und liefert auch die Maxima-Berechnung dazu - siehe Video
    • Elektronik: zeichnet elektroniksche Schaltungen mit OPV und Transistor
    • Zp: zeichnet eine elektrische Schaltung als Zweipol auf den Bildschirm. Dieses Plugin ist nur aus Kompatibilitätsgründen vorhanden. Es sollte statt dessen nur mehr "Wsr" verwendet werden.
    • SourceCode: automatische Bewertung von Sourcecode(aktuell nur Java)
    • Graph: zeichnet ein Zeitsignal in ein virtuelles Oszilloskop - siehe Video
    • DigiGraph: zeichnet digitale Signale in ein virtuelles Oszilloskop
    • Plot: zeichnet Funktionsgraphen - siehe Video
    • Freihand: Stellt für den Schüler ein Zeichenfenster zur Verfügung, in dem der Schüler Freihand zeichnen kann
    • MultiMeter: einfache Multimeter für die Anzeige von elektrischen Größen und interaktive Schülereingaben - siehe Video
  • Sobald ein Plugin definiert ist, kann über die rechte Maustaste im Fragetext-Editor auf die verfügbaren Plugin-Textmodule zugegriffen werden.

Folgende Module stehen zur Verfügung:

  • Angabe: Hier wird aus dem Plugin ein Angabetext automatisch generiert und in den Text eingefügt. Dieser Text ändert sich nicht, falls am Plugin-String etwas geändert wird, muss also nach einer Plugin-String-Änderung neu eingefügt werden.
  • Graphik: Hiermit wird ein Graphig Tag in eckigen Klammern [PIG ... ] im Fragetext eingefügt. Die Berechnung der Graphik erfolgt dann zur Laufzeit und wird deshalb individuell für jeden Schüler mit seinen Datensätzen berechnet. Der PIG-Tag kann je nach Plugin auch Parameter enthalten welcher zur Konfiguration der Graphik verwendet werden können. Diese Parameter sind vom Plugin abhängig und werden deshalb in der Plugin-Hilfe des Plugins beschrieben. Die Paramter des PIG-Tags können im Fragetext ganz normal verändert werden.

Ein Anführungszeichen " muss im Definitionsstring mit einem Backslash verblockt werden.

 [PIG Plugin2 "text(2,2,tex=\"\alpha\")"/] 
  • Im Maxima-Feld kann mit der rechten Maustaste auf das Berechnungsmodul eines Plugins zugegriffen werden, falls das Plugin eine Maxima-Berechung ausgeben kann.

Plugin-Entwicklung

  • Um eigene Plugins entwickeln zu können steht ein Demoplugin einer einfachen Uhr auf Github zur Verfügung https://github.com/LeTTo-GmbH/letto-pluginuhr.git
  • Die Kommunikation erfolgt über eine Rest-Schnittstelle (Swagger-Doku des Uhr Plugins https://build.letto.at/pluginuhr/swagger-ui/index.html)
  • Das Plugin muss am eigenen LeTTo-Server der Schule wo es genutzt werden soll über das Setup-Service https://servername/config regisitriert werden und eingebunden sein.
    • Die Doku für die Endpoints des Setup-Services liegt ebenfalls als Swagger-Doku vor (https://build.letto.at/config/swagger-ui/index.html)
    • Für die Registratur eines Plugins benötigt man den Endpoint /config/auth/user/registerplugin aus dem config-controller
  • Die Dokumentation befindet sich ebenfalls im Uhr-Plugin im Sourcecode.
    • Die notwendigen Controller für die REST-Kommunikation findet man im Verzeichnis src/main/java/at/open/letto/plugin/controller
      • info-controller : allgemeine Information welche jedes Service liefern muss (von extern erreichbar)
      • base-info-controller : allgemeine Information welche jedes Service liefern muss (nur aus dem Docker-Netzwerk erreichbar)
      • ping-controller : interner Ping für health-check (nur aus dem Docker-Netzwerk erreichbar)
      • api-extern-open-controller: offene Endpoints welche von extern erreichbar sein müssen für ajax und allgemeine Informationen (von extern erreichbar)
      • api-controller : die eigentliche Plugin-Schnittstelle zwischen LeTTo und Plugin (nur aus dem Docker-Netzwerk erreichbar)
      • api-extern-controller : für eine gesicherte Verbindung von einem externen LeTTo-Server wenn Plugin und LeTTo nicht auf dem gleichen Server liegen (noch nicht fertig implementiert) jedoch gleiche Funktion wie api-controller (von extern erreichbar)
    • Den Rest-Client für die Registratur am Setup-Service findet man in der Klasse RestSetupService.class (Methode registerPlugin()) im Verzeichnis src/main/java/at/letto/setup/restclient
      • Im Uhr Plugin erledigt die Registrator das ConnectionService mit der Methode registerPluigin()