Implementation von Updates
Für das Update der OPUS 4 Applikation gibt es ein Shell-Skript
bin/update.sh
Dieses Skript ruft ein PHP-Skript auf
scripts/update/update.php
das wiederum die Klasse Application_Update
verwendet, um die
für das Update notwendigen Schritte durchzuführen.
Beim Update spielt die Release-Version von OPUS 4 keine Rolle.
Es gibt zwei interne Versionsnummern für die Datenbank und für
die OPUS 4 Applikation. Diese werden in den Tabellen schema_version
und opus_version
gespeichert.
Das Updateskript soll jederzeit ausführbar sein, so dass es auch zwischen Releases zur Aktualisierung einer Testinstanz verwendet werden kann. Ist nichts zu tun, hat der Aufruf des Skriptes keine weiteren Auswirkungen.
Ein Downgrade wird generell nicht unterstützt.
Das Updateskript funktioniert für Datenbanken, ab OPUS 4.4.5. Um von einer älteren Version umzusteigen sollte zuerst auf OPUS 4.4.5 aktualisiert werden, bevor dann der Umstieg auf die Git-basierte Version erfolgen kann.
Datenbank
Für die Updates der Datenbank ist das Framework zuständig. Dafür gibt
es die update
-Funktion der Klasse Opus_Database
. Diese wird während
des Updates der Applikation aufgerufen.
Jeder Updateschritt für das Datenbankschema ist als separates SQL-Skript
in db/schema
des Frameworks abgelegt. Der Name jedes Skripts fängt mit
einer Nummer an. Bei einem Update wird geprüft, ob es Nummern gibt, die
höher sind als die aktuell in schema_version
gespeicherte Version. Wenn
ja, werden diese Skripte ausgeführt und die Version in der Datenbank erhöht.
001-OPUS-4.4.4.sql
002-OPUS-4.5.sql
003-Simplify-table-schema-version.sql
004-Add-table-opus-version.sql
Es gibt noch keinen Mechanismus, um Datenbankänderungen mit PHP-Skripten zu verknüpfen, um z.B. komplexere Transformationen von Daten durchzuführen.
Applikation
Die Updateschritte für die Application werden nach dem Update der Datenbank
ausgeführt. Sie sind in Skripten mit Nummern im Verzeichnis scripts/update
implementiert.
001-Add-import-collection.php
002-Add-CC-4.0-licences.php
Ein Aufgruf bin bin/update.sh
führt die Skripte aus, deren Versionsnummer
höher ist als die aktuell in der Datenbank gespeicherte Version.
Die Masterdaten setzen die gespeicherte Version, so dass beim Update einer neuen Installation z.B. nicht noch einmal Skript “002” ausgeführt wird, um die “CC 4.0 Lizenzen” zu ergänzen.
Die Updateskript können auch einzeln gezielt aufgerufen werden. In diesem Fall wird aber nicht die in der Datenbank gespeichert Version aktualisiert.
Die meisten Updateschritte implementieren das eigentliche Update in einer Klasse
und rufen diese im Skript nur auf. Die Klassen implementieren
Application_Update_PluginAbstract
und liegen in library/Application/Update
.
AddImportCollection.php
ConsoleIni.php
Database.php
Der Updateschritt ConsoleIni
wird momentan separate gehandhabt, weil er vor dem
Update der Datenbank ausgeführt werden muss, wenn noch keine console.ini
existiert,
die die Zugriffinformationen für eine Änderung des Datenbankschemas enthält.