Workflow-Status in Office 365

Die Workflow-Veteranen kenne es: wenn ich in SharePoint einen neuen Workflow veröffentliche, dann wird in der Liste eine neue Spalte erstellt, die den Status des Workflows wiederspiegelt.

In der Regel sind das: In Bearbeitung, Abgeschlossen, Fehler und Abgebrochen.

image

Über entsprechende Actions im Workflow, kann man hier auch einen anderen Status rein schreiben, z.B. ob ein Inhalt genehmigt wurde oder in welchem Bearbeitungsschritt sich ein Workflow befindet.

Mit SharePoint 2013 hat Microsoft neben der traditionellen Workflow-Engine aus dem .Net Framework auch die Windows Azure Workflows (WAW) mit eingebunden. Diese sind zunächst einmal komplett unabhängig von SharePoint.

Wenn über die WAW ein Workflow veröffentlicht wird, dann wird für diesen Workflow ebenfalls eine neue Spalte angelegt um den Status anzuzeigen, aber der Workflow schreibt im Gegensatz zu den klassischen Workflows wird beim Starten einer neuer Workflow Instanz keinen initialen Status. Das bedeutet, dass die Spalte zunächst leer bleibt.

image

image

image

Das ist deshalb interessant, weil die Spalte eine Link auf die laufende Workflow-Instanz beinhaltet. Mit einem Klick auf den Link bekommt also direkt alle Aufgaben des Workflows sowie den Workflow-Verlauf angezeigt. Ist die Spalte leer, gibt es als Konsequenz auch keinen Link und somit kommt man nur über das Workflow-Menu des jeweiligen Elements an den Workflowverlauf.

Als Lösung sollte man also als ersten Schritt in einem Workflow immer einen Status setzen – damit sichergestellt ist, dass es den Link in der Spalte auch gibt. Wenn man mit dem SharePoint-Designer einen Workflow erstellt, dann wird automatisch als Status der Name der jeweiligen Workflow-Stufe eingefügt, bei Nintex muss man das manuell mit einer entsprechenden Action machen.

image

image

Zu beachten ist außerdem, dass am Ende des Workflows der Status ggf. noch auf “Abgeschlossen” oder so gesetzt werden sollte. Das gilt sowohl für Nintex als auch für Designer Workflows, sonst bleibt in der Spalte der zuletzt gesetzte Status stehen, der ggf. nicht den tatsächlichen Status des Workflows wiederspiegelt.

image

Die UserGroup Düsseldorf bittet um Eure Hilfe

Liebe SharePoint Community,

seit mittlerweile 6 Jahren trifft sich die Düsseldorfer UserGroup und hat schon über 25 tolle Treffen organisiert. Seit ca. 1,5 Jahren finden die Treffen leider nur noch sehr unregelmäßig statt. Das hat einen einfachen aber leider schwerwiegenden Grund.

Wir brauchen einen Raum für unsere Treffen.

Um im nächsten Jahr wieder regelmäßiger zusammen zu kommen, benötigen wir also einen Raum, den wir regelmäßig für unsere Treffen nutzen können. Da die UserGroup über kein Kapital verfügt, sollte der Raum optimaler weise kostenlos zur Verfügung stehen. Wir benötigen einen Beamer, ganz toll wären ein paar Getränke. Für ein Catering organisieren wir regelmäßig einen Sponsor, daran besteht also nicht unbedingt bedarf. Unsere Treffen sind üblicherweise von 25-35 Personen besucht. Als Standort kommen Düsseldorf oder das westliche Ruhrgebiet in Frage.

Bisher haben uns die CGI, der Flughafen Düsseldorf, DICOM oder z.B. Vodafone freundlicherweise ausgeholfen. Gerne hätten wir aber wieder eine feste „Homebase“.

Daher unsere Bitte an Euch:

Wer kann einen Raum sponsern oder kennt Möglichkeiten, einen entsprechenden Raum zu bekommen?

Bitte wendet Euch an info@sharepoint-rhein-ruhr.de oder stellt uns den Kontakt zu einem möglichen Sponsoren her.

Vielen Dank für Eure Mithilfe!

14. Treffen der SharePoint UserGroup Köln – SharePoint Advent

Hallo Liebe Mitglieder und Interessierte,

