Skip to main content

BWScheduler über REST-API steuern

Überblick

Über die REST-API können mehrere BWScheduler-Installationen verschlüsselt miteinander verbunden werden. Eine Installation übernimmt die Rolle des Servers, die übrigen Installationen arbeiten als Clients.

Eine Installation kann immer nur eine Rolle besitzen:

  • Server: Nimmt Verbindungen an und kann Aufträge für Clients bereitstellen.
  • Client: Verbindet sich mit dem Server, sendet Aufträge an den Server und fragt Aufträge für sich selbst ab.

Damit können Aufgaben in beide Richtungen ausgelöst werden:

  • Client startet eine Aufgabe auf dem Server.
  • Server startet eine Aufgabe auf einem oder mehreren Clients.

Es werden keine SchedulerXX.RUN-Dateien benötigt.

Voraussetzungen

  • Auf allen beteiligten Systemen muss BWScheduler mindestens in Programmversion 5.31 installiert sein.
Alle beteiligten BWScheduler müssen über das Netzwerk erreichbar sein. Auf dem Server muss der eingestellte TCP-Port freigegeben sein. Standard ist Port 9443. Die Uhren der beteiligten Windows-Systeme sollten korrekt eingestellt sein. Die auszuführende Zielaufgabe muss auf der Gegenstelle vorhanden und aktiviert sein. Die Zielaufgabe muss über die Einstellung REST-API Ausführung ausdrücklich freigegeben sein. Zielaufgaben müssen Hauptaufgaben sein. Unteraufgaben können nicht direkt über die REST-API gestartet werden. Das Konto des BWSchedulers benötigt weiterhin alle Rechte, die von der Zielaufgabe benötigt werden. ERP-Scheduler ab Version 5.31

Verschlüsselung und Zertifikate

Der gesamte Datenverkehr wird über TLS 1.2 verschlüsselt.

Internes Zertifikat

Wenn unter SSL-PFX Zertifikat keine Datei angegeben wird, erstellt und verwendet der Server automatisch ein internes Zertifikat. Dieses Zertifikat dient ausschließlich zur Verschlüsselung der Verbindung zwischen den BWSchedulern.

Für die Standardverbindung zwischen BWScheduler-Installationen muss daher kein Zertifikat bereitgestellt werden.

Eigenes PFX-Zertifikat

Optional kann auf dem Server ein eigenes PFX-Zertifikat hinterlegt werden:

  • SSL-PFX Zertifikat: vollständiger Pfad zur PFX-Datei
  • SSL-PFX Zertifikat Kennwort: Kennwort der PFX-Datei

Das PFX-Zertifikat muss einen privaten Schlüssel enthalten. Der im Zertifikat verwendete Name sollte zur eingestellten Serveradresse passen. Bei einem von einer vertrauenswürdigen Zertifizierungsstelle ausgestellten Zertifikat ist auf den Clients keine Ausnahme erforderlich.

Ungültige Zertifikate erlauben

Die Einstellung Erlaube ungültige SSL-Zertifikate betrifft die Prüfung auf der Clientseite.

  • Deaktiviert: Zertifikat und Servername müssen gültig sein. Das automatisch verwendete interne BWScheduler-Zertifikat wird ebenfalls akzeptiert.
  • Aktiviert: Zertifikatsfehler werden ignoriert.

Sicherheitshinweis: Aktivieren Sie diese Option nur in einem kontrollierten und vertrauenswürdigen Netzwerk.

Authentifizierung

Unter Authentifizierungsart stehen drei Möglichkeiten zur Verfügung:

Einstellung Bedeutung Keine Für Aufgaben mit der Freigabe „Gemäß globaler Authentifizierung“ wird kein Schlüssel verlangt. API-Key Auf Server und Clients muss derselbe kundenspezifische API-Key eingestellt sein. Nur eigene Produkte Freigegebene PHX-Produkte weisen sich automatisch mit ihrer Produktkennung und ihrem internen Produktschlüssel aus. Eine Kundeneingabe ist nicht erforderlich.

Die empfohlene Einstellung für eine Verbindung zwischen BWSchedulern ist Nur eigene Produkte.

Der kundenspezifische API-Key wird nur bei der Authentifizierungsart API-Key benötigt. Er sollte ausreichend lang und zufällig sein und darf nicht an unberechtigte Personen weitergegeben werden.

