# Jobs

Wiederkehrende Ausführung von Jobs und Skripten.

# Jobs über Benutzeroberfläche steuern

<p class="callout info">Das folgende Feature befindet sich noch in Entwicklung und steht nur einigen Testkunden bereit. Falls die dargestellten Menüpunkte nicht verfügbar sind, wurde die Funktion noch nicht freigeschalten.</p>

<p class="callout warning">Wenn sie Squeeze selbst betreiben, stellen Sie sicher, dass das Jobsystem korrekt eingerichtet ist. Dies ist hier dokumentiert: [Einrichten der Jobverwaltung SQUEEZE 2](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/einrichten-der-jobverwaltung-squeeze-2 "Einrichten der Jobverwaltung SQUEEZE 2")</p>

In der Administration befinden sich die folgenden zwei Menüpunkte.

### Skript-Übersicht

Hier werden Skripte des aktuellen Mandanten dargestellt. Diese Skripte können Sie als Jobs wiederkehrend starten.

[![image-1649143475429.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1649143475429.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1649143475429.png)

### Job-Verwaltung

Hier können Jobs für Job-Skripte eingerichtet werden.

[![image-1649143541365.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1649143541365.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1649143541365.png)

### Anlage eines Jobs

Es können beliebig viele Jobs für ein Script konfiguriert werden. Dabei stehen vorgefertigte Intervalle bereit. Sollten diese nicht ausreichen kann ein [Cron-Ausdruck](https://wiki.ubuntuusers.de/Cron/) genutzt werden.

<p class="callout warning">Wir empfehlen **nicht** ein Skript zu häufig oder mehrfach als Job zu konfigurieren. Handelt es sich bspw. bei einem Job um ein Stammdaten-Sync-Job, so kann es passieren, dass diese gleichzeitig ausgeführt werden.  
  
Wir werden dieses System erweitern und entsprechend absichern, aktuell muss dies manuell beachtet werden.</p>

[![image-1649143601222.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1649143601222.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1649143601222.png)

# Einrichten der Jobverwaltung

<p class="callout warning">Falls Sie Squeeze nicht selbst betreiben, ist dieser Artikel nicht relevant. Vermutlich möchten Sie nur wissen, wie Jobs in der Benutzeroberfläche zu verwalten sind: [Jobs über Benutzeroberfläche steuern](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/jobs-uber-benutzeroberflache-steuern "Jobs über Benutzeroberfläche steuern")</p>

### Einleitung

Ab Squeeze 2 sollen Jobs primär über die UI konfiguriert werden. Somit ist nur noch die Konfiguration eines einzelnen Jobs im Betriebssystems notwendig, der Rest geschieht dann über die UI.

In Squeeze 1 musste noch pro auszuführendem Job in Squeeze ein Job im Betriebssystem geplant werden. Das System ist in der Theorie weiterhin nutzbar, erzeugt allerdings administrativen Mehraufwand.

#### Job im Betriebssystem einrichten (ab Squeeze 2.5)

<p class="callout info">Für die Gewährleistung der zeitgesteuerten Ausführungen muss auf dem Host ein Job hinterlegt werden der das PHP-Job-Script `squeezer jobs:schedule --all` immer zur vollen Minute ausführt.</p>

Dieses Skript ist verantwortlich für die eigentliche Job-Ausführung und führt je nach Parameter die Jobs aller Mandanten oder nur der angegebenen Mandanten aus.

Für weitere Informationen können alle Optionen mittels `--help` flag gelistet werden (siehe auch [Einführung zur Squeeze 2.5 CLI](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/einfuhrung)):

[![image-1688040387563.png](https://docs.squeeze.one/uploads/images/gallery/2023-06/scaled-1680-/image-1688040387563.png)](https://docs.squeeze.one/uploads/images/gallery/2023-06/image-1688040387563.png)

##### Beispiel Linux

<p class="callout warning">Auf Linux ist besonders darauf zu achten, dass Jobs mittels des `www-data` Users ausgeführt werden.</p>

Falls SQUEEZE auf Linux betrieben wird, ist ein Cronjob (bspw. mittels `sudo crontab -u www-data -e`) einzurichten.

`*/1 * * * * php /var/www/html/squeeze/squeezer jobs:schedule --all`

#### Job im Betriebssystem einrichten (vor Squeeze 2.5)

<p class="callout info">Für die Gewährleistung der zeitgesteuerten Ausführungen muss auf dem Host ein Job hinterlegt werden der das PHP-Jobs-Script `cli/jobs.php schedule` immer zu vollen Minute ausführt.</p>

Dieses Skript ist verantwortlich für die eigentliche Job-Ausführung und führt Jobs aller Mandanten aus.

##### Beispiel Linux

<p class="callout warning">Auf Linux ist besonders darauf zu achten, dass Jobs mittels des `www-data` Users ausgeführt werden.</p>

Falls SQUEEZE auf Linux betrieben wird, ist ein cronjob (bspw. mittels `sudo crontab -u www-data -e`) einzurichten.

`*/1 * * * * php /var/www/html/squeeze/cli/jobs.php schedule`

##### Beispiel Windows

In der Windows Aufgabenplanung (Task Scheduler) muss ein Task definiert werden, welcher als Trigger die folgenden Einstellungen aufweist:

- Nach einem Zeitplan
- **Täglich**
- Wiederholen jede **1 Minute** für die Dauer von **1 Tag**  
    Die 1 Minute kann man manuell eintragen

[![image-1697025935085.png](https://docs.squeeze.one/uploads/images/gallery/2023-10/scaled-1680-/image-1697025935085.png)](https://docs.squeeze.one/uploads/images/gallery/2023-10/image-1697025935085.png)

Als Aktion muss die PHP Excutable aus dem SQUEEZE Installationsverzeichnis mit den CLI script `jobs.php` ausgeführt werden:

- Programm starten
- `<INSTALLATIONS_PFAD_SQUEEZE>/php/php.exe`
- Argumente: **`<INSTALLATIONS_PFAD_SQUEEZE>/htdocs/cli/jobs.php schedule`** (für alle Mandanten)

[![image-1697025969245.png](https://docs.squeeze.one/uploads/images/gallery/2023-10/scaled-1680-/image-1697025969245.png)](https://docs.squeeze.one/uploads/images/gallery/2023-10/image-1697025969245.png)

Ohne Angabe von Mandanten, werden die Jobs für alle SQUEEZE Mandanten geprüft. Der Mandant kann im Aufruf angegeben werden:

`<strong><INSTALLATIONS_PFAD_SQUEEZE>/htdocs/cli/jobs.php schedule <tenant></strong>`

#### Hinweis bzgl. Performance

Bei einem System mit vielen Mandanten kann es vorkommen, dass die Job-Ausführung länger dauert. Das ist im Kontext von Job-Skripten besonders kritisch, da sich ggf. Jobs "überholen" oder parallel ablaufen könnten. In solchen Fällen kontaktieren Sie bitte den DEXPRO Support, damit gemeinsam evaluiert werden kann, ob eine Sonderanpassung notwendig ist.

# Cleanup-Job

Diese Seite dokumentiert, wie Squeeze Daten nach Ablauf ihrer Haltefrist löscht und welche Daten nicht gelöscht werden.

## Squeeze 2

### Verhalten

Ein Dokument in Squeeze 2 wird nicht mehr benötigt, wenn keine weiteren Bearbeitungsschritte mehr anstehen. Üblicherweise sind das Dokumente in den Steps "Verarbeitet" (Backup) und Gelöscht (Deleted). Squeeze hält diese Dokumente noch eine gewisse Zeit vor und löscht sie danach permanent. Hierbei werden die Dateien (Bilder und PDFs), Einträge in der SQL-DB und Suchindizes (in ElasticSearch) gelöscht, welche aus dem Dokument extrahiert wurden.

Ausgenommen sind Informationen, die für Audits relevant sind.

### Haltefrist

Die Haltefrist gibt an wie lange ein Dokument gespeichert bleibt, nachdem es von Squeeze selbst nicht mehr benötigt wird. Als Admin kann man die aktuellen Einstellungen im "System"-Bereich der UI einsehen.

Um die Haltefrist einzustellen, muss man der Mandantenkonfiguration (s. [Server- und Mandantenkonfiguration](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/server-und-mandantenkonfiguration "Server- und Mandantenkonfiguration")) dieses Objekt hinzufügen:

```json
"cleanupJob": {
    "maxDocumentAge": "100",
    "maxLogAge": "0"
}
```

Eine `maxDocumentAge` vom Wert `0` bedeutet hierbei, dass Dokumente schnellstmöglich vom System gelöscht werden.

### Auditlog

Die finale Löschung eines Dokuments wird ab Squeeze 2.3.4 im Auditlog (SQL Tabelle `queueentrychanges`) vermerkt.

## Squeeze 1

<p class="callout info">In Squeeze 1 werden Cleanup-Jobs anders gepflegt als in Squeeze 2. Diese Dokumentation wird aktuell nicht gepflegt, da wir uns auf die Verbesserung und Dokumentation des Cleanup-Jobs von Squeeze 2 konzentrieren.</p>

# Unlock-Job

Falls Dokumente von Nutzern gesperrt sein sollten, welche nicht mehr am Dokument arbeiten, kann der "unlock-documents" Job helfen.

Zu finden ist der Job in der Jobverwaltung (Internal) unlock-documents. Standard mäßig läuft der Job alle 5 Minuten und entsperrt alle Dokumente, in welchen zurzeit nicht gearbeitet wird.

[![unlock.jpg](https://docs.squeeze.one/uploads/images/gallery/2024-12/scaled-1680-/unlock.jpg)](https://docs.squeeze.one/uploads/images/gallery/2024-12/unlock.jpg)