- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Feature per FeatureInstallAgent via Modul installieren - Mapping der Layer
Hallo zusammen,
ich mรถchte in einem FSM ein Feature mitliefern, das ich per FeatureInstallAgent installieren will (in installed()). Dazu mache ich zunรคchst folgendes:
final SpecialistsBroker broker = environment.getBroker();
final FeatureInstallAgent installAgent = broker.requestSpecialist(FeatureInstallAgent.TYPE);
final FeatureFile featureFile;
featureFile = installAgent.uploadFeatureFile(inputStream);
final ServerActionHandle<? extends FeatureProgress, FeatureAnalyseResult> analyseHandle =
installAgent.analyzeFeature(featureFile);
final FeatureAnalyseResult analyseResult = analyseHandle.getResult(true);
In dem Feature wird ein Schema mitgeliefert. Das muss ja auf einen Layer gemappt werden. Wie findet das Mapping statt? Das muss ja eigentlich der Admin, der das Modul installiert irgendwie auswรคhlen, oder? Wie mache ich das?
Danke und Grรผรe
Timo
- Labels:
-
Developers
-
Project Usage
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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));
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo tfuchsโ,
dazu einfach eine Klasse schreiben die das Interface de.espirit.firstspirit.transport.LayerMapper (Link API) implementiert, ist ja recht รผberschaubar .
Edit sagt: Alternativ auch mal auf LayerMapper.LayerNameBasedLayerMapper (FirstSpirit Developer-API) schauen..
Gruร, Hendrik
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ah, hรคtte ich mal richtig gelesen, das ist ja ein Interface. Danke!

