Individuelle Znuny Plugin- & Modulentwicklung
Benötigen Sie ein maßgeschneidertes Znuny-Paket oder müssen Altmodule aktualisiert werden? Softoft entwickelt release-sichere Erweiterungen.
.sopmDie SOPM-Datei (*.sopm) enthält alle Metadaten deines Pakets:
`.sopm“
Lege dein Paket in einem eigenen Verzeichnis an, z.B. MyExtension/:
*.sopm
Nutze das CLI-Tool, um aus deiner SOPM ein OPM zu bauen:
MyExtension/
Kernel/Config/Files/XML/MyExtension.xml
Zum Deinstallieren bzw. Aktualisieren:
Kernel/System/DynamicField/Driver/MyCustomField.pmIn Kernel/Config/Files/XML/MyExtension.xml registrierst du einen neuen Dynamic Field Driver:
Kernel/System/Event/Handler/MyHandler.pm
Implementiere den Driver in Kernel/System/DynamicField/Driver/MyCustomField.pm.
Melde deinen Event-Handler an:
Run()
Handler in Kernel/System/Event/Handler/MyHandler.pm implementieren (Run()-Methode).
Kernel/System/Output/Filter/MyFilter.pm
Filter in Kernel/System/Output/Filter/MyFilter.pm.Packages.xml für eigenes Repo:
Packages.xmlPackage::RepositoryList deine Repo-URL ein.MyCalendar.sql/create_calendar.sql für Tabelle calendar_events.Kernel/System/CalendarEvent.pm mit CRUD-Methoden.Kernel/Modules/AgentCalendar.pm, Template AgentCalendar.tt.sopm anpassen (SemVer).sql/ sauber versionieren.Language/de_*.pm und en_*.pm.
Damit hast du eine solide Basis, um eigene Znuny-Plugins zu entwickeln, zu verteilen und in Kundenprojekten wartbar einzusetzen. Viel Spaß!Individuelle Znuny Plugin- & Modulentwicklung
Benötigen Sie ein maßgeschneidertes Znuny-Paket oder müssen Altmodule aktualisiert werden? Softoft entwickelt release-sichere Erweiterungen.
Eine SOPM-Datei (Software Package Manager) ist eine XML-basierte Metadatendatei, die essenziell für jedes Znuny-Plugin ist. Sie enthält wichtige Informationen wie den eindeutigen Namen des Pakets, seine Version, die Kompatibilität mit bestimmten Znuny-Framework-Versionen und vor allem eine detaillierte Liste aller Dateien, die Teil des OPM-Pakets sind. Beim Installationsprozess liest Znuny diese Datei, um zu wissen, welche Dateien wohin kopiert werden müssen, welche Datenbankänderungen vorgenommen werden sollen oder welche Konfigurationen angewendet werden müssen. Ohne eine korrekt formatierte SOPM-Datei kann ein Plugin nicht als OPM-Paket erstellt oder installiert werden, da sie die Blaupause für das Deployment darstellt.
Quellen:
Für ein Znuny-Plugin ist eine klare und standardisierte Verzeichnisstruktur entscheidend, typischerweise unter einem eigenen Verzeichnis wie MyExtension/. Innerhalb dieses Hauptverzeichnisses befinden sich die SOPM-Datei und weitere Unterverzeichnisse:
Kernel/Config/Files/XML/: Hier werden XML-Dateien abgelegt, die Module, Menüeinträge oder Dynamic Fields registrieren.Kernel/System/: Enthält die Geschäftslogik-Klassen des Plugins.Kernel/Modules/: Hier liegen die Frontend-Controller, die für die Darstellung im Agenten- oder Kundeninterface zuständig sind.Templates/: Beherbergt die Template-Dateien (z.B. .tt für Template Toolkit) für die Benutzeroberfläche.Language/: Enthält Dateien für die Internationalisierung, wie de_*.pm und en_*.pm für Übersetzungen.sql/: Hier werden SQL-Skripte für Datenbankänderungen oder -erstellungen abgelegt.Quellen:
Das Erstellen eines OPM-Pakets erfolgt über ein CLI-Tool, das die in der SOPM-Datei definierten Metadaten und die darin gelisteten Dateien zu einem einzigen .opm-Archiv zusammenführt. Der genaue Befehl hängt von der Znuny-Entwicklungsumgebung ab, aber im Kern wird die SOPM-Datei als Eingabe verwendet, um das Paket zu bauen. Nach der Erstellung gibt es zwei Hauptwege zur Installation:
.opm-Paket hoch. Das System führt dann die Installation durch.Zum Deinstallieren oder Aktualisieren eines Pakets werden ähnliche Wege beschritten, wobei der Paketmanager die Änderungen basierend auf der SOPM-Datei des neuen Pakets oder der Deinstallationsanweisungen verwaltet.
Quellen:
Znuny bietet verschiedene Erweiterungspunkte, um die Kernfunktionalität anzupassen und zu erweitern:
Kernel/Config/Files/XML/MyExtension.xml registriert und der eigentliche Driver in Kernel/System/DynamicField/Driver/MyCustomField.pm implementiert.Run()-Methode in Kernel/System/Event/Handler/MyHandler.pm implementiert.Kernel/System/Output/Filter/MyFilter.pm.Quellen:
Nachdem Sie Ihr OPM-Paket erstellt haben, gibt es mehrere Wege, es bereitzustellen und zu teilen:
Packages.xml-Datei generieren, die Metadaten zu all Ihren OPM-Paketen enthält. Diese XML-Datei wird dann auf einem Webserver gehostet. Znuny-Instanzen können dieses Repository über die SysConfig-Einstellung Package::RepositoryList hinzufügen, um Ihre Plugins direkt über die Paketverwaltung zu finden und zu installieren.Quellen:
Für die Entwicklung robuster und wartbarer Znuny-Plugins sind einige Best Practices entscheidend:
sql/-Skripten. Stellen Sie sicher, dass diese Skripte idempotent sind und Upgrades sowie Downgrades korrekt handhaben können.Kernel/System/- und Kernel/Modules/-Klassen. Dies gewährleistet die Funktionalität und Stabilität Ihrer Codebasis bei Änderungen und Updates.README-Datei zu Ihrem Plugin hinzu und verwenden Sie POD (Plain Old Documentation) in Ihren Perl-Modulen, um die Code-Funktionalität zu beschreiben. Eine gute Dokumentation ist für andere Entwickler und für die zukünftige Wartung unerlässlich.Language/de_*.pm und en_*.pm (und weiteren Sprachen) bereit, um Ihr Plugin für eine internationale Benutzerbasis zugänglich zu machen.Quellen: