Auswahl und Entwicklung von Apps für Jira und Confluence

Die Verwendbarkeit der Atlassian-Tools kann durch den Einsatz von Apps* häufig stark gesteigert werden. Daher ist uns kein Jira oder Confluence bekannt, welches gänzlich ohne Plugins betrieben wird. Die hierfür notwendigen Apps sind auf dem Marketplace der Atlassian zu finden. Die dort versammelte Vielfalt ist gewaltig: Für Jira sind dort zurzeit beispielsweise ca. 1.760 Plugins geführt, für Confluence ca. 950, ca. 220 für Bitbucket.

Erweiterung der Funktionalität mittels Apps Suche und Auswahl

Wie findet man in dieser riesigen Auswahl die richtigen Apps? Ein möglicher Ansatz ist selbstverständlich, nach Apps mit geforderten Funktionen zu suchen. Das ist recht einfach möglich. Meist bedeutet dieser Ansatz aber einen hohen Aufwand, da in der Regel recht viele AddOns in Frage kommen. Diese müssen dann anhand der Beschreibung sowie der Nutzungsdokumentation geprüft werden. Oftmals sind auch – ggf. nach Ausschluss einiger Kandidaten – tiefergehende Tests nötig, um das richtige Plugin auswählen zu können.

Schon bei einer ersten Recherche wird man in den meisten Fällen schnell AddOns mit spannenden Funktionen finden. Man sollte sich allerdings nicht wundern: Manchmal trifft man auch auf AddOns mit überraschenden Funktionalitäten: ein Spotify-Plugin für Bitbucket, einen BlockChain Viewer for Jira mit der Funktion „control all time the price of the main virtual currencies“ oder Congrats for Confluence („Congratulate your team members, friends and work colleagues on special occasions“). Dies sind vermutlich nicht die Funktionen, die Ihnen in Ihrem businessgetriebenen Umfeld fehlen.

Neben der Recherche und den Tests, durch die herausgefunden werden soll, welches der Plugins die Anforderungen am besten erfüllt, müssen weitere Kriterien untersucht bzw. verglichen werden. So wird die Liste der zu testenden Plugins vermutlich ein wenig übersichtlicher.

Diese Kriterien können beispielsweise sein:

  • Verfügbarkeit: Für welche Versionen der Systeme (z.B. Jira Core, Jira Software, Jira ServiceDesk) und für welchen Betriebsmodus (Server, Cloud oder Data Center) steht das Plugin zur Verfügung?
  • Kosten: Wie verhalten sich die Kosten im Vergleich zu anderen Plugins? Entsprechen die Kosten dem zu erwartenden Vorteil?
  • Erprobtheit: Wie viele Installationen mit wie vielen Nutzern gibt es? Dieses Kriterium ermöglicht zumindest eine grobe Einschätzung, ob eine gute Nutzbarkeit gegeben ist.
  • Reifegrad: Wie verhält es sich mit der Weiterentwicklung? Wie lange ist das Produkt am Markt (Versionen, Revisionen, Historie, Updates)?
  • Dokumentation & Support: Wie ausführlich und aktuell ist die Dokumentation? Gibt es Support? Wie, wann und in welchen Sprachen ist dieser zu erreichen?
  • Weitere nicht-funktionale Anforderungen: Kompatibilität mit anderen Apps, Exportmöglichkeiten, Auswirkungen auf die Performanz, Skalierbarkeit etc.
  • Einführung: Wie wird die Einführung unterstützt? Gibt es Migrationsunterstützung für ggf. vorhandene Daten etc.?

Weitere Anhaltspunkte für die Auswahl findet man auf der Startseite des Marketplace. Dort sind verschiedene Kategorien abgebildet, in denen unterschiedliche Apps einsortiert sind. So werden zum Beispiel Listen für die Kategorien „Top rated“, „Top trending“, „Top selling“ und „Newest“ angeboten. Zudem wird noch eine weitere Liste mit sogenannten Collections angezeigt, die jeweils Apps nach bestimmen Funktionsbereichen sortieren.

Plugins Funktion und Einsatz

Aus unserer Erfahrung mit dem Einsatz von Plugins in unterschiedlichsten Einsatzszenarien bei verschiedenen Kunden hat sich eine gewisse Zahl an Apps herauskristallisiert, die immer wieder eingesetzt werden.

Diese Apps werden in der Regel für folgende Funktionsbereiche eingesetzt:

  • (Multi-)Projektmanagement
  • Testmanagement
  • Assetmanagement
  • CRM
  • Abbildung von Prozessdiagrammen
  • Confluence als Intranet
  • Dokumentenmanagement
  • Erstellung von Handbüchern
  • Image Maps

Weitere Apps, die sehr häufig eingesetzt werden, sind beispielsweise:

  • ScriptRunner for Jira: Ermöglicht die Erweiterung von Jira und Confluence durch Erstellen von Skripten
  • JSU Automation Suite for Jira Workflows: Ergänzt die Funktionen von Jira im Bereich Workflows etc.
  • Content Formatting Macros for Confluence: Bessere Formatierung in Confluence
  • io Diagrams for Confluence: Ein Grafikwerkzeug für Confluence, durch das Inhalte mit Grafiken aufgewertet werden können

Dabei ist zu beachten, dass diese AddOns keinen spezifischen fachlichen Einsatzzweck haben, sondern eher technischer Natur sind. Sie ergänzen die allgemeine Basisfunktionalität der Systeme Jira und Confluence.

Weitere Erkenntnisse aus unseren Projekten sind:

  • Generell gilt es, in der Anzahl der eingesetzten Apps sparsam zu sein. Die Gründe dafür sind zahlreich: So steigt der administrative Aufwand immens, Probleme mit Abhängigkeiten von Apps untereinander werden deutlich wahrscheinlicher, die Performanz des Gesamtsystems könnte leiden etc. Besonders muss darauf geachtet werden, dass keine Apps mit ähnlicher Funktion eingesetzt werden. In einem Anforderungsbereich sollte man sich für eine App entscheiden.
  • Verzichten Sie auf Apps, deren Funktion man mit überschaubarem Aufwand mittels Basisfunktionen von Jira oder Confluence umsetzen bzw. nachbilden kann. Das spart Kosten und minimiert die schon oben genannten Effekte.
  • Apps, die administrative Rechte auf Nutzer verteilen, sollten in keinem Fall eingesetzt werden. Die Sicherheit und Stabilität der Systeme ist ansonsten in Gefahr.

Ein weiterer wichtiger Aspekt hinsichtlich des Einsatzes von Apps ist, dass die Komplexität des Systems in der Summe zum Teil deutlich gesteigert wird. Es gibt Plugins, die ausgesprochen komplexe Funktionen bereitstellen. Mit dem Einsatz solcher Plugins sind nicht nur Kosten aufgrund der Lizensierung, sondern auch immenser Aufwand bei der Einführung verbunden. Für solche AddOns die passende Konfiguration zu finden, ist in der Regel ein eigenes Projekt mit Anforderungsanalyse, Umsetzung, Tests, Dokumentation und vermutlich einigen Feedbackschleifen. Dies führt zu nennenswertem Aufwand und hohen Investitionen. D.h. aber nicht, dass man darauf verzichten sollte, sondern dass die Entscheidung bewusst getroffen werden muss und eben ein „echtes“ Projekt gestartet werden muss. Es existieren viele Beispiele, in denen die geplante Einführung solch komplexer Apps mit der Zeit versandet ist. In diesen Fällen ist außer den Kosten für die Investition nichts geblieben!

Entwicklung von Apps

An den eher technischen Funktionen der Apps aus unserer Favoritenliste erkennt man, dass häufig kein passendes Plugin gefunden werden kann. Es gilt also, die Funktionalität anders zu erweitern bzw. zu ergänzen. Vor allem der ScriptRunner (es gibt weitere ähnliche Plugins) ermöglicht in diesen Situationen, die Funktionen der Systeme durch Erstellung und Bereitstellung von individuellen Funktionen zu erweitern. Natürlich sind diesem Scripting Grenzen gesetzt. Wenn also Funktionen benötigt werden, die auch auf diesem Wege nicht bereitgestellt werden können, ist die Erstellung eines eigenen, individuellen Plugins der einzige Ausweg. Das ist nicht so aufwendig, wie es vielleicht im ersten Moment erscheinen mag. Die Plugin-Entwicklung ist kein Hexenwerk!

Architektur der Integration von Apps

Was ist bei einer Plugin-Entwicklung zu beachten? Jira und Confluence sind Java-Webapplikationen. Bereits von Beginn an (in der Version 4 von Jira sowie in Confluence-Version 3) wurde eine OSGi**-(Open Services Gateway initiative)-Plattform zur Verfügung gestellt. Apps sind OSGi-Bündel, die als JAR paketiert werden und separat vom Kernsystem entwickelt werden. Somit können Apps in eine Jira-Instanz – und somit auch in eine laufende Instanz – integriert werden. Für die Entwicklung stellt Atlassian verschiedene Werkzeuge und Ressourcen zur Verfügung:

  • Atlassian Plugin Software developer kit (SDK): eine Sammlung von Softwareentwicklungstools in einem installierbaren Paket
    • Java APIs, Bibliotheken, Java Script Framework, HTML/CSS-Framework, diverse  Atlassian-Apps wie UPM (Universal Plugin Manager) und FastDev und schließlich AMPS (Atlassian Maven Plugin Suite), das von Maven-Archetypen und -Befehlen insbesondere zum Erzeugen von App-Strukturen, -Code und -Konfigurationen verwendet wird.
  • Spring Scanner und Quickreload
    • Werden mit SDK geliefert und eingesetzt, um die Source-Code-Injektion und die Entwicklungsschritte zu beschleunigen.
  • Java APIs
    • Apps, die direkt im Atlassian-Produkt installiert werden, können über eine Java-API mit dem Produkt kommunizieren. Atlassian bietet dazu Java Doc an.
  • Remote Access Point REST-APIs
    • Die REST-APIs stellen eine Alternative zu den Java-APIs dar und ermöglichen Remote Zugriff über HTTP. Apps, die über REST-APIs mit Atlassian-Produkten kommunizieren sind toleranter gegen Atlassian- Java-API-Änderungen. Diese Option wird bei 3rd-Party-Apps, die nicht direkt in einem Atlassian-Produkt installiert werden sollen, verwendet. Atlassian bietet dazu einen API-Browser und eine API-Doc an.

Aus den geschilderten Gründen heraus werden von uns immer wieder individuelle Plugins entwickelt. Beispiele sind:

  • External AD Connector
    • Datentransfer über eine beim Kunden individuell definierte AD (Active Directory) REST-Schnittstelle in das Jira hinein
    • Konfigurierbare Zuordnung von externen AD-Daten und Jira-Feldern
    • Eingabe einer benutzerdefinierten Suche
    • Auswahlmöglichkeit eines Datensatzes aus einer Suchergebnisse-Liste im Jira-Issue
    • Diese App wird zurzeit zu einer Common-Connector-App weiterentwickelt

Struktur der App im Zusammenspiel mit einer unternehmensweiten REST-API zur Integration mit allen Systemen im Unternehmen

Der Datenaustausch erfolgt über JSON-Objekte und ein konfigurierbares Mapping

  • Jira Issue Synchroner
    • Synchronisation von Vorgangsdaten aus mehreren Jira-Instanzen
    • Konfiguration in der Property-Datei
    • Zuordnung und Validierung des Workflow-Status
    • Validierung und Zuordnung von Feldern
    • Konfigurierbare Synchronisationssteuerung auf Systemebene und auch temporär auf Vorgangsebene
  • Jira ESB Connector
    • Integration von Jira über den Firmen-ESB (Enterprise Service Bus) des Kunden
    • Die App kommuniziert mit der ESB-Schnittstelle, sobald der Vorgang einen bestimmten Status erreicht hat.
    • Die erforderlichen Daten werden als JSON-Objekt an den ESB übergeben.
    • Konfiguration erfolgt in einer Property-Datei

Integration von Jira ServiceDesk mit externen Support-Systemen über einen ESB

Diese AddOns stehen alle in Zusammenhang mit der Integration der Atlassian-Systeme in die vorhandene Systemlandschaft unserer Kunden. Dies ist ein wichtiges Thema, siehe auch unseren Beitrag vom 22. November 2019.

Für weitere Kunden wurden aber auch Plugins entwickelt, die andere Anforderungen erfüllen:

  • MailSupport-Plugin: Erweiterte E-Mail-Handler- & E-Mail-Reply-Funktion
  • Clone and Move: Verbesserte und zusammengeführte Funktion
  • JIRA Workflow Functions Plugin: Zusätzliche Funktionen (Vorbedingungen, Validierungen …) für Workflows
  • Overdue Fields: Neues Feld mit besonderem UI-Layout für Zeiträume nach Due-Date
  • Last Status Change: Funktion und Datumsfeld zur Kontrolle der Statusänderung
  • Status Histogramm Report: Ein Report für bestimmte Anforderungen
  • Clone & Substitute: Verbesserte und zusammengeführte Funktion

Es gibt aber Situationen, in denen ein Plugin nicht notwendig bzw. sogar schlechter zu nutzen ist. So musste beispielsweise für einen wiederholt anzuwendenden, kundendefinierten Datenimport eine kleine Applikation entwickelt werden. Der Standard-Importer konnte diese spezifischen Anforderungen nicht erfüllen. Diese Standalone-Applikation für die Verwendung auf dem persönlichen Rechner ruft die REST-API von Jira, um den Import durchzuführen. Die Funktionen sind:

  • Migration von Daten aus extern generierten CSV-Dateien
    • die Daten können nur verteilt über verschiedene Dateien zur Verfügung gestellt werden
  • Validierung und Zuordnung der Daten zu bestehenden Issues – wenn notwendig –, ansonsten Neuerstellung von Issues
  • einfache Konfiguration über eine Property-Datei

mgm-Apps auf dem Marketplace

Aus diesem Wissen und der in langer Zeit aufgebauten Erfahrung heraus haben wir vor einiger Zeit entschieden, eigene Apps für den Marketplace zu entwickeln. Dort finden Sie zurzeit diese drei Plugins vor:

mgm-Apps auf dem Atlassian Marketplace

  • Hierarchical Calculated Field
    • Addiert Werte aus mehreren numerischen Feldern in Subtasks und überträgt das Ergebnis aus den Teilaufgaben in ein Summenfeld im übergeordneten Vorgang.
    • Es ist möglich, Werte aus dem übergeordneten Vorgang in die Berechnung einzubeziehen oder auszuschließen.
    • Die Konfiguration erfolgt über ein UI auf Admin-Level.
  • Link Workflow Graphic for Jira
    • Ersetzt das JIRA-Standard-Workflow-Diagramm durch eine benutzerdefinierte Grafik.
    • Die Grafik kann in der ausgewählten Sprache des jeweiligen Nutzers angezeigt werden, wenn das Plugin entsprechend konfiguriert ist.
    • Die Konfiguration für diese App unterliegt auch dem Backup und kann daher wiederhergestellt werden.
    • Die Konfiguration erfolgt über ein UI auf Admin Level.
  • Smart Issue Panel for JIRA
    • Das Smart Issue Panel ist ein benutzerdefiniertes Vorgangspanel zur Anzeige von weiteren Issues (links) in einem Issue.
    • Angezeigt werden Issues, die auf einer benutzerdefinierten Vorgangsbeziehung basieren. Diese Beziehung wird durch einen zu definierenden JQL-Ausdruck aufgebaut, sie kann also mit einem bekannten Werkzeug hergestellt werden.
    • Es gibt ein konfigurierbares Berechtigungsschema zur Kontrolle der Sichtbarkeit des Panels.
    • Das Layout des Panels ist anpassbar.
    • Es ist somit eine weitgehende Anpassung und Erweiterung der Standardpanels “issue-link” und “sub-task”.
    • Die Konfiguration erfolgt über eine UI auf Admin Level und auf Project Admin Level

Zwei Smart Issue Panel eingebettet in die Ansicht eines Issues

Diese drei Plugins werden in der nächsten Zeit um weitere Funktionen ergänzt. So steht vor allem beim Plugin “Smart Issue Panel for JIRA” die Erweiterung der Definition der zu Grunde liegenden Issue-Beziehung im Vordergrund. So soll ermöglicht werden, dort auch Links in Confluence und später in andere Datenquellen hinein verwenden zu können. Aber auch die Berechnungs- sowie die Verlinkungsmöglichkeiten im „Hierarchical Calculated Field“ werden in Kürze erweitert.

Details sind hier zu finden.

Zusammenfassung

Die hier aufgezeigten Plugins, aus dem Marketplace oder individuell entwickelt, zeigen, dass mit Apps die Verwendbarkeit und damit der Nutzen des Basissysteme wie Jira, Confluence etc. deutlich gesteigert werden kann. Wichtig ist in diesem Zusammenhang allerdings das dazugehörige Vorgehen bei Auswahl und Entwicklung. Nur so kann sichergestellt werden, dass wirklich Nutzen entsteht und die Investition diesem Nutzen entspricht.

Die Auswahl muss sorgfältig erfolgen, die Einführung gut geplant werden und eine ggf. notwendige individuelle Entwicklung – wie jedes Softwareprojekt – mit einem etablierten Vorgehen durchgeführt werden. Dazu ist ein gehöriges Maß an Erfahrung und Know-how notwendig.

* Die Begriffe App, AddOn und Plugin werden hier synonym verwendet.

** Die OSGi Alliance (früher Open Services Gateway initiative) spezifiziert eine hardwareunabhängige dynamische Softwareplattform, die es erleichtert, Anwendungen und ihre Dienste per Komponentenmodell („Bundle“/„Service“) zu modularisieren und zu verwalten („Service Registry“). Die OSGi-Plattform setzt eine Java Virtual Machine (JVM) voraus und bietet darauf aufbauend das OSGi-Framework.