Hallo bauschnell,
ich habe deine Fragestellung mal in unser neues
JTL-Wawi KI-Analysetool reingepackt und folgenden ersten Gedanken erhalten, vielleicht hilft er dir weiter (um es auf genau deine Situation zu münzen, müsstest du es wahrscheinlich selbst bei askJan einmal abfragen):
🎯 Teil 1: JTL-
Workflow mit HTTP-Request erstellen
📝 Schritt-für-Schritt Anleitung:
1. Workflow-Verwaltung öffnen:
JTL-Wawi → Admin → Automatisierung: JTL-Workflows
2. Ereignisbereich auswählen:
Wähle "Aufträge" (für Bestellungen) oder "Manuell" (für zeitgesteuerte Ausführung)
3. Workflow erstellen:
Ereignis: "Manuell ausführbar" (für zeitgesteuerte Ausführung)
↓
Name: "API Pickliste erstellen"
↓
Ausführung: "Sofort"
4. HTTP-Request Aktion hinzufügen:
Aktionen → Neue Aktion → HTTP-Request (oder Web-Request)
HTTP-Methode: POST
URL:
http://127.0.0.1:5883/api/eazybusiness/v1/wms/32/picklists
Content-Type: application/json
Request-Body (JSON):
{
"PickListTemplateId": 1
}
5. Workflow speichern:
Den Workflow unter einem eindeutigen Namen speichern
Status auf "Aktiv" setzen
🖥️ Teil 2: Batch-Script für API-Trigger erstellen
📄 picklist_trigger.bat (Windows Batch):
@echo off
REM ============================================
REM Picklisten-Automatisierung für JTL-Wawi
REM Triggert Workflow per API-Call
REM ============================================
REM Basis-URL der JTL-API
set API_BASE=
http://127.0.0.1:5883/api/eazybusiness/v1
REM Lager-ID (anpassen!)
set WAREHOUSE_ID=32
REM
Log-Datei
set LOG_FILE=C:\Logs\picklist_automation.log
REM Datum/Zeit für Log
for /f "tokens=1-3 delims=/ " %%a in ('date /t') do set datum=%%c-%%b-%%a
for /f "tokens=1-2 delims=: " %%a in ('time /t') do set zeit=%%a:%%b
echo [%datum% %zeit%] Starte Picklisten-Erstellung >> %LOG_FILE%
REM Prüfe ob JTL-API erreichbar ist
curl -s --connect-timeout 10 %API_BASE%/ping >nul
if %errorlevel% neq 0 (
echo [%datum% %zeit%] FEHLER: JTL-API nicht erreichbar >> %LOG_FILE%
exit /b 1
)
REM Erstelle Pickliste via API
curl -X POST ^
-H "Content-Type: application/json" ^
-H "Accept: application/json" ^
-d "{\"PickListTemplateId\": 1}" ^
"%API_BASE%/
wms/%WAREHOUSE_ID%/picklists" ^
--max-time 60 ^
--output C:\Temp\picklist_response.json ^
--write-out "HTTP_CODE:%%{http_code}\n" >> %LOG_FILE% 2>&1
REM Prüfe Response-Code
for /f "tokens=2 delims=:" %%i in ('findstr "HTTP_CODE" %LOG_FILE%') do set HTTP_CODE=%%i
if "%HTTP_CODE%"=="200" (
echo [%datum% %zeit%] ERFOLG: Pickliste erstellt >> %LOG_FILE%
) else if "%HTTP_CODE%"=="201" (
echo [%datum% %zeit%] ERFOLG: Pickliste erstellt >> %LOG_FILE%
) else (
echo [%datum% %zeit%] FEHLER: HTTP-Code %HTTP_CODE% >> %LOG_FILE%
type C:\Temp\picklist_response.json >> %LOG_FILE%
)
REM Aufräumen
del C:\Temp\picklist_response.json 2>nul
echo [%datum% %zeit%] Picklisten-Job beendet >> %LOG_FILE%
🐍 Alternative: PowerShell-Script (picklist_trigger.ps1):
# ============================================
# Picklisten-Automatisierung für JTL-Wawi
# PowerShell Version für bessere Fehlerbehandlung
# ============================================
param(
[int]$WarehouseId = 32,
[int]$TemplateId = 1,
[string]$ApiBase = "
http://127.0.0.1:5883/api/eazybusiness/v1"
)
# Konfiguration
$LogFile = "C:\Logs\picklist_automation.log"
$MaxRetries = 3
$TimeoutSeconds = 60
# Log-Funktion
function Write-Log {
param([string]$Message, [string]$Level = "INFO")
$Timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$LogEntry = "[$Timestamp] [$Level] $Message"
Add-Content -Path $LogFile -Value $LogEntry
Write-Host $LogEntry
}
Write-Log "=== Starte Picklisten-Automatisierung ==="
# Erstelle Log-Verzeichnis falls nicht vorhanden
$LogDir = Split-Path $LogFile -Parent
if (!(Test-Path $LogDir)) {
New-Item -ItemType Directory -Path $LogDir -Force
}
# Prüfe JTL-API Erreichbarkeit
try {
$PingUrl = "$ApiBase/ping"
$Response = Invoke-WebRequest -Uri $PingUrl -Method GET -TimeoutSec 10 -ErrorAction Stop
Write-Log "JTL-API erreichbar (Status: $($Response.StatusCode))"
} catch {
Write-Log "FEHLER: JTL-API nicht erreichbar - $($_.Exception.Message)" "ERROR"
exit 1
}
# Pickliste erstellen
$PicklistUrl = "$ApiBase/wms/$WarehouseId/picklists"
$RequestBody = @{
PickListTemplateId = $TemplateId
} | ConvertTo-Json
$Headers = @{
'Content-Type' = 'application/json'
'Accept' = 'application/json'
}
$Retry = 0
do {
try {
Write-Log "Erstelle Pickliste (Versuch $($Retry + 1)/$MaxRetries)..."
$Response = Invoke-RestMethod -Uri $PicklistUrl -Method POST -Body $RequestBody -Headers $Headers -TimeoutSec $TimeoutSeconds
Write-Log "ERFOLG: Pickliste erfolgreich erstellt!"
Write-Log "Response: $($Response | ConvertTo-Json -Compress)"
# Bei Erfolg: Loop verlassen
break
} catch {
$Retry++
$ErrorMsg = $_.Exception.Message
if ($_.Exception.Response) {
$StatusCode = $_.Exception.Response.StatusCode
$ErrorMsg += " (HTTP: $StatusCode)"
}
Write-Log "FEHLER bei Picklisten-Erstellung: $ErrorMsg" "ERROR"
if ($Retry -lt $MaxRetries) {
Write-Log "Warte 5 Sekunden vor nächstem Versuch..." "WARN"
Start-Sleep -Seconds 5
} else {
Write-Log "Maximale Anzahl Versuche erreicht. Abbruch." "ERROR"
exit 1
}
}
} while ($Retry -lt $MaxRetries)
Write-Log "=== Picklisten-Automatisierung beendet ==="
⏰ Teil 3: Windows-Aufgabenplanung konfigurieren
🛠️ Über GUI (Taskplaner):
1. Taskplaner öffnen:
Windows-Taste + R → "taskschd.msc" → Enter
2. Aufgabe erstellen:
Aktion → Aufgabe erstellen...
3. Allgemein-Tab:
Name: "JTL Picklisten automatisch erstellen"
Beschreibung: "Erstellt täglich um 8:00 Uhr automatisch Picklisten via JTL-API"
Sicherheitsoptionen:
☑ Unabhängig von der Benutzeranmeldung ausführen
☑ Mit höchsten Privilegien ausführen
Konfigurieren für: Windows 10/11
4. Trigger-Tab (Zeitplan):
Trigger hinzufügen:
• Täglich um 08:00 Uhr
• Beginnen: [Heute]
• Alle: 1 Tag(e)
• Wiederholen alle: (optional) 4 Stunden für 12 Stunden
5. Aktionen-Tab:
Aktion hinzufügen:
• Aktion: Programm starten
• Programm/Skript: C:\Scripts\picklist_trigger.bat
ODER für PowerShell:
• Programm/Skript: powershell.exe
• Argumente: -ExecutionPolicy Bypass -File "C:\Scripts\picklist_trigger.ps1"
6. Bedingungen-Tab:
☐ Computer nur starten, wenn er im Netzbetrieb ausgeführt wird
☑ Aufgabe beenden, falls Computer in den Akkubetrieb wechselt
☑ Computer zum Ausführen dieser Aufgabe reaktivieren
7. Einstellungen-Tab:
☑ Ausführung der Aufgabe bei Bedarf zulassen
☑ Aufgabe so schnell wie möglich ausführen, falls ein geplanter Start versäumt wird
Wenn die Aufgabe fehlschlägt, alle: 1 Minute(n) wiederholen
Wiederholen für: 1 Stunde(n)
☑ Beenden, falls länger ausgeführt als: 1 Stunde(n)
💻 Über Kommandozeile (schtasks):
REM Aufgabe erstellen
schtasks /create ^
/tn "JTL_Picklisten_Automatik" ^
/tr "C:\Scripts\picklist_trigger.bat" ^
/sc daily ^
/st 08:00 ^
/ru "SYSTEM" ^
/rl HIGHEST ^
/f
REM Aufgabe testen
schtasks /run /tn "JTL_Picklisten_Automatik"
REM Status prüfen
schtasks /query /tn "JTL_Picklisten_Automatik" /fo table /v
📋 Teil 4: Monitoring & Logging Setup
📊 Log-Rotation Script (cleanup_logs.bat):
@echo off
REM Lösche Log-Dateien älter als 30 Tage
forfiles /p "C:\Logs" /s /m "*.log" /d -30 /c "cmd /c del @path"
REM Optional: Große Log-Dateien komprimieren
for %%f in (C:\Logs\*.log) do (
if %%~zf GTR 10485760 (
echo Komprimiere große Log-Datei: %%f
powershell "Compress-Archive -Path '%%f' -DestinationPath '%%dpnf_%%date:-4,4%%%%date:-10,2%%%%date:-7,2%%.zip'"
del "%%f"
)
)
📧 E-Mail-Benachrichtigung bei Fehlern (in PowerShell-Script):
# Am Ende des PowerShell-Scripts hinzufügen:
if ($ExitCode -ne 0) {
$Server[REDACTED-SMTP]"
$From = "
jtl-automation@yourcompany.com"
$To = "[REDACTED]@yourcompany.com"
$Subject = "JTL Picklisten-Automatisierung FEHLER"
$Body = @"
Die automatische Picklisten-Erstellung ist fehlgeschlagen!
Zeitpunkt: $(Get-Date)
Lager-ID: $WarehouseId
Fehler: Siehe Log-Datei $LogFile
Bitte prüfen Sie die JTL-API und das System.
"@
try {
Send-MailMessage -SmtpServer $Server[REDACTED-SMTP] $From -To $To -Subject $Subject -Body $Body
Write-Log "Fehler-Benachrichtigung versendet"
} catch {
Write-Log "Konnte Fehler-E-Mail nicht versenden: $($_.Exception.Message)" "ERROR"
}
}
🎯 Teil 5: Workflow-Alternative über JTL (Empfohlen!)
Falls du den HTTP-Request direkt in JTL-Wawi integrieren möchtest:
🔄 JTL-Workflow mit .NET-Code-Action:
// JTL-Workflow: .NET-Code Action
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
public class PicklistCreator
{
private static readonly HttpClient client = new HttpClient();
public static async Task<bool> CreatePicklist()
{
try
{
var requestBody = new StringContent(
"{\"PickListTemplateId\": 1}",
Encoding.UTF8,
"application/json"
);
var response = await client.PostAsync(
"
http://127.0.0.1:5883/api/eazybusiness/v1/wms/32/picklists",
requestBody
);
if (response.IsSuccessStatusCode)
{
// Log-Eintrag schreiben
Console.WriteLine($"Pickliste erfolgreich erstellt: {DateTime.Now}");
return true;
}
else
{
Console.WriteLine($"Fehler beim Erstellen der Pickliste: {response.StatusCode}");
return false;
}
}
catch (Exception ex)
{
Console.WriteLine($"Exception: {ex.Message}");
return false;
}
}
}
// Aufruf im Workflow:
var success = PicklistCreator.CreatePicklist().Result;
🔧 Zusammenfassung der Lösung
✅ Was du jetzt hast:
JTL-Workflow der per HTTP-Request Picklisten über deine API erstellt
Batch/PowerShell-Script für die zeitgesteuerte Ausführung
Windows-Aufgabenplanung"