Projektdateien hinzufügen.

This commit is contained in:
mr_sc
2026-08-19 19:27:41 +02:00
parent 0889f1f6c7
commit 7fe54c0785
32 changed files with 2406 additions and 0 deletions

220
README.md Normal file
View File

@@ -0,0 +1,220 @@
# FileInterface FileSystemWatcher + CronScheduler
## HTTP-Webclient Login
Der Webclient ist standardmaessig per HTTP Basic Authentication geschuetzt.
```text
Benutzer: admin
Kennwort: admin
```
Die Zugangsdaten koennen in `FileinterfaceCronScheduler/App.config` geaendert werden:
```xml
<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:
```text
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:
```text
http://127.0.0.1:8095/
```
Für Zugriff aus dem Netzwerk in `App.config`:
```xml
<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:
```text
*/5 * * * *
0 */2 * * *
15 2 * * *
0 6 * * 1-5
```
## Platzhalter
Für Watcher und Cronjobs:
```text
{{CONTENT}}
{{RAW_CONTENT}}
{{FILE_NAME}}
{{FILE_PATH}}
{{FILE_DIR}}
{{FILE_EXT}}
{{JOB_NAME}}
{{NOW}}
```
Nur beim FileSystemWatcher zusätzlich:
```text
{{EVENT}}
```
`{{EVENT}}` enthält z. B. `Created`, `Changed`, `Renamed` oder `ManualScan`.
## Persistente Konfiguration
Die Jobs sind getrennt gespeichert:
```text
cronjobs.json
watcherjobs.json
```
Pfade können in `App.config` geändert werden:
```xml
<add key="Scheduler.ConfigFile" value="cronjobs.json" />
<add key="Watcher.ConfigFile" value="watcherjobs.json" />
```
## IMSAPI
`IMSApiDotNet.dll` liegt bereits unter:
```text
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:
```csharp
imsapi.customFunction(
sessionContext,
customFunctionName,
inArgs,
out outArgs,
out customErrorString
);
```
## IMS-Konfiguration
In `FileinterfaceCronScheduler\App.config`:
```xml
<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.