Server einrichten

Öffnen Sie die Einstellungen und wechseln Sie zum Bereich REST-API.

Einstellung Wert
Aktiv aktiviert
Betriebsart Server
IP-Adresse des REST-Servers kann auf dem Server leer bleiben
Port 9443 oder ein eigener freier Port
SSL-PFX Zertifikat optional
SSL-PFX Zertifikat Kennwort nur bei Verwendung einer PFX-Datei
Erlaube ungültige SSL-Zertifikate auf dem Server ohne Bedeutung
Authentifizierungsart empfohlen: Nur eigene Produkte API-Key nur bei Authentifizierungsart API-Key

Speichern Sie die Einstellungen und starten Sie den BWScheduler neu beziehungsweise laden Sie die Einstellungen neu.

Der Server nimmt verschlüsselte Verbindungen auf allen lokalen Netzwerkadressen über den eingestellten Port an. Stellen Sie sicher, dass die Windows-Firewall eingehende Verbindungen für diesen Port erlaubt.

Client einrichten

Öffnen Sie auf jedem Client den Bereich REST-API.

Einstellung Wert
Aktiv aktiviert
Betriebsart Client
IP-Adresse des REST-Servers IP-Adresse oder DNS-Name des Servers
Port derselbe Port wie auf dem Server
SSL-PFX Zertifikat normalerweise leer
SSL-PFX Zertifikat Kennwort normalerweise leer
Erlaube ungültige SSL-Zertifikate nur bei Bedarf aktivieren
Authentifizierungsart dieselbe Einstellung wie am Server API-Key bei Authentifizierungsart API-Key derselbe Wert wie am Server

Beispiele für die Serveradresse:

192.168.1.20
scheduler.firma.local
https://scheduler.firma.local

Der Client baut ausschließlich eine ausgehende Verbindung zum Server auf. Auf dem Client muss deshalb kein eingehender REST-Port geöffnet werden.

Als Clientname wird automatisch der Windows-Rechnername verwendet. Dieser Name wird benötigt, wenn der Server einen Auftrag nur an einen bestimmten Client senden soll.

Aufgabe auf der Gegenstelle ausführen

Erstellen Sie über Neu die Aufgabe:

REST-API Aufgabe auf Gegenstelle ausführen

Die Aufgabe wird mit folgenden Werten vorbereitet:

Einstellung Wert
Aufgabenart Funktionsaufruf
App $RESTAPI-EXECUTE
AppParameter Execute=22
AppParameter2 leer
Intervall 0

Passen Sie die Aufgabennummer, Ausführungszeit, Wochentage und das erlaubte Zeitfenster an den gewünschten Ablauf an.

Client startet eine Aufgabe auf dem Server

Auf dem Client wird eine Aufgabe mit folgendem AppParameter angelegt:

Execute=22

Wird diese Aufgabe auf dem Client ausgeführt, sendet er den Auftrag verschlüsselt an den Server. Der Server plant dort die aktivierte Hauptaufgabe mit der Scheduler-ID 22 ein.

Die Zielaufgabe auf dem Server benötigt selbst keine besondere REST-Einstellung. Sie muss lediglich vorhanden, aktiviert undaktiviert, als Hauptaufgabe eingerichtet und über REST-API Ausführung freigegeben sein.

REST-Freigabe der Zielaufgabe

Jede Zielaufgabe besitzt die Einstellung REST-API Ausführung. Standardmäßig ist eine Aufgabe nicht über REST erreichbar.

Einstellung Verhalten Nicht über REST ausführbar REST-Aufrufe werden immer abgelehnt. Dies ist der Standardwert. Gemäß globaler Authentifizierung Es gilt die im Bereich REST-API eingestellte Authentifizierungsart. Nur durch BWScheduler Die Aufgabe darf ausschließlich von einem automatisch erkannten BWScheduler ausgelöst werden. Ohne Authentifizierung Die Aufgabe darf ohne Schlüssel ausgelöst werden. Diese Einstellung nur gezielt verwenden.

Die Freigabe wird auf der Seite eingestellt, auf der die Zielaufgabe tatsächlich ausgeführt wird. Für eine reine Sendeaufgabe mit $RESTAPI-EXECUTE ist keine eingehende REST-Freigabe erforderlich.

Zusammenspiel der Einstellungen

