Vergleichsreport

Vergleiche Einstellungen
Änderungen von:
bis:
Typ:

Veränderungen an Parts

Part "Inhalt" wurde verändert


Veränderungen des Inhalts
Klicken Sie für eine detaillierte Beschreibung auf die geänderten Stellen:
Benutzen sie die linke oder die rechte Maustaste, um zur jeweils vorherigen bzw. nachfolgenden Änderung zu gelangen.
 ersteletzte 

Mit diesem Job können komplexe Java-Programmierungen am Webdesk durchgeführt werden.

Da hierfür Webdesk-Pakete geladen werden müssen ist es empfehlenswert sich hierfür mit Workflow in Verbindung zu setzen.

Beispiel: Java-Job zum Löschen nicht mehr verwendeter Prozessdefinitionenmit Info-Log Ausgabe

Dieses Beispiel zeigt ein kommentiertes einen minimalen Job-Skeleton, das als Ausgangspunkt für eine konkrete Implementierung dienen kann. Wichtige Hinweise:

  • Vor dem produktiven Einsatz: immer Backup, Probelauf (dry-run) und Test in einer Staging-Umgebung durchführen.
  • Die hier gezeigten Klassen und Methoden sind Platzhalter und müssen an die konkrete Webdesk-API / Job-Basisklasse Ihrer Installation angepasst werden.
  • Der Job darf nur Prozessdefinitionen löschen, die keine aktiven Instanzen haben und nirgends mehr referenziert werden (Aktionen, Menüeinträge, Prozessreferenzen).

Kurze Ablaufbeschreibung

  1. Ermittle alle Prozessdefinitionen, die seit X Tagen/Jahren nicht mehr veröffentlicht/benutzt wurden.
  2. Prüfe für jede Definition, ob aktive Instanzen existieren.
  3. Prüfe, ob Referenzen (Aktionen, Menü, Prozessreferenzen) auf die Definition verweisen.
  4. Wenn dryRun=true: Ergebnisreport erstellen, nichts löschen. Wenn dryRun=false und alle Prüfungen positiv: Definition löschen (oder verschieben/archivieren, falls gewünscht).
  5. Report generieren und per Mail verschicken (optional).

, der eine Log-Ausgabe erzeugt (sowohl im Job-Logger, als auch im Standard Out)

Beispiel-Java-Code (Skeleton)

Dieses Beispiel ist als Template gedacht. Bitte passen Sie Paketnamen, Basisklassen und Service-Methoden an Ihre Umgebung an.



package at.workflow.webdesk.custom.jobs;

import orgjava.slf4jutil.LoggerDate;

import org.slf4j.LoggerFactory;

// TODO: Anpassen an die konkrete Job-Basisklasse / Schnittstelle
// import at.workflow.webdesk.jobs.AbstractWebdeskJob;
//apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import at.workflow.webdesk.services.ProcessDefinitionService;
// import at.workflow.webdesk.services.ReferenceCheckService;
// po.jobs.customJavaJob.CustomJavaJob;
import at.workflow.webdesk.servicestools.MailServiceWebdeskLoggerUtil;

public class CleanupProcessDefinitionsJobTestSystemOut /*implements extendsCustomJavaJob AbstractWebdeskJob */ {

   	private static final Logger loglogger = LoggerFactoryWebdeskLoggerUtil.getLoggergetJobLogger(CleanupProcessDefinitionsJobTestSystemOut.class);

    // Konfigurationsparameter (können z.B. über Job-Parameter gesetzt werden)
    private boolean dryRun = true; // standardmäßig Probelauf
    private int maxDaysUnused = 365; // Beispiel: seit einem Jahr unbenutzt

    // Platzhalter für Services (in der realen Implementierung über Spring/Bean-Lookup beziehen)
    // private ProcessDefinitionService processDefinitionService;
    // private ReferenceCheckService referenceCheckService;
    // private MailService mailService;

    	public void execute(/*JobExecutionContext ctx*/run() throws Exception {
        log.info("Start CleanupProcessDefinitionsJob (dryRun={})", dryRun);

        // 1) Prozessdefinitionen ermitteln
        // List<ProcessDefinition> candidates = processDefinitionService.findUnusedSince(maxDaysUnused);

        // 2) Iteration und Prüfungen
        // for (ProcessDefinition pd : candidates) {
        //     if (processDefinitionService.hasActiveInstances(pd)) {
        //         log.info("Skipping {} - active instances present", pd.getName());
        //         continue;
        //     }
        //     if (referenceCheckService.isReferenced(pd)) {
        //         log.info("Skipping {} - still referenced by actions/menus", pd.getName());
        //         continue;
        //     }
        //     if (dryRun) {
        //         log.info("[DRY-RUN] Would delete process definition: {} (id={})", pd.getName(), pd.getId());
        //     } else {
        //         log.info("Deleting process definition: {} (id={})", pd.getName(), pd.getId());
        //         processDefinitionService.delete(pd);
        //     }
        // }

        // 3) Report und optional Mailversand
        // String report = buildReport(...);
        // mailService.sendReport("CleanupProcessDefinitionsJob result", report);

        log.info("End CleanupProcessDefinitionsJob");
    }

    // Helper: Beispiel-Setter für Tests
    public void setDryRun(boolean dryRun) { this.dryRun = dryRun; }
    public void setMaxDaysUnused(int days) { this.maxDaysUnused = days; }
}


Deployment / Hinweise

  • Der kompiliert Jar muss in die Webdesk-Classpath / entsprechende Module integriert werden. Abstimmung mit Workflow EDV ist empfohlen.
  • Wenn Sie Spring-Beans verwenden, registrieren Sie die Beans und stellen Sicher, dass der Job zur Laufzeit die notwendigen Services bezieht (z. B. über ApplicationContext oder Konstruktor-Injection).
  • Testen Sie ausgiebig mit dryRun=true, bevor Sie die schreibenden Aktionen aktivieren.

Relevante Dokumente

{
		System.out.println("Some Output on the Console from this Custom Java Job at "+ new Date());
		
		logger.info("Some output in the log");
	}

}

Mime Typetext/xmltext/xml
Datei-name
Größe (in Bytes)57651074
Version 5 von Gabriel Gruber
am 09.11.25 12:43:00
Name: Job Java Job
Variante: main - default
Status: Veröffentlichung
Version 6 von Gabriel Gruber
am 09.11.25 12:48:34
Name: Job Java Job
Variante: main - default
Status: Veröffentlichung