49
Atlassian Confluence als Software-Infrastruktur Georg Schmidl - Scandio GmbH

Atlassian Confluence als Software-Infrastruktur

Embed Size (px)

Citation preview

Atlassian Confluence als Software-Infrastruktur

Georg Schmidl - Scandio GmbH

Was ist Confluence?

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 Aufbau

Space

Wiki Page

Attachment Comment

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

1. IDM

IDM• Management Blogging Platform

• User stellt Frage -> Management antwortet mit Artikel

• Features:

• WYSIWYG

• Moderator Backend

• Mehrsprachig

• Voting

• 5-Sterne Ratings

• verschiedene Rollen

IDM Home

IDM Frage

IDM Artikel/Antwort

IDM Frage stellen

IDM Backend

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

2. TrainingsDB

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

TrainingsDB Übersicht

TrainingsDB Training

TrainingsDB Upcoming

TrainingsDB Admin

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

Mail

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

3. Pagetypes

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

Urlaubs-Antrag

Urlaub - Tabelle

Urlaub - 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 - Create

Idee - Liste

Idee - Homepage

Idee - Aufbau

Ideen Space

Homepage

ArchivFAQKontakt

.Sidebar Idee (versteckt)

.Sidebar Archiv (versteckt)

Idee - JSON

Umsetzung

• Velocity Templates

• CSS / Javascript

• (Faktisch) KEIN Java

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, …

Danke