REST-API Ausführung der Zielaufgabe Globale Einstellung Ergebnis Nicht über REST ausführbar beliebig Die Aufgabe wird immer abgelehnt. Gemäß globaler Authentifizierung Keine Die Aufgabe kann ohne Schlüssel gestartet werden. Gemäß globaler Authentifizierung API-Key Ein gültiger kundenspezifischer API-Key ist erforderlich. Gemäß globaler Authentifizierung Nur eigene Produkte Ein gültig erkanntes PHX-Produkt ist erforderlich. Nur durch BWScheduler beliebig Nur ein erkannter BWScheduler darf die Aufgabe starten. Ohne Authentifizierung beliebig Die Aufgabe kann ohne Schlüssel gestartet werden.

Empfohlene Konfigurationen

BWScheduler mit BWScheduler verbinden

Auf Server und Clients:

Einstellung Wert Authentifizierungsart Nur eigene Produkte API-Key leer

Bei der auszuführenden Zielaufgabe:

REST-API Ausführung: Nur durch BWScheduler

Diese Einstellung erfordert keine manuelle Schlüsselpflege durch den Kunden.

Externes System mit API-Key

Auf dem REST-Server:

Einstellung Wert Authentifizierungsart API-Key API-Key langer, zufälliger und geheimer Wert

Bei der auszuführenden Zielaufgabe:

REST-API Ausführung: Gemäß globaler Authentifizierung

Das externe System muss den eingestellten API-Key bei jedem Auftrag mitsenden.

Einzelne Aufgabe ohne Authentifizierung

Bei der betreffenden Zielaufgabe:

REST-API Ausführung: Ohne Authentifizierung

Diese Freigabe gilt unabhängig von der globalen Authentifizierungsart. Verwenden Sie sie nur für gezielt ausgewählte Aufgaben und begrenzen Sie den Netzwerkzugriff zusätzlich über die Windows-Firewall.

Wichtig: Verwenden Sie für sensible Wartungs-, Programmstart- oder Beendigungsaufgaben keine anonyme Freigabe.

Server startet eine Aufgabe auf allen Clients

Auf dem Server wird eine Aufgabe mit folgendem AppParameter angelegt:

Execute=22

Der Server stellt den Auftrag allen Clients bereit, die sich seit dem Start des Servers bei ihm gemeldet haben. Jeder dieser Clients plant seine lokale Aufgabe mit der Scheduler-ID 22 ein.

Die Scheduler-ID bezeichnet immer die Aufgabe auf der jeweiligen Gegenstelle. Die Aufgaben dürfen auf Server und Clients unterschiedliche Bezeichnungen oder Inhalte besitzen.

Server startet eine Aufgabe auf einem bestimmten Client

Soll nur ein bestimmter Client angesprochen werden, wird dessen Windows-Rechnername ergänzt:

Client=PC-BUCHHALTUNG&Execute=22

Damit wird die Aufgabe 22 ausschließlich für den Client PC-BUCHHALTUNG bereitgestellt.

Der Clientname muss dem Windows-Rechnernamen des Zielsystems entsprechen. Groß- und Kleinschreibung sind dabei nicht relevant.

Mehrere Clients

Mehrere Clients können denselben Server verwenden. Dabei gibt es zwei Möglichkeiten:

  • Nur Execute=22: Auftrag wird an alle beim Server bekannten Clients verteilt.
  • Client=RECHNERNAME&Execute=22: Auftrag wird nur für den angegebenen Client bereitgestellt.

Ein Auftrag für einen bestimmten Client kann bereits bereitgestellt werden, bevor dieser wieder verbunden ist. Er wird beim nächsten erfolgreichen Abruf übernommen, solange der Server zwischenzeitlich nicht neu gestartet wurde.

Direkter REST-Aufruf am Server

Der Server nimmt einen Ausführungsauftrag unter folgender Adresse entgegen:

https://SERVER:9443/api/scheduler/execute?Execute=22execute

AlternativAusführungsaufträge kannwerden ausschließlich mit der HTTP-Methode POST angenommen. Execute=22 wird dabei als formularcodierter Inhalt angesendet.

dieselbe

Bei Adresseder gesendetAuthentifizierungsart werden.API-Key wird der Schlüssel im HTTP-Header übergeben:

X-PHX-API-Key: IHR_API_KEY

