Communardo Software GmbH, Kleiststraße 10 a, D-01129 Dresden
0800 1 255 255

Confluence in Connections integrieren (Teil 1)

Einleitung

Dieser technische Beitrag beschäftigt sich mit einem Integrationsansatz, bei dem Atlassian Confluence 4 und IBM Connections 4 kombiniert werden sollen. Dabei wird Connections als führendes System betrachtet, in dass Informationen aus einem eigenständigen Confluence integriert werden sollen. Da in Connections die Activity Streams als Kernfeature eine zentrale Rolle spielen, liegt es nahe, Activities aus Confluence darin mit anzuzeigen. Im Folgenden beschreiben wir die Überlegungen und Schritte, die wir im Rahmen eines Proofs für diesen Use Case durchgeführt haben.

Der Activity Stream in Connections

Die verschiedenen Sichten des Activity Streams stellen aktuelle Informationen des Systems dar, für die der Nutzer leseberechtigt ist. Beispiele hierfür sind das Anlegen einer Community, das Bearbeiten einer Wikiseite oder Status-Updates von gefolgten Nutzern. IBM folgt bei der Implementierung einem Standard für Social Activities: http://activitystrea.ms/

In IBM Connections gibt es drei kontextbezogene Sichten für die Activity Streams:

  1. Nutzerspezifisches Following („Ich folge“) – Activities von Personen, denen der aktuelle Nutzer folgt
  2. Community – Activities der aktuellen (ausgewählten) Community 
  3. Global – alle Activities
 

Atlassian Confluence Activities (Updates/Changes) 

Relevante Confluence Activities könnten sein:

  • Bereich erstellt, entfernt
  • Seite erstellt, bearbeitet, entfernt
  • Anhang zu/von einer Seite hinzugefügt, aktualisiert, entfernt
  • Kommentar erstellt, bearbeitet, entfernt
 

Erweiterte Informationen und Funktionen zu Activities im Stream: OpenSocial Gadgets

OpenSocial Gadgets sind kleine Komponenten in XML, HTML und JavaScript, die dazu dienen, um benutzerdefinierte Inhalte in Connections einzubetten. Im Rahmen des Connections Activity Streams werden Gadgets genutzt, um erweiterte Informationen und Funktionen für die kurzen Aktivitätsmeldungen anzubieten. Bei IBM wird das mit dem Begriff  „Embedded User Experience“ bezeichnet.  

Die genaueren Informationen hierzu finden Sie auf der Seite OpenSocial.

Ein IBM Whitepaper dazu findet sich in der IBM Connections Dokumentation.

Beispiele für die Embedded Experience finden sich auch in folgendem Video:

YouTube

Mit dem Laden des Videos akzeptieren Sie die Datenschutzerklärung von YouTube.
Mehr erfahren

Video laden

IBM Connections OpenSocial Data-Model für das Posten der Activities

Das Data-Model gibt an, in welcher Art und Weise die Daten über die OpenSocial Schnittstelle gesendet werden müssen.

Siehe auch: IBM Connections OpenSocial Data-Model

OpenSocial Gadget Template für Confluence Aktivitäten

Für ein Confluence Gadget innerhalb der „Embedded User Experience“ muss eine Gadget XML erstellt werden, welche beschreibt, wie die übermittelten Daten repräsentiert werden sollen. 

Ein einfaches Beispiel, wie diese XML-Beschreibung grundsätzlich aussehen kann findet man hier: http://public.dhe.ibm.com/software/dw/lotus/ee/video.xml.

Auf diese Gadget XML wird innerhalb der Activity in Form einer URL verwiesen, damit Connections zum Zeitpunkt der Darstellung des Gadgets weiß, wo die Beschreibung des Gadgets zu finden ist:

 

"openSocial": {
	"embed": {
		"gadget": "http://com19249177.mydomain.com/communardo/gadget/confluence.xml",
		"context": {
			"pageid": "${page.id}"
		}
	}
}

Technische Umsetzung

In diesem Kapitel werden die einzelnen Umsetzungsschritte grob beschrieben. Dabei wird auf Probleme und Ziele der unterschiedlichen Vorgehensweisen hingewiesen.

Es wird hierbei von einer gemeinsame Nutzerbasis ausgegangen. (Nutzer aus System A ist ebenfalls im System B vorhanden und kann eindeutig aus einem System in das andere System referenziert werden)

Das Vorgehen wird anhand des nutzerspezifischen Activity Streams von IBM Connections beschrieben.

Atlassian Confluence Activities ermitteln

Confluence verfügt über zahlreiche inhaltsbezogenge Events (z.B. Seite wurde geändert), für die man innnerhalb von Plugins so genannte Event Listener implementieren kann. Dieser Mechanismus ermöglicht es, auf einfache Art und Weise auf konkrete Systemereignisse zu reagieren, was uns in unserem Integrationsansatz hilft, um relevante Ereignisse zu erkennen und an Connetions  „weiterzuleiten“.

Relevanten Empfängerkreis im Connections für die Activities ermitteln

Die Schnittstelle von IBM Connections sieht vor, dass die Activities einzeln in den jeweiligen Activity Stream gesendet werden müssen. Es gibt kein Automatismus, der die Activity, die an einen Connections-Nutzer gesendet wird, auch an die zugehörigen Followers in Connections delegiert. Diese Einschränkung ist darin begründet, dass Informationen aus einer angebunden Applikation zugriffsbeschränkt sein können, sodass u.U. die Followers der anderen Applikationen diese Activity gar nicht erhalten dürfen (Berechtigungsproblematik).

Jedoch sieht das Opensocial ActivityObject Format vor, dass mehrere Empfänger einer Activity im to/deliverTo Element eingetragen eingetragen werden können. Siehe auch Connections Wiki

Connections und Confluence besitzen jeweils einen Follower Mechanismus. In diesem Beispiel wird davon ausgegangen, dass es keine Follower-Synchronisation zwischen den Systemen gibt, sodass in jeden Anwendung eine unabhängige Nutzer-Follower Beziehung existiert.

Für das Beispiel werden die Followers/Beobachter an den Confluence-Entitäten verwendet, um sie auch im Connections über die Activities zu informieren.

Senden der Daten an Connections

Nachdem die Empfänger und die Daten erarbeitet wurden, können nun die Activities über die OpenSocial REST API in die entsprechende nutzerspezifischen Activity Streams gesendet werden. Der notwendige REST Service wird in der Connections Dokumentation beschrieben. Ein Beispiel findet man auch im Blog von Luis Benitez: http://www.lbenitez.com/2012/05/how-to-post-events-into-opensocial.html

Hinweise

Berechtigungen des Systemnutzer und BASIC Authentication 

Für das authentifizierter Versenden der Confluence Updates wurde ein Systemnutzer in IBM Connections erstellt, der zusätzlich die Berechtigung erhalten musste, Activities auch für andere Nutzer einstellen zu können. Die Berechtigung kann konfigurativ vergeben werden. Die Authentifizierung des Systemnutzers gegen die OpenSocial REST Schnittstelle kann mit  „BASIC Authentication“ erfolgen. Hierbei ist darauf zu achten, dass die URL /basic/ enthält z.B. 

/connections/opensocial/basic/rest/activitystreams/@me/@all/@all 

Viele Updates und Follower in Confluence können zu zahlreichen Aufrufen und somit zu Lastproblemen führen

Für das Senden der Aktivitäten wäre es gut, wenn Anfragen gebündelt werden könnten. Leider werden die im Standard vorgesehen BATCH-Aufrufe von Connections 4.0 noch nicht unterstützt.

Ausblick

Im nächsten Teil werden wir uns damit beschäftigen, wie man die Authentifizierung des Confluence Gadgets mit OAuth realisieren kann.

Autoren: Andreas Reif und Ralf Borchers

Gibt es schon irgendwo Teil 2 dieses Artikel? Ist auf jeden Fall ein interessanter Ansatz.

MFG

Wir werden in der kommenden Woche unser Produkt C²-Connect zur Integration von Confluence Aktivitäten in Connections vorstellen. Später werden wir auch interessante, technische Aspekte hier wieder veröffentlichen.

Kommentar hinterlassen


Pin It on Pinterest