wir möchten Sie heute herzlich zum SharePoint Advent der SharePoint UserGroup Köln einladen. Wir treffen uns am 15. Dezember im Rheinauhafen in Köln.

Unser Programm:

„SharePoint Advent“

Deutschlandweit treffen sich UserGroups an diesem Tag. Ein buntes Vortragsprogramm rund um das Thema „Internet of Things, Industrie 4.0 und die neue Art des Arbeitens“ hat Michael Greth organisiert. Die Vorträge werden auf dem SharePointUserGroup Event in Berlin live gehalten und über Microsoft Channel 9 zu den Treffen der regionalen UserGroups übertragen.

Große Adventsverlosung, Keksbäcker Championship!

Noch nie hat sich Kekse backen so gelohnt. Wir haben von Office Dev Blog Team eine große Office Dev Swag Box bekommen, deren Inhalt wir im Laufe des Abends verlosen werden. Als Hauptpreis haben wir eine Jawbone JamBox Mini bekommen. Die Teilnahme ist denkbar einfach, jeder UserGroup Besucher, der eine Ladung selbst gebackener Kekse zum Treffen mitbringt, nimmt an der Verlosung des Hauptpreises teil. Alle weiteren Preise werden über die Lostrommel unter allen Besuchern verlost.

Hier unser Programm:

17:30 – WarmUp
18:00 – Vorträge
20:30 – Verlosung der Swag Box

Ein kurzer Überblick über die Sprecher:

Alexander Oelling – Sensorberg
Sensorberg möchte mit seiner Beacon-basierten Open Source Lösung den neuen Standard für Annäherungs-Software setzen und damit die Entwicklung technischer Werkzeuge und Lösungen vorantreiben. Durch die Möglichkeit des spezifischen Datenaustauschs über Apps und die Standortbestimmung von vernetzten Geräten in geschlossenen Räumen, steht die iBeacon-Technologie im direkten Zusammenhang mit dem Internet of Things. Was genau liefert Sensorberg für das Internet of Things? Was genau bedeutet Proximity based ambient intelligence für unsere Zukunft? Wie genau kam es zur Kooperation von Sensorberg und Microsoft und durch was zeichnet sie sich aus? Auf diese und mehr Fragen wird Alexander Oelling, Gründer und Geschäftsführer von Sensorberg in seinem Vortrag eingehen.

Christian Lang – Wunderlist
Schon seit der ersten Version läuft Wunderlist auf Windows. Allerdings hat sich die Rolle und Wichtigkeit des Windows-Clients im Laufe der Zeit und von Version zu Version verändert. Genauso hat sich auch das Design und die zugrundliegende Technologie ständig gewandelt. Christian wird uns mitnehmen in die Geschichte von Wunderlist für Windows und einen Einblick geben in die Herausforderungen bei der Entwicklung einer plattformübergreifenden App und der Arbeit in einem Design-getriebenen Team.

Paul Hopton – relayr.io
Paul ist ‎Chief Engineer des Berliner Startups relayr, das mit seiner Open-Sensor-Cloud-Plattform Entwicklern einen schnellen und einfachen Projektstart für drahtlose Anwendungen und Prototypen ermöglicht. Paul gibt einen Einblick in das Internet der Dinge und stellt das Sensorkit „Wunderbar“ vor. Es sieht aus wie eine Tafel Schokolade, beinhaltet aber verschiedene Sensoren, die unter anderem Temperatur, Feuchtigkeit oder Bewegung messen und über Bluetooth LE kommunizieren.

Christoph Buschbeck – Computacenter
Christoph ist Senior Consultant bei Computacenter und in seiner Rolle zu den Themen IoT und Industrie 4.0 unterwegs. Er wird aus der Sicht eines Microsoft Partners schildern, welche Auswirkungen Industrie 4.0 und IoT auf das traditionelle Office IT Systemhaus-Geschäft haben, wie sich Computacenter auf diesen Wandel eingestellt und welche ersten Projekte bereits umgesetzt wurden.

Über Ihre Teilnahme und interessante Diskussionen würden wir uns sehr freuen.

Hier noch einmal die Daten:

SharePoint UserGroup Köln

Termin: Dienstag, 15.12.2015 – 17:30 Uhr

Ort: ConVista Consulting AG, Im Zollhafen 15/17, 50678 Köln

Parken: Parkplätze stehen in der Tiefgarage im Rheinauhafen zur Verfügung, bitte in der Nähe des Aufgangs 3.04 parken.

Öffentliche Verkehrsmittel:
– U-Bahn Linie 16 ab Dom-Hbf bis Haltestelle Ubierring (ca. 15 Min.), Fußweg vom Ubierring bis zu ConVista ca. 10 Minuten
– U-Bahn Linie 15 ab Rudolfplatz bis Haltestelle Ubierring (ca. 11 Min.), Fußweg vom Ubierring bis zu ConVista ca. 10 Minuten
– Bus Linie 106 ab Heumarkt bis Haltestelle Rheinauhafen (ca. 7 Min), Fußweg vom Rheinauhafen bis zu ConVista ca. 2 Minuten

Anmeldung:
Um Anmeldung für diese Veranstaltung wird gebeten.
Bitte melden Sie sich zum Treffen der SharePoint UserGroup nur an, wenn Sie auch wirklich teilnehmen möchten.

Die Anmeldung kann erfolgen über:
eMail: info@sharepoint-rhein-ruhr.de oder ug-koeln@mysharepoint.de

XING: https://www.xing.com/net/prib6b3dax/spugcgn

Ansprechpartner:
Andrej Doms (ConVista Consulting)
Tel. 0178 888 6018

Neben den Vorträgen gibt es bei einem Snack hoffentlich reichlich Gelegenheit für Sie, mit den anwesenden Experten ins Gespräch zu kommen.
Wir freuen uns, Sie alle am 15 Dezember begrüßen zu dürfen.

Mit freundlichen Grüßen

Andrej und Henning

Recap: European SharePoint Conference 2015 in Stockholm

Letzte Woche war es nun endlich so weit – die European SharePoint Conference 2015 (ESPC) fand in Stockholm statt.

Das Line-Up war schon recht beeindruckend: mehr als 1.500 Teilnehmer aus über 50 Ländern konnten sich in über 100 Sessions in acht parallelen Tracks drei Tage lang um alle möglichen Aspekte rund um SharePoint und Office365 austauschen.

Generell waren sehr viele Entwickler-Orientierte Vorträge vorhanden, insbesondere im Zusammenhang mit Office 365 (Unified API) und Azure Active Directory. Ich denke, dass sind die Building-Blocks der Zukunft um Lösungen auf/um/für Office 365 zu entwerfen.

Ein Highlight war am zweiten Tag die Gala auf der unter anderem die Top 25 European Office 365 Influencer geehrt wurden. Diese Gala fand in der City Hall von Stockholm statt, in der sonst auch der Nobel-Preis verliehen wird – ein durchaus beeindruckendes Ambiente für eine solche Veranstaltung!

Keynote

Die ESPC wurde durch eine Keynote von Jeff Teper, Seth Patton und Bill Baer eröffnet. Dabei wurden die Herausforderungen an moderne IT Systeme klar herausgestellt:

  • weiter voranschreitende Digitalisierung unseres Arbeitsalltags
  • stärker Vernetzung
  • immer größere Mengen an Daten
  • sinnvoll und übersichtlich Aufbereitung von Daten

Dazu wurden die aktuellen Entwicklungen in Office 365, OneDrive (for Business) und SharePoint (2016) vorgestellt.

In einer weiteren Keynote zeigte Geoff Evelyn, dass Fortschritt nur dann erreicht werden kann, wenn man sich die Zeit nimmt um auch einen Blick in die Vergangenheit zu werden, das erreichte zu reflektieren und daraus neue Ausrichtungen für die Zukunft zu treffen.

SharePoint 2016

In diesem Zusammenhang wurde die SharePoint 2016 Beta 2 angekündigt, dessen Nachricht auch vom Office Team auf dem Blog veröffentlicht wurde. Diese Beta soll bereits 99% der finalen Funktionen enthalten. Was sich alles in der Beta 2 getan hat kann im Blog nachgelesen werden.

Außer der Ankündigung der Beta 2 von SharePoint 2016 waren keine großen Ankündigungen zu vernehmen. Stattdessen werden wir insbesondere in Office 365 weiterhin immer wieder kleine Veränderungen sehen. Features werden nicht mehr über Monate gesammelt und dann in einem “Big Bang” veröffentlicht, sondern Features werden veröffentlicht wenn sie “bereit” sind.

Yammer

Was in den drei Tagen ESPC aufgefallen ist: während Yammer auf der ESPC 2014 in Barcelona in nahezu jedem Vortrag eine Rolle spielte, wurde Yammer dieses Jahr bis auf wenige Ausnahmen (oder Ausrutscher?) nicht genannt. Hier hätte ich erwartet öfter Office Groups zu hören – aber auch das ist eher im Hintergrund geblieben. Dennoch denke ich, dass wir uns von dem Brand Yammer irgendwann verabschieden müssen. Die Funktionen werden dann in anderen Produkten aufgehen – vielleicht in den Groups.

Workflow Special

Mein persönliches Highlight war natürlich das Workflow Tool Special – wo ich für Nintex angetreten bin um zusammen mit anderen Kollegen exemplarisch zu zeigen wie man einen typischen Geschäftsprozess mit SharePoint Brodmitteln, K2, Nintex und WebCon umsetzen kann. Wer nicht dabei sein konnte: am 3.12. gibt es noch einmal die Gelegenheit das Workflow Special auf den SharePoint Days in München zu besuchen.

Zum Thema European SharePoint Conference gab es unter dem Hashtag #ESPC15 viele interessante Tweets. Ein paar Top Tweets haben wir gesammelt.

Gulp: Wie Coffeescript zu JavaScript wird

Nachdem ja nun einfache Dinge mit gulp automatisiert werden können, kann man sich ja so langsam mal an weitere Aufgaben begeben.

Coffeescript kann bei der Arbeit mit JavaScript ja schon mal ganz hilfreich sein, nimmt es einem doch manch lästige Zeremonie von JavaScript ab und fügt gleich noch Best-Practices hinzu. Wenn man nicht immer diese .coffee-Datei nach JavaScript übersetzen (compilieren) müsste.

Mit gulp kann man das sehr gut automatisieren.

npm install gulp-coffee --save-dev

sorgt dafür, dass ich das notwendige gulp-coffee Package habe. Nun also noch eine entsprechen Task im gulpfile.js einfügen.

gulp.task('coffee', function () {
    return gulp.src('app/*.coffee')
        .pipe(coffee())
        .pipe(gulp.dest('app'));
})

In diesem Fall werden also alle von Coffee-Script erzeugten Dateien ebenfalls in dem Verzeichnis app gespeichert.

Insgesamt sieht das Build Script nun so aus:

var gulp = require('gulp'),
    coffee = require('gulp-coffee'),
    uglify = require('gulp-uglify');

gulp.task('html', function () {
    return gulp.src('app/*.html')
        .pipe(gulp.dest('dist'));
})

gulp.task('js', ['coffee'], function () {
    return gulp.src('app/*.js')
        .pipe(uglify())
        .pipe(gulp.dest('dist'));
})

gulp.task('coffee', function () {
    return gulp.src('app/*.coffee')
        .pipe(coffee())
        .pipe(gulp.dest('app'));
})

gulp.task('default', ['html', 'js'], function () {
})

Die Task „js“ ist dabei Abhängig von der Coffee-Task. In der Konsole sieht die Ausführung dann so aus:

D:\projects\html_app>gulp
[14:43:24] Using gulpfile D:\projects\html_app\gulpfile.js
[14:43:24] Starting 'html'...
[14:43:24] Starting 'coffee'...
[14:43:24] Finished 'coffee' after 34 ms
[14:43:24] Starting 'js'...
[14:43:24] Finished 'html' after 47 ms
[14:43:24] Finished 'js' after 43 ms
[14:43:24] Starting 'default'...
[14:43:24] Finished 'default' after 13 μs

Gerade beim Umgang mit Coffeescript ist das Debugging des JavaScript Codes z.B. in der Konsole der Browsers etwas umständlich, denn hier wird ja nicht der eigentliche Coffeescript Code debuged, sondern der von Coffeescript erzeugte JavaScript Code. Moderne Browser können aber mit Hilfe von sogenannte SourceMaps auch den ursprünglichen Quellcode anzeigen und debuggen – hier also Coffeescript. Und auch dabei kann gulp helfen.

Dazu erweitern wir die Task coffee entsprechend.

