Automatisches Anlegen von Modulkomponenten

Es kommt immer wieder mal vor, dass man beim Ausliefern/Deployen seines Bundles/Moduls gleich eine Modulkomponente anbieten möchte, mit der der Endanwender dann gleich arbeiten bzw. diese benutzen kann, ohne diese zuerst selber anlegen zu müssen.

Vorgehen in Kürze

  • im resources/autocreate/moduleinstances Verzeichnis des eigenen Bundles eine irgend_ein_name.json anlegen

  • dieses JSON muss unter anderem alle Settings der anzulegenden Modulkomponente beinhalten

Dies funktioniert mit Backend sowie mit Frontend Bundles. Die JSON im Backend Bundle abzulegen ist die empfohlene Stelle.

Hintergrundinfo

Dein Bundle/Modul wird vom BPC Core geladen und dabei wird dieses auf JSON-Dateien in dem resources/autocreate/moduleinstances Verzeichnis durchsucht. Wenn eine gefunden wurde, dann wird diese geladen und die Modulinstanz angelegt wenn noch nicht vorhanden. Dies wird bei jedem laden/start deines Bundles gemacht.

Umsetzung

Zuerst sicherstellen, dass in deinem Bundle unter resources die Verzeichnisstruktur autocreate/moduleinstances vorhanden ist. Du musst also unterhalb von resources das Verzeichnis autocreate und darunter das Verzeichnis moduleinstances anlegen.

Im moduleinstances Verzeichnis eine JSON Datei anlegen, welche die Informationen der zu erstellenden Komponente enthält. Am übersichtlichsten ist es, wenn die ID der zu erstellenden Modulkomponente als Dateiname verwendet wird. Und die Datei muss die Dateinamenserweiterung .json haben. Andernfalls wird sie nicht berücksichtigt.

Sollen mehrere Modulkomponenten angelegt werden, dann müssen mehrere JSON-Dateien angelegt werden.

Diagram

Der Inhalt der JSON-Dateien muss folgenden Aufbau haben.

{
  "moduleId": "<ID deines Moduls>",
  "instanceId": "<ID der anzulegenden Modulkomponente>",
  "settings": {
    "internalInstance": true,
    "module_name": "Performance Monitor",
    "module_iconCls": "x-fal fa-fighter-jet",
    ...
    "<Name deines Setting>": <Wert deines Setting>
    ...
}
  • moduleId - die ID welche Du in deiner Module.getModuleId() Implementierung festgelegt hast

  • instanceId - die ID der anzulegenden Modulkomponente. Bitte selber auf Eindeutigkeit achten.

  • settings - hier werden die Werte jedes einzelnen Settings festgelegt, mit denen die zu erstellende Modulkomponente angelegt werden soll.


Keywords: