Einleitung
Die Simplifier-Plattform kann über ihre Plugin-Architektur auf Basis von Webservices um Kernfunktionen erweitert werden. Jedes Plugin stellt einen Microservice dar, der sich beim Simplifier registriert und seine Funktionen über den Prozessdesigner zur Verfügung stellt. Im folgenden Beispiel verwenden wir die beliebte nodejs Javascript Runtime, die eine schnelle Entwicklung von serverseitigen Funktionalitäten ermöglicht. (
Plugin Architectur)
Voraussetzungen
- Docker Hub-Konto (Docker Hub)
- Git (Installieren von Git)
Schritt 1 – Klonen des Github-Projekts
Erstellen Sie einen Ordner zum Klonen des SimplifierNodeJSPlugin-Codes aus dem GitHub-Projekt.
Im Folgenden verwenden wir /DIRECTORY als Platzhalter für den Systempfad des Ordners.
Geben Sie den folgenden Code in das Befehlszeilenfenster ein (ersetzen Sie /DIRECTORY durch den Pfad Ihres Ordners):
cd /DIRECTORY git clone https://github.com/simplifier-ag/SimplifierNodeJSPluginExample.git
Schritt 2 – Einstellungen ändern
Generieren Sie ein Simplifier Plugin Secret , indem Sie der entsprechenden Schritt-für-Schritt-Anleitung in der Simplifier-Dokumentation folgen.
Im Folgenden verwenden wir 192.168.1.2 als Platzhalter für die Simplifier-Domain und 192.168.1.3 als Platzhalter für die Plugin-Server-Domain.
Fügen Sie das generierte Geheimnis in die Konfigurationseinstellungsdatei (DIRECTORY/simplifierPlugin/conf/settings.json) des SimplifierNodeJSPlugin ein:
{ "registration": { "host": "192.168.1.2", "port": 8085, "secret": "XXX" }, "http": { "interface": "0.0.0.0", "port": 9877, "exposedHost": "192.168.1.3" }, "timeoutSeconds": 60 }
Schritt 3 – Erstellen einer Dockerfile
Erstellen Sie eine
neue Datei “Dockerfile” mit Inhalt:
FROM node:current-stretch #install node application WORKDIR /usr/src/app COPY package*.json ./ RUN npm install COPY . . EXPOSE 9877 #start application ENTRYPOINT [ "node", "/usr/src/app/bin/runPlugin.js", "&" ]
Schritt 4: Erstellen von Dockerignore
Erstellen Sie eine
Neue Datei “.dockerignore” mit Inhalt:
.git .gitignore node_modules npm-debug.log Dockerfile* docker-compose* README.md LICENSE
Schritt 5 – Erstellen eines Container-Images
Verwenden Sie Folgendes
Befehlszeilen zum Erstellen eines
Containerimage von SimplifierNodeJSPlugin (ersetzen Sie USER_NAME durch den Namen Ihres Docker Hub-Kontos):
cd /DIRECTORY/simplifiernodeplugin/ docker build -t USER_NAME/simplifier_plugin . docker push USER_NAME/simplifier_plugin:latest
Schritt 6 – Image aus Container erstellen
Erstellen Sie als Nächstes eine
Image aus dem Container, indem Sie Folgendes eingeben
Befehlszeilen:
docker network create --driver=bridge --subnet=192.168.1.0/24 br0 docker run --name simplifier --network br0 --ip=192.168.1.2 -v -d /opt/simplifier/data:/opt/simplifier/data -p 80:80 -p 443:443 -p 8085:8085 -p 8090:8090 simplifierag/onpremise docker run --name plugin --network br0 --ip=192.168.1.3 -p 9877:9877 -d -v /opt/simplifierPlugin/config:/usr/src/app/conf USER_NAME/simplifier_plugin
Schritt 7 – Öffnen Sie die Benutzeroberfläche des Simplifier-Plugins
Öffnen Sie Ihre Simplifier-Plattform und wählen Sie die Plugin-Kachel in der Dashboard-Ansicht aus.
Wenn sich das neue Plugin korrekt registriert hat, sehen wir auf der rechten Seite die verfügbaren Funktionen als Slots.
Schritt 8 – Führen Sie die Plugin-Funktion im Business Objekt aus
Wir können nun die Slots mit dem
Simplifier-API innerhalb eines Business-Objekts (
Dokumentation zur Verwendung des Simplifier-Plugins) :
Simplifier.Plugin.[PluginName].[PluginSlot] Simplifier.Plugin.SimplifierNodeJSPlugin.sayHello()
Schritt 9 – Schreiben Sie Ihre eigenen Plugin-Slots mit NodeJS-Code
-
- Erstellen Sie eine neue MySlot.js Datei im Ordner:[Directory]/simplifiernodeplugin/plugin/slots
- Fügen Sie den folgenden Code als Basisframework in die neue Slot-Datei ein:
"use strict"; let Slot = require('../../lib/slot'); class MySlot extends Slot { execute() { } } module.exports = new MySlot();
- Fügen Sie der vorhandenen Slot-Schnittstelle die neue Slot-Klasse hinzu: [Directory]/SimplifierNodeJSPlugin/plugin/interfaces/slots.js
const slots = [ require('../slots/MySlot') ..... ]
Bitte überprüfen Sie die SayHelloSlot.js oder PrintToConsoleSlot.js Dateien als Codebeispiele.
Optionaler Schritt 10 – Aufheben der Registrierung des Plug-ins vom Simplifier
Wenn der Plugin-Webservice gestoppt wird, hebt sich die Registrierung des Plugins automatisch vom Simplifier ab.
Es kann jedoch vorkommen, dass das Plugin aufgrund eines nodejs-Programmierfehlers unerwartet abstürzt oder nicht mehr korrekt läuft.
In diesem Fall muss der Simplifier neu gestartet werden oder es muss folgender API-Request aufgerufen werden:
POST: http://192.168.1.2:8080/plugin/registerPlugin Plugin-Secret: **PLUGINSECRET** { "action": "unregister", "plugin": { "hostname": "Not relevant for this request", "port": -1 "actorSystemName": "Not relevant for this request", "pluginName": "NodeDemoPlugin", "slots": [], "httpPorts": [] } }