-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Erweiterbare Plugins für Modelklassen #297
Comments
Momentan werden für jedes Opus_Document neue Plugin-Objekte erzeugt. Alle bisherigen Plugins sind Thread-safe. Das heißt sie haben keine Klassenvariablen. Außerdem ist PHP in der Regel Single-threaded. Das heißt, das selbe Plugin-Objekt könnte für alle Document-Objekte verwendet werden. Objekte anlegen ist häufig eine teure Operation, so dass die Wiederverwendung sogar zu einem Performanzgewinn führen könnte. Manche der existierenden Plugins, z.B. für den Index und den Cache, sind "Storage"-Plugins. Beim Speichern eines Dokuments sollen der Index bzw. der Cache aktualisiert werden. Diese Plugins könnten auch "Update"-Plugins sein. Die anderen Plugins, DOI, URN und Sequence, sind eigentlich "Workflow"-Plugins. Sie sollten Identifiere automatisch generieren, wenn ein Dokument den Status published erhält. Momentan sind sie so implementiert, dass sie immer aktiv werden, wenn ein Dokument im published-Status gespeichert wird. Wird also ein entsprechender Identifier manuell gelöscht, wird beim Speichern automatisch ein neuer angelegt. Die Opus_Document Klasse soltle möglichst einfach sein und nicht von der Storage-Implementation abhängig sein. Vielleicht sollte Opus_Document auch nur ein Interface sein. In diesem Fall müssen die Objekte durch eine Factory erzeugt werden und die Factory kann bestimmen welche Plugins automatisch hinzugefügt werden. Damit könnten die Defaultplugins außerhalb von Opus_Document definiert werden und wären leichter erweiterbar. Die Factory könnte konfiguriert oder komplett ausgetauscht werden. |
Die Verwendung eines Plugin-Objektes für alle Dokumente macht immer noch Sinn, aber kann noch nicht so ohne weiteres umgesetzt werden. Das InvalidateDocumentCache-Plugin ist nicht Thread-safe. Außerdem muss geklärt werden, ob es notwendig ist, dass für ein einzelnes Objekt die Plugins manipuliert werden können. Die verschiedenen Szenarios müssen dokumentiert werden. |
Mittlerweile hat sich bei den Plugins einiges geändert. Die Plugins sind inzwischen konfigurierbar. Das Thema ist noch nicht abgeschlossen, aber das Ticket kann vermutlich mit 4.8 geschlossen werden. |
In den Modelklassen sind Plugins definiert, die wichtige Funktionalitäten, wie z.B. Cache-Updates oder die Indizierung, implementieren. Diese Plugins sind momentan im Code fest verdrahtet und können nicht einfach erweitert werden.
Es soll möglich sein, dass während der Laufzeit weitere Defaultplugins hinzugefügt werden können, die dann für alle Objekte des Models verwendet werden.
Intern: https://tickets.zib.de/jira/browse/OPUSVIER-4035
The text was updated successfully, but these errors were encountered: