Skip to main content

Feature per FeatureInstallAgent via Modul installieren - Mapping der Layer

Comments

10 comments

  • Zendesk API User
    Author: mbergmann - 2/27/2020 21:42

    Hallo Timo,

    mit dem Code installierst du das Feature ja noch nicht sonderst machst nur die Prüfung, ob es zu Problemen kommt.

    Die eigentliche Installation erfolgt ja dann über die Methode .installFeature(...). Dort kannst du dann einen LayerMapper mitgeben.

    Viele Grüße

    Michael

    0
  • Zendesk API User
    Author: tfuchs - 2/28/2020 6:17

    Hallo Michael,

    ja, das habe ich verstanden. Aber wie erstelle ich den LayerMapper? Ich weiss ja nichts von dem Projekt, in dem ich das installieren will, d.h. der Admin, der das Modul installiert, muss ja die Info mitgeben, auf welchen Layer er das Schema mappen will. Irgendwie habe ich da gedanklich einen Missing Link :-)

    Ich fände es ja hilfreich, wenn ich eine Anleitung dazu hätte, anstelle mich durch die leider eher spärlich dokumentierte Javadoc zu graben.

    Danke und Grüße

    Timo

    0
  • Zendesk API User
    Author: tfuchs - 3/2/2020 15:00

    Hallo mbergmann,

    also, ich gebe auf. Mir ist völlig unklar, wie ich einen LayerMapper erstelle. Habt Ihr irgendein Beispiel? Die Dokumentation erscheint mir an der Stelle sehr dünn, oder ich weiss nicht, wo ich schauen soll.

    Grüße

    Timo

    0
  • Zendesk API User
    Author: Hendrik - 3/2/2020 17:10

    Hallo tfuchs​,

    eine Möglich bestünde m. E. darin, das Modul über eine de.espirit.firstspirit.module.Configuration-Implementierung dahingehend konfigurierbar zu machen, dass der installierende Benutzer ein Mapping (z.B. pro Projekt / Schema) über die Modul Konfiguration einrichten kann. Das Content Transport Feature könnte dann im 2. Schritt bei Zuweisung einer Projektkomponente in das gewünschte Projekt installiert werden, dabei die zuvor eingerichtet Konfiguration auslesen und damit ein entsprechenden LayerMapper erzeugen (oder bei fehlendem Mapping für das Projekt mit einer entsprechenden Fehlermeldung abbrechen).

    Das Problem in deinem Use-Case ist ja, dass es keine Möglichkeit gibt, eine Art Installationsdialog zu erzeugen in welchem der installierende Nutzer ein Mapping auswählen könnte. Mit dem beschriebenen Ansatz wäre das möglich.

    Vielleicht fällt ja noch jemandem eine einfachere Lösung ein..

    Gruß, Hendrik

    0
  • Zendesk API User
    Author: tfuchs - 3/2/2020 17:21

    Hi Hendrik​,

    danke für die Rückmeldung. Das könnte evtl. gehen, würde aber den Workflow für den Admin doch ziemlich unschön gestalten.

    Ich könnte natürlich knallhart wenn es nur einen Layer im Projekt den einfach ungefragt nehmen, aber das könnte für ungewünschte Effekte sorgen ;-)

    Grüße

    Timo

    0
  • Zendesk API User
    Author: Hendrik - 3/3/2020 8:12

    Hallo tfuchs​,

    immerhin gibt es bei der vorgeschlagenen Lösung keinen "Medienbruch", sprich der installierende Benutzer muss den Server Manager nicht verlassen. Alternativ könntest du deine Lösung so umbauen, dass der installierende Benutzer den SiteArchitect öffnen muss um z.B. mittels Kontextmenü-Skript direkt auf einem DB Schema eine Art Installationsroutine für die Installation des Features in dem Projekt auszuführen. Der Ansatz wäre etwas pragmatischer und m. E. mit weniger Aufwand verbunden, aber vom Workflow her auch nicht "optimal"..

    Gruß, Hendrik

    0
  • Zendesk API User
    Author: tfuchs - 3/3/2020 8:30

    Hallo Hendrik​,

    das stimmt.

    Ich habe noch eine blöde Frage: Ich verstehe nicht so richtig, wie ich mir eine Instanz des LayerMapper besorgen kann :-)

    Grüße

    Timo

    0
  • Zendesk API User
    Author: Hendrik - 3/3/2020 8:37

    Hallo tfuchs​,

    dazu einfach eine Klasse schreiben die das Interface de.espirit.firstspirit.transport.LayerMapper (Link API) implementiert, ist ja recht überschaubar :smileywink:.

    Edit sagt: Alternativ auch mal auf LayerMapper.LayerNameBasedLayerMapper (FirstSpirit Developer-API) schauen..

    Gruß, Hendrik

    0
  • Zendesk API User
    Author: tfuchs - 3/3/2020 8:38

    Ah, hätte ich mal richtig gelesen, das ist ja ein Interface. Danke!

    0
  • Zendesk API User
    Author: tfuchs - 3/17/2020 9:00

    Für die Welt, die Antwort:

    Möglichkeit 1: neuer Layer wird angelegt:

    installAgent.installFeature(featureFile, LayerMapper.CREATE_NEW_DEFAULT_LAYER_MAPPER);

    Möglichkeit 2: Layer per Namen zuweisen

    Map<String, String> layerMapping = new HashMap<>();

    for (String layerName : analyseResult.getUnmappedLayers()) {

        layerMapping.put(layerName, moduleValues.getString(NewsletterConstants.PROP_DEFAULT_LAYERNAME));

    }

    installAgent.installFeature(featureFile, LayerMapper.LayerNameBasedLayerMapper.from(layerMapping));

    0

Please sign in to leave a comment.