Bei Nur eigene Produkte werden Produktkennung, Schlüsselkennung und Produktschlüssel automatisch durch das aufrufende PHX-Produkt übergeben. Eine manuelle Eingabe ist nicht vorgesehen.

Zur Verfügbarkeitsprüfung steht folgende Adresse bereit:

https://SERVER:9443/api/scheduler/status

Eine erfolgreiche Prüfung liefert OK zurück.

Sicherheitshinweis: Begrenzen Sie den Zugriff auf den REST-Port über die Windows-Firewall auf die vorgesehenen Clientsysteme beziehungsweise das interne Netzwerk.

Verhalten der Zielaufgabe

Ein angenommener REST-Auftrag verhält sich weitgehend wie ein Auftrag über eine SchedulerXX.RUN-Datei:

  • Die Zielaufgabe wird beim nächsten Scheduler-Durchlauf eingeplant.
  • Die Aufgabe muss aktiviert sein.
  • Unteraufgaben können nicht direkt gestartet werden.
  • Die eingestellte modale Gruppe und der Doppelstartschutz bleiben wirksam.
  • Eine bereits laufende oder bereits eingeplante Aufgabe wird nicht nochmals parallel gestartet.
  • Eine aktive Wartungs- oder NoLock-Sperre kann die Ausführung weiterhin zurückhalten.

Die Zeitplanung der sendenden $RESTAPI-EXECUTE-Aufgabe bestimmt, wann der Auftrag übertragen wird. Die feste Ausführungszeit der Zielaufgabe wird durch den angenommenen Remote-Auftrag nicht abgewartet.

Typischer Einrichtungsablauf

  1. Prüfen, ob auf allen beteiligten Systemen mindestens BWScheduler-Programmversion 5.31 installiert ist.
Eine BWScheduler-Installation als Server konfigurieren. Port 9443 oder den gewählten Port in der Server-Firewall freigeben. Weitere Installationen als Clients konfigurieren. Verbindung im Protokoll kontrollieren. Auf der Gegenstelle eine ungefährliche Testaufgabe anlegen und aktivieren. Bei der Zielaufgabe die gewünschte Einstellung unter REST-API Ausführung auswählen. Auf der sendenden Seite eine $RESTAPI-EXECUTE-Aufgabe mit der entsprechenden Scheduler-ID erstellen. Auftrag zunächst manuell ausführen. Ausführung und Ergebnis auf beiden Seiten kontrollieren. Erst danach die gewünschte Zeitplanung aktivieren.

Fehlerprüfung

Server ist nicht erreichbar

Prüfen Sie:

  • REST-API ist auf beiden Seiten aktiviert.
  • Server verwendet die Betriebsart Server.
  • Client verwendet die Betriebsart Client.
  • Serveradresse und Port stimmen überein.
  • Windows-Firewall erlaubt den Port.
  • Der Serverprozess läuft.

Zertifikatsfehler

Prüfen Sie:

  • Stimmt der DNS-Name mit dem eigenen Zertifikat überein?
  • Ist das Zertifikat noch gültig?
  • Ist die Zertifikatskette auf dem Client vertrauenswürdig?
  • Ist das PFX-Kennwort korrekt?

Die Option zum Ignorieren von Zertifikatsfehlern sollte nur vorübergehend zur Eingrenzung des Problems verwendet werden.

Aufgabe wird nicht ausgeführt

Prüfen Sie:

  • Ist die angegebene Scheduler-ID auf der Gegenstelle vorhanden?
  • Ist die Zielaufgabe aktiviert?
  • Handelt es sich um eine Hauptaufgabe?
  • Ist die Zielaufgabe über REST-API Ausführung passend freigegeben?
Stimmen Authentifizierungsart und gegebenenfalls API-Key auf beiden Seiten überein? Läuft die Aufgabe bereits oder wartet sie auf ihre modale Gruppe? Ist eine Wartungs- oder NoLock-Sperre aktiv? Ist im AppParameter tatsächlich Execute=Zahl eingetragen?

Bestimmter Client erhält den Auftrag nicht

Prüfen Sie:

  • Entspricht der Wert hinter Client= exakt dem Windows-Rechnernamen?
  • Hat sich der Client bereits erfolgreich beim Server gemeldet?
  • Wurde der Server nach dem Bereitstellen des Auftrags neu gestartet?