atlassian confluence als software-infrastruktur
TRANSCRIPT
Confluence
• Enterprise Wiki von Atlassian
• Java Tomcat Web Applikation
• Läuft auf Windows, Linux, OS X mit MySQL, PostgreSQL, Oracle oder MS SQL
• (Oder als SaaS Lösung in der Cloud)
Confluence Features
• Activity Stream
• Sehr guter WYSIWYG Editor
• Blog Posts
• Likes
• Labels
• Space / Page Watching
• Content Sharing
• Notifications (per Email oder Notification Center)
• Daily Summary Email
Confluence Architektur
• XWork/WebWork Application Framework (jetzt Apache Struts)
• Velocity Template Engine
• Hibernate ORM
• Jersey RESTful Web Services Framework
• Lucene Suchmaschine
• Plugins Storage:
• Bandana XML Persistence
• Content Properties
• Active Objects ORM
Plugins
• Atlassian Plugin SDK
• Atlassian Plugin Framework
• basiert auf OSGi (Dynamic Module System)
• Plugin = JAR oder OBR (OSGi Bundle Repository)
• Plugin wird im Admin Bereich hochgeladen
Plugin Module
• Plugin besteht aus mehreren Plugin Modulen (atlassian-plugin.xml)
• Zum Bespiel
• job
• listener
• macro
• rest
• servlet
• servlet-filter
• theme
• web-item
• web-resource
• xwork
Software Infrastruktur
• Confluence als Web-Application Host
• Software wird installiert über Plugin-System
• Sofern Confluence vorhanden:
• Kein extra Server / VM notwendig
• Keine extra Datenbank notwendig
• Kein System Administrator notwendig (Confluence Admin reicht)
3 Beispiel-Applikationen
1. Eng mit Confluence gekoppelt
2. Lose mit Confluence gekoppelt
3. Pagetypes Framework
IDM• Management Blogging Platform
• User stellt Frage -> Management antwortet mit Artikel
• Features:
• WYSIWYG
• Moderator Backend
• Mehrsprachig
• Voting
• 5-Sterne Ratings
• verschiedene Rollen
IDM <> Confluence
IDM ConfluenceIDM Space Space + Bandana
Frage/Artikel Page + Active ObjectsVotes / Ratings Active Objects
WYSIWYG Content (Infobox, Sidebar)
Pages
Language Settings ContentPropertiesRollen (Admin, Moderator, User) Gruppen
Settings BandanaNotifications Mail API
IDM Space/Frage/Artikel Watching Space / Page Watching
Challenge: Mehrsprachigkeit
Confluence Page
Titel
Inhalt
Frage / ArtikelFrage: Q1, Q2, Q3… Artikel: slug-in-english
<macro:idm lang=“en”> Content
</macro:idm>
<macro:idm lang=“de”> Inhalt
</macro:idm>
Plugin Module
• decorator (Layout: view, moderator)
• xwork (view, moderator, admin)
• web-section/web-item (Confluence Admin Buttons/Links)
• web-resource (css, js, img)
• macro/xhtml-macro (Language)
• rest (voting, rating, pagination)
• job/trigger (Fragen auf Ablaufdatum überprüfen)
• extractor (Lucene Suchmaschine)
Vorteile/Nachteile
• Vorteile
• Integration in Activity Stream
• Verlinken im Confluence Editor
• Suchmaschinen-Integration
• Features wie: Likes, Sharing, Notifications, Watching, Commenting
• Nachteile
• Starke Confluence-Abhängigkeit
• Größere Aufwände bei Confluence Update
TrainingsDB
• Applikation für Verwaltung von Trainings (Events) mit mehreren Tagen, Modulen, Trainern, Kategorien
• Training Anmeldung/Abmeldung, Warteliste
• Backend für Administrator
• Einpflegen von Evaluierungsbögen
• Erstellung von Jasper Reports
Technologien
• Xwork/Webwork
• Velocity Template Engine
• Atlassian AUI
• Jersey
• Hibernate 4.3 (eigenes Plugin)
• Jasper Reports (eigenes Plugin)
Architektur
TrainingsDB App
Confluence
Interface
Server Settings
I18N
User
Rollen
Decorators
DB Session DB
Vorteile/Nachteile• Vorteile
• Confluence Unabhängig
• Update-sicher
• Hibernate
• Nachteile
• Keine Activity Stream integration
• Keine Verlinkungen im Editor
• Keine (OOB) Suchmaschinen-Integration
• Kein Like, Sharing, Watching, Commenting
Pagetypes
• Framework um Attribute an einer Confluence Seite zu speichern
• HTML Formular Definition in JSON
• Einspielbar als Plugin
JSON Example
{ "class":"de.scandio.confluence.plugins.pagetypes.blossom.PagetypeForm", "fields":[ { "class":"de.scandio.confluence.plugins.pagetypes.blossom.fields.InputField", "id":"myfield", "label":"My Field" }, { "class":"de.scandio.confluence.plugins.pagetypes.blossom.fields.DateField", "id":"myDate", "label":"My Date" }
]}
Pagetypes
Titel
Editor
Text Input
User Picker
Checkbox
Date Picker
Select
Time Picker
Radio Buttons
5-Sterne Rating
Create Page
Pagetypes Features
• Permissions auf Feldebene
• Konfigurierbare Email Notifications
• Tabellen/Listen Darstellung von Pagetypes
• Konfigurierbare Templates
• Erweiterbar mit Java / Velocity / Javascript / CSS
Beispiel: Scandio Urlaubsantrag
• Mitarbeiter beantragt Urlaub
• Geschäftsführer bekommt Notification
• Geschäftsführer genehmigt oder lehnt ab
• Mitarbeiter bekommt eine Notification
• Urlaube einsehbar in Tabellen / Kalender
Beispiel: Ideen-Zentrale
• Mitarbeiter reicht Idee ein
• Redakteur veröffentlicht Idee
• Mitarbeiter bewerten Ideen (1-5)
• Best-bewerteten Ideen werden dem Management vorgeschlagen
Idee - Aufbau
Ideen Space
Homepage
ArchivFAQKontakt
.Sidebar Idee (versteckt)
.Sidebar Archiv (versteckt)
Fazit
• Vorteile
• Weniger Entwicklung (User Management, Mail API, Page Likes, Comments)
• Teilweise kein Java-Code (Pagetypes)
• Kein Server / Server Admin notwendig (Plugin Framework)
• Nachteile
• Confluence Updates
• Confluence ist offiziell kein Framework sondern Produkt
• Confluence ist nicht Open Source - selber bugfixen mühsam/unmöglich
Georg Schmidl
• Scandio http://www.scandio.de
• @vicox auf Twitter, Github, Bitbucket, …