gulp.task('coffee', function () {
    return gulp.src('app/*.coffee')
        .pipe(sourceMaps.init())
        .pipe(coffee())
        .pipe(sourceMaps.write('../dist'))
        .pipe(gulp.dest('app'));
})

Nun wird für jede Coffeescript-Datei eine entsprechende SourceMap-Datei in dem Verzeichnis dist erstellt.

Gulp: JavaScript-Buildsystem

Nachdem ich ja im letzten Post beschrieben habe, wie man mit Hilfe von node und bower sich JavaScript Bibliotheken für seine Anwendung einbinden kann, will ich nun noch etwas mehr zeigen, was einem Node so zu bieten hat.

Typische Aufgabe während der Entwicklung ist ja, dass die HTML und JavaScript-Dateien vom lokalen Rechner auf einen Web-Server kopiert werden müssen. Dazu müssen zunächst alle Dateien, die auf den Server kopiert werden müssen identifiziert und dann kopiert werden.

In reinen .Net Projekten würde ich für das Deployment vielleicht zu MSBuild greifen – das hilft mir aber in meinem Fall nicht so wirklich weiter.

Mit gulp gibt es ein Buildsystem als Node-Module in JavaScript.

npm install gulp -g

installiert gulp und stellt es global zur Verfügung. Nun kann ich in meinem Projekt ein gulpfile.js erstellen.

Ein einfaches Buildfile kann z.B. so aussehen:

var gulp = require('gulp');
gulp.task('copy', function(){
    return gulp.src('app/*.html')
        .pipe(gulp.dest('dist/'));
})

Dabei werden alle *.html Dateien aus dem Verzeichnis app in das Verzeichnis dist kopiert. Existiert das Verzeichnis dist noch nicht, wird es zuvor erstellt. Dieses Beispiel ist natürlich sehr einfach. Mittels gulp copy kann nun die neue copy-Task von einer Konsole ausgeführt werden:

D:\projects\html_app>gulp copy
[14:25:01] Using gulpfile D:\projects\html_app\gulpfile.js
[14:25:01] Starting 'copy'...
[14:25:01] Finished 'copy' after 17 ms

Ein etwas fortgeschritteneres Buildfile könnte wie folgt aussehen:

var gulp = require('gulp'),
    uglify = require('gulp-uglify');

gulp.task('html', function () {
    return gulp.src('app/*.html')
        .pipe(gulp.dest('dist'));
})

gulp.task('js', function () {
    return gulp.src('app/*.js')
        .pipe(uglify())
        .pipe(gulp.dest('dist'));
})

gulp.task('default', ['html', 'js'], function () {
})

Die Task default wird dabei automatisch aufgerufen, wenn man gulp von der Kommandozeile startet. Als zweiter Parameter der Task werden die abhängigen Tasks angegeben. Diese werden also automatisch zuvor ausgeführt.

D:\projects\html_app>gulp
[14:26:15] Using gulpfile D:\projects\html_app\gulpfile.js
[14:26:15] Starting 'html'...
[14:26:15] Starting 'js'...
[14:26:15] Finished 'js' after 39 ms
[14:26:15] Finished 'html' after 49 ms
[14:26:15] Starting 'default'...
[14:26:15] Finished 'default' after 12 μs

In diesem Fall werden alle *.js Datei aus dem Verzeichnis app mit dem uglify-Package minimiert und dann nach dist geschrieben. Somit kann man also in dem app-Verzeichnis die Anwendung entwickeln und in dist erhält man immer alle Dateien, die man auf den Server kopieren muss.

Frontend-Entwicklung mit Node und bower

Immer häufiger greife ich für Anpassungen nicht mehr zu Visual Studio, sondern zu „einfachen“ Editoren, mit denen ich „mal eben“ ein paar Anpassungen in JavaScript machen – oder doch die eine oder Anwendung komplett in HTML & JavaScript schreibe.

Auch wenn man alles nur mit Notepad machen kann, so ist das doch irgendwie auf die Dauer etwas lästig. Immer wieder man man JavaScript Dateien auf den Server kopieren oder man muss Coffee-Script Dateien auf der Kommandozeile durch den entsprechenden Compiler jagen und dann mit den anderen Scripten zum Server kopieren.

Mit Notepad++ kann man das schon etwas verbessern, indem man Plugins wie NppExec verwendet. Wie man mit NppExec Dateien deployen kann, habe ich ja in einem früheren Post schon mal beschrieben. Aber irgendwann hat man auch dort Grenzen erreicht.

Lange habe ich mich gefragt, ob ich Node wirklich brauche. Ich finde JavaScript toll, aber muss ich das mit Node auch auf dem Server ausführen? Inzwischen habe ich erkannt: Node ist doch irgendwie total cool, gerade um HTML & JavaScript basierte Lösungen zu erstellen.

Im Folgenden will ich einmal einen Eindruck geben, wie so ein Projekt exemplarisch aussehen kann.

Zunächst muss man natürlich Node installiert haben. Das geht am besten via Chocolatey. Hat man Chocolatey installiert kann man mit choco install nodejs Node installieren.

Für unsere neues Projekt muss als erstes ein Arbeitsverzeichnis erstellt werden und das für die Arbeit mit Node vorbereitet werden

mkdir html_app
cd html_app
git init & npm init

Als Ergebnis erhält man eine package.json Datei.

{ 
    "name": "html_app", 
    "version": "1.0.0", 
    "description": "", 
    "main": "index.html", 
    "author": "Henning Eiben", 
} 

Diese Datei beschreibt das aktuelle Projekt/Paket und dient auch dazu um alle verwendeten Pakete zu speichern. Nun kann man mit npm sich Node Pakete installieren. Als erstes installiere ich bower. Das ist ein Paket um JavaScript-Bibliotheken für Anwendungen zu verwalten. Da ich Bower häufiger gebrauche installiere ich das gleich global.

npm install -g bower 

Nun kann ich mir mit Bower ein paar Bibliotheken für meine JavaScript-Anwendung laden. In diesem Fall will ich Bootstrap und Knockout verwenden. Zuvor initialisiere ich mit bower init noch eine bower.json. Sie dient ähnlich wie die packages.json dazu um alle verwendeten Pakate zu speichern. Mit

bower install bootstrap knockout --save 

Kann ich nun die beiden Bibliiotheken installieren. Durch das --save werden die Bibliotheken in der bower.json als Abhängigkeit gespeichert. Die bower.json sieht dann so aus:

{ 
    "name": "html_app", 
    "version": "0.0.0", 
    "authors": [ 
        "Henning Eiben <eiben@busitec.de>" 
    ], 
    "ignore": [ 
        "**/.*", 
        "node_modules", 
        "bower_components", 
        "test", 
        "tests" 
    ], 
    "dependencies": { 
        "bootstrap": "~3.3.5", 
        "knockout": "~3.3.0" 
    } 
} 

Dabei wurde neben bootstrap und knockout auch jquery in der Version 2.1.4 installiert, weil das von Bootstrap benötigt wird – ohne dass ich mich darum kümmern musste.

D:\projects\html_app>bower install bootstrap knockout --save 
bower cached git://github.com/twbs/bootstrap.git#3.3.5 
bower validate 3.3.5 against git://github.com/twbs/bootstrap.git#* 
bower cached git://github.com/SteveSanderson/knockout.git#3.3.0 
bower validate 3.3.0 against git://github.com/SteveSanderson/knockout.git#* 
bower cached git://github.com/jquery/jquery.git#2.1.4 
bower validate 2.1.4 against git://github.com/jquery/jquery.git#>= 1.9.1 
bower install knockout#3.3.0 
bower install bootstrap#3.3.5 
bower install jquery#2.1.4 
knockout#3.3.0 bower_components\knockout 
bootstrap#3.3.5 bower_components\bootstrap 
└── jquery#2.1.4 
jquery#2.1.4 bower_components\jquery 

Nun kann mit dem Editor der Wahl begonnen werden die Anwendung zu erstellen. Die Bibliotheken, die über bower installiert wurden liegen dabei in dem Verzeichnis bower_components, die Node-Pakete liegen in node_modules.

Wenn man nun die Anwendung z.B. in git einchecked oder jemand anderem zur Verfügung stellt, dann muss man diese beiden Verzeichnissen nicht mit weitergeben.

Stattdessen reicht es mit npm install & bower install einfach die in der packages.json und bower.json gespeicherten Pakete und Bibliotheken wieder herzustellen.

Debugging von Nintex Workflows

Das Debuggen von Workflows ist immer wieder eine Herausforderung, insbesondere im Umfeld von SharePoint. Die hauseigenen Workflows, die man mit dem SharePoint-Designer erstellen kann, lassen Funktionen für das Debugging nahezu ganz vermissen. Man kann hier ausschließlich in den Workflow-Verlauf Nachrichten schreiben um nachvollziehen zu können, welchen Weg ein Workflow während der Ausführung gegangen ist. Das ist aus mehreren Gründen “problematisch”:

Man muss sehr viele Nachrichten in den Verlauf schreiben, typischerweise gibt man dort den Wert von Variablen aus und beschreibt den Fortschritt. Diese Workflow-Schritte haben keine funktionale Bedeutung für den eigentlichen Prozess, kosten aber dennoch “Zeit”. Zudem dienen diese Schritte ja auch nicht dem eigentlichen Workflow und “verstopfen” somit den eigentlichen Prozess.

Als Programmierer ist man das “mehr” gewohnt. Wenn man nachvollziehen will warum sich ein Programm auf die eine oder andere Art & Weise verhält, dann “debuggt” man das Programm einfach. Währenddessen kann man sich den Inhalt von Variablen ansehen und somit nachvollziehen welchen Weg ein Programm genommen hat.

Bei Nintex geht das ebenfalls. Neben der visuellen Darstellung des Workflows, der den durchlaufenen Pfad farblich kennzeichnet (grün) und die aktuell ausgeführte Aktion hervorhebt (gelb) gibt es das sogenannte Verbose Logging.

Workflow-Verlauf

Beim Verbose Logging werden bei jeder Aktion die Werte von allen Variablen und den wichtigsten Workflow-Daten zu beginn der Aktion und am Ende der Aktion aufgezeichnet. Wenn man sich anschließend den Ablauf des Workflows ansieht kann man mit einem Klick auf eine Aktion sich all dieser Vorher/Nachher Werte anzeigen lassen. Änderungen, die während der Aktion an Werte vorgenommen wurden werden dabei ebenfalls farblich hervorgehoben.

Verbose Logging

Dabei ist allerdings zu beachten, dass diese Transparenz im Workflow durchaus ihren Preis hat. Das Aufzeichnen dieser ganzen Werte kostet Zeit und all diese Werte müssen in der Nintex-Datenbank gespeichert werden. Laufen sehr viele Workflow-Instanzen parallel, dann kann die Größe der Datenbank auch durchaus schnell anwachsen.

Um das Verbose Logging zu nutzen muss das in den Workflow-Einstellung des jeweiligen Workflows aktiviert werden. Somit werden nicht automatisch für alle Workflows diese Daten gesammelt, sondern man kann das pro Workflow individuell aktivieren. Zudem muss die Funktion auch noch global in der Zentraladministration einmalig aktiviert werden, zusammen mit der Angabe, wie lange die detaillierten Informationen gespeichert werden sollen.

Workflow-Einstellungen

Einstellung zum Verbose-Logging in der Zentraladministration

Wenn bspw. bei einem Workflow das Verbose Logging aktiv ist um den Ablauf auf einem Testsystem genau nachzuverfolgen und dieser Workflow anschließend ohne Anpassung auf ein Produktivsystem transportiert wird, dann muss das nicht zwangsläufig zu Leistungseinbußen führen, wenn auf dem Produktivsystem in der Zentraladministration die Funktion für das Verbose Logging nicht aktiv ist.

The Top 25 European Office365 Influencers…alle Jahre wieder…

Es ist wieder soweit. Die ESPC wirft Ihre Schatten voraus und im Rahmen der Veranstaltung werden, unterstützt durch harmon.ie, auch wieder die Top 25 European Office365 Influencer gewählt. Die Vorschläge sind eingereicht und es ist eine schöne Liste an Pros, quer durch Europa enstanden, die nun auf Eure Stimmen wartet. Natürlich sind auch wieder Kollegen aus der UserGroup und der deutschen Community dabei, die sich sicherlich über Eure Stimmen freuen würden.

Now go and Vote! 🙂 -> http://bit.ly/1WA4Lgb

Vielen Dank im Namen aller Pros auf der Nominiertenliste, die sich alle durch ihre unermüdliche Arbeit für die Community einen Preis und ein noch größeres Dankeschön aus der Community verdient haben.