Files
Fileinterface_Cron_Job/README.md
2026-08-19 19:27:41 +02:00

5.0 KiB
Raw Permalink Blame History

FileInterface FileSystemWatcher + CronScheduler

HTTP-Webclient Login

Der Webclient ist standardmaessig per HTTP Basic Authentication geschuetzt.

Benutzer: admin
Kennwort:  admin

Die Zugangsdaten koennen in FileinterfaceCronScheduler/App.config geaendert werden:

<add key="Scheduler.WebUser" value="admin" />
<add key="Scheduler.WebPassword" value="admin" />

Wichtig: Fuer den produktiven Betrieb sollte das Standardkennwort geaendert werden.

Eigenständiges Visual-Studio-/C#-Projekt für ereignisbasierte und zeitgesteuerte Datei-Verarbeitung über iTAC IMSAPI CustomFunctions.

Architektur

Beide Mechanismen laufen gleichzeitig und unabhängig voneinander:

HTTP Webclient
   |
   +-- FileSystemWatcher-Konfiguration --> beliebig viele FileSystemWatcher
   |
   +-- Cron-Konfiguration ---------------> beliebig viele Cronjobs
                                                |
                  +-----------------------------+
                  |
            gemeinsame IMSAPI Session
                  |
            customFunction(...)

Enthalten

  • FileinterfaceCronScheduler.sln
  • .NET Framework 4.8 / x86
  • Windows-Dienst und Konsolenmodus
  • enthaltene IMSApiDotNet.dll Version 10.0.0-3
  • IMSAPI Initialisierung und regLogin(...)
  • beliebig viele FileSystemWatcher
  • beliebig viele Cronjobs
  • zentrale HTTP-Administration
  • beliebig viele inArgs pro Watcher/Cronjob
  • eigene CustomFunction pro Watcher/Cronjob
  • Datei nach Erfolg optional verschieben
  • Laufzeit-Log und Status im Browser

HTTP Webclient

Standard:

http://127.0.0.1:8095/

Für Zugriff aus dem Netzwerk in App.config:

<add key="Scheduler.WebPrefix" value="http://+:8095/" />

Danach scripts\allow-webinterface-network.bat als Administrator ausführen. Für Netzwerkzugriff sollten Scheduler.WebUser und Scheduler.WebPassword gesetzt werden.

Der Webclient besitzt zwei Bereiche:

FileSystemWatcher

Pro Watcher konfigurierbar:

  • Aktiv / Inaktiv
  • Quellverzeichnis
  • Dateifilter, z. B. *.xml
  • Unterverzeichnisse
  • Events Created, Changed, Renamed
  • Debounce in Millisekunden
  • File-Ready Wiederholungen / Wartezeit
  • CustomFunction
  • beliebig viele inArgs
  • leere Zeilen entfernen
  • Zeilentrenner
  • Datei nach Erfolg verschieben Ja/Nein
  • Zielverzeichnis
  • bestehende Zieldatei überschreiben Ja/Nein
  • vorhandene Dateien manuell verarbeiten
  • Watcher ohne Dienstneustart neu laden

Änderungen werden beim Speichern sofort persistent geschrieben und die FileSystemWatcher werden automatisch neu aufgebaut.

CronScheduler

Pro Cronjob konfigurierbar:

  • Aktiv / Inaktiv
  • Cron-Ausdruck mit 5 Feldern
  • optional CustomFunction ohne Datei aufrufen
  • Quellverzeichnis / Filter / Unterverzeichnisse
  • CustomFunction
  • beliebig viele inArgs
  • Datei nach Erfolg verschieben Ja/Nein
  • manuell Jetzt ausführen

Beispiele:

*/5 * * * *
0 */2 * * *
15 2 * * *
0 6 * * 1-5

Platzhalter

Für Watcher und Cronjobs:

{{CONTENT}}
{{RAW_CONTENT}}
{{FILE_NAME}}
{{FILE_PATH}}
{{FILE_DIR}}
{{FILE_EXT}}
{{JOB_NAME}}
{{NOW}}

Nur beim FileSystemWatcher zusätzlich:

{{EVENT}}

{{EVENT}} enthält z. B. Created, Changed, Renamed oder ManualScan.

Persistente Konfiguration

Die Jobs sind getrennt gespeichert:

cronjobs.json
watcherjobs.json

Pfade können in App.config geändert werden:

<add key="Scheduler.ConfigFile" value="cronjobs.json" />
<add key="Watcher.ConfigFile" value="watcherjobs.json" />

IMSAPI

IMSApiDotNet.dll liegt bereits unter:

FileinterfaceCronScheduler\lib\IMSApiDotNet.dll

Beim Programmstart:

  1. IMSApiDotNet.setProperty(...)
  2. IMSApiDotNet.loadLibrary()
  3. imsapiInit()
  4. regLogin(...)
  5. Start FileSystemWatcher + CronScheduler + HTTP-Webclient

Die Aufrufe verwenden anschließend dieselbe Session:

imsapi.customFunction(
    sessionContext,
    customFunctionName,
    inArgs,
    out outArgs,
    out customErrorString
);

IMS-Konfiguration

In FileinterfaceCronScheduler\App.config:

<add key="IMS.AppID" value="FileInterfaceCronScheduler" />
<add key="IMS.ServerUrl" value="http://YOUR-IMS-SERVER:PORT" />
<add key="IMS.StationNumber" value="YOUR_STATION" />
<add key="IMS.ClientNumber" value="1" />
<add key="IMS.RegistrationType" value="S" />
<add key="IMS.PropertyDirectory" value="." />
<add key="IMS.SerializeCalls" value="false" />

IMS.SerializeCalls=false erlaubt unabhängigen Watchern und Cronjobs parallele CustomFunction-Aufrufe. Wenn die eingesetzte IMSAPI-Umgebung das nicht verträgt, kann auf true gestellt werden.

Visual Studio

  1. FileinterfaceCronScheduler.sln öffnen.
  2. App.config konfigurieren.
  3. Build Debug oder Release; das Projekt kompiliert als x86.
  4. Starten.
  5. Browser auf http://127.0.0.1:8095/ öffnen.

Windows-Dienst

Unter scripts:

  • install-service.bat
  • uninstall-service.bat
  • allow-webinterface-network.bat

Vor der Dienstinstallation zuerst Release bauen.