1. Wie lässt sich ein vollständiger Import von Inhalten mit Metadaten nach Confluence realisieren? Tino Winkler Communardo Software GmbH Confluence Community Day, 29.10.2009
2. Motivation Communardo Software GmbH · Kleiststraße 10a · D-01129 Dresden/Germany info@communardo.de · www.communardo.de · Tel. +49 (351) 8 33 82-0 2 Einführung von Confluence: Was ist mit den Daten im Altsystem? Migration nötig! Übernahme großer Mengen von Daten Import in bestehende Anwendung
3. HerausforderungFormat der Quelldaten Communardo Software GmbH · Kleiststraße 10a · D-01129 Dresden/Germany info@communardo.de · www.communardo.de · Tel. +49 (351) 8 33 82-0 3 Abbildung auf Confluence Datenstrukturen Bereiche, Seiten, News, Kommentare und Anhänge Berücksichtigung von Metadaten Datum, Ersteller, Bearbeiter, Schlagwörter Referenzen zwischen Inhalten Hierarchien, Verknüpfungen Übernahme der Formatierung Zeichenkodierung
4. Lösung Communardo Software GmbH · Kleiststraße 10a · D-01129 Dresden/Germany info@communardo.de · www.communardo.de · Tel. +49 (351) 8 33 82-0 4 Austauschformat definieren Abbildung der Quelldaten auf Datenstrukturen in Confluence Definierte Zeichenkodierung Metadaten zuordnen Referenzen abbilden Verwendung von XML-Dokumenten Mit XML-Schema validierbar Bibliotheken zum Generieren/Einlesen der Datenstrukturen vorhanden (z.B. JAXB)
5. HerausforderungSpezifika in Confluence Communardo Software GmbH · Kleiststraße 10a · D-01129 Dresden/Germany info@communardo.de · www.communardo.de · Tel. +49 (351) 8 33 82-0 5 Validierung, Fehlerbehandlung Verbotene Zeichen in Seitentiteln Seitentitel müssen eindeutig sein Zyklen in Hierarchie Confluence speichert Inhalte in Wiki-Markup Konvertierung der Inhalte des Quellsystems Wahl der Importschnittstelle UWC unterstützt keine Metadaten API für XML-Import nicht dokumentiert und überschreibt vorhandene Bereiche Direkter Import in Datenbank zu riskant
6. Lösung Communardo Software GmbH · Kleiststraße 10a · D-01129 Dresden/Germany info@communardo.de · www.communardo.de · Tel. +49 (351) 8 33 82-0 6 Eigenimplementation basierend auf API für Inhaltsmanipulation Entity pro Inhaltstyp Persistierung mittels Manager-Komponenten Fallstrick Uneinheitliche API
9. (Maximal 3 Zeilen verwenden)oder … Unterstützt alle Inhaltstypen und beinahe alle Metainformationen Durch Austauschformat auf beliebige Quellsysteme anwendbar Import in bestehendes Confluence Wiki
11. Herausforderungen API – Nutzer manipulieren Communardo Software GmbH · Kleiststraße 10a · D-01129 Dresden/Germany info@communardo.de · www.communardo.de · Tel. +49 (351) 8 33 82-0 9 public void switchUser(SwitchUserCallback callback) { // retrieve user to run callback for User user = getUser(); // backup current user User backup = AuthenticatedUserThreadLocal.getUser(); // switch user AuthenticatedUserThreadLocal.setUser(user); // run as switched user callback.performAsSwitchedUser(); // restore current user AuthenticatedUserThreadLocal.setUser(backup); } Nutzer steht in thread-local Variable Wird kurzzeitig ausgetauscht Auszuführender Code kann über Callback bereitgestellt werden
uneinheitliche API: Ersteller/Bearbeiter kann bei Anhängen nicht am EntityObject selbst gesetzt werden -> angemeldeter Nutzercreation/modificationDate sind bei Anhängen nicht am EntityObject injizierbar -> aktuelles Datum