Das System verwaltet Auftragspositionen, die wöchentlich geplant und ausgeführt werden. Manchmal können diese Auftragspositionen jedoch nicht ausgeführt werden, z.B. aufgrund schlechten Wetters. In solchen Fällen sollten diese Auftragspositionen automatisch storniert und aus dem Kalender entfernt werden.
Es wurde vorgeschlagen, einen neuen Status “Abgebrochen” für die Auftragspositionen einzuführen. Dieser Status würde für Auftragspositionen verwendet, die nicht bearbeitet wurden.
Die Implementierung dieses Features erfordert mehrere Schritte:
public enum ProcessingStatus {
KEINE,
OFFEN,
IN_ARBEIT,
ABGEBROCHEN,
ABGESCHLOSSEN;
}
Der ProcessingStatus wurde mit dem Status “Abgebrochen” erweitert, damit die Auftragspositionen den abgebrochenen Zustand widerspiegeln können.
@Entity
public class Planning {
@Column(nullable = false)
private boolean autoExpire;
}
Die Klasse Planning wurde mit dem Feld autoExpire erweitert. Die Planung entscheidet nun, ob die enthaltenen Auftragspositionen “ablaufen” oder nach dem “Fälligkeitsdatum” aufgeräumt werden.
extend type Query {
autoConfiguration(planningId: NID!): AutoConfiguration!
}
Die GraphQL-Schnittstelle wurde erweitert, so dass die Startkonfiguration des Auftragskalenders ein weiteres Kontrollkästchen für das Feld autoExpire enthält.
@Asynchronous
@QuartzTrigger(concurrent = false)
QuartzTriggerHandle startAssignments(@IntervalCron String cronExpression);
Der QuartzScheduler führt nun einen Job cancelOverDueAssignments aus, der “überfällige” Auftragspositionen storniert.
protected QuartzTriggerHandle execute(String cronExpression) {
return Lookup.stateless(GraphQLScheduleService.class).generateAssignments()
}
Die beiden Automatoren wurden zu AssignmentAutomator zusammengeführt. Es gibt nun eine einzige Methode execute, die generateAssignments aufruft.
alter TABLE MNT_PLN_E add (
AUTO_EXPIRE number(1,0) default 0 not null,
);
Ein Migrationsskript wurde erstellt, um das neue Feld zur Datenbank hinzuzufügen. Das Skript wurde gemäß der Namenskonvention auf dem Wiki benannt und fügt drei Dateien namens V2023_12_01_35_01__add_autoexpire_to_planning.sql zu drei Unterverzeichnissen (oracle, mssql, mariadb) hinzu.
Es wird empfohlen, mit den Grundlagen der Programmierung vertraut zu sein, um den Inhalt vollständig zu verstehen.