K2 OData Broker und SAP Gateway Services

In diesem Post schauen wir uns an, wie man mit K2 eine formularbasierte Anwendung bauen kann, die eine SAP OData Schnittstelle als Datenquelle nutzt. Wenn Unternehmen nicht mehr die klassischen RFC/BAPI Features von SAP ERP nutzen möchten, lautet die Anforderung häufig, die SAP Gateway Services zu nutzen. Dies macht Sinn, denn durch die Gateway Services hat die IT einen zusätzlichen Layer um Zugriff auf die kritischen Daten aus SAP zu kontrollieren.

Kombiniert man nun den K2 OData Broker und Smartforms, kann man mit wenigen Clicks eine reine Formularanwendung bauen und diese bei Bedarf natürlich jeder Zeit auch mit Workflowfunktionen anreichen!

First things first: Wie bekommen wir Zugriff auf SAP Daten?

Neben der, etwas komplizierten, Option ein eigenes SAP System zu installieren, gibt es glücklicherweise ein Online Service Repository von SAP. Zu finden hier: http://scn.sap.com/docs/DOC-31221

Dort finden sich viele Beispieldienste. Ich habe mich für das Flight Example entschieden und würde nun gerne basierend auf der Servicestruktur eine Anwendung bauen.

Wie bauen wir die Brücke zwischen K2 und SAP auf? Mit dem generischen OData Broker (generisch soll hier bedeuten, dass der Broker nicht speziell für SAP implementiert wurde):

broker

Ein Blick auf die ServiceInstance offenbart auch welche Objekte erstellt und vom Service unterstützt werden.

serviceinstance

Folgende Use Cases erlaubt der Service sofort:

– Airline Details laden
– Flugdaten der Airline laden
– Details für einen bestimmten Flug anzeigen
– Verfügbarkeit für einen bestimmten Flug prüfen

Wie immer macht es ab diesem Moment mit K2 keinen Unterschied mehr, woher die Daten eigentlich kommen – man kann sofort mit der Formulargestaltung beginnen oder die Daten in Workflows nutzen. Für diese Lösung beschränken sich die Formulare und Ansichten auf folgende Artefakte:

artefacts

Einen Workflow gibt es also erstmal nicht. Die Laufzeit kann dann exemplarisch so aussehen:

Airline suchen

searchcarrier

 

Airline Details
airlinedetails

Flüge der Airline anzeigen
airlineflights

Flugdetails laden
flightdetailsFlugverfügbarkeit prüfen
flightcheck

 

Aufgrund der Wiederverwendbarkeit von K2 Komponenten, kann ich jetzt das gleiche Element zum Beispiel auch für SharePoint Formulare nutzen! Das könnte dann so aussehen:

sp1

sp2

Hierarchische Datenstrukturen & K2 Smartforms

Mit dem neuen Smartforms Control Pack (Neuerungen für 4.6.9 hier) gibt es u.a. ein TreeView Control. Damit lassen sich Datenstrukturen als Baum darstellen – grundsätzlich spielt es dabei (wie immer bei K2) keine Rolle, ob diese Daten in einer SQL DB, SharePoint Liste oder sonstigen Quellen vorgehalten werden.

In einem kleinen Beispiel nutze ich eine SharePoint Bibliothek zur Dokumentenablage und ergänze diese Dokumente mit einer Kategorie (unten teilweise “QM Folder” genannt). Die Kategorie selbst dient als Container für verschiedene Informationen, wie zum Beispiel:

– wer muss in dieser Kategorie neue Dokumente prüfen und genehmigen

– wer muss informiert werden, falls sich an den Dokumenteninnerhalb dieser Kategorie sich etwas ändert

Falls dann eine neue Freigabe angestoßen wird oder Leser über neue Dokumente informiert werden müssen, greift ein K2 Workflow diese Informationen ab und verteilt entsprechend die Aufgaben. Aufgrund der entkoppelten Architektur von Views, Daten und Workflows ist es zum Beispiel denkbar, eine Art Dashboard zu bauen.

treeview1

 

Die Datenbasis für die Hierarchie ist ein einfaches K2 Smartbox Object mit einem “Fremdschlüssel” auf sich selbst, womit die übergeordnete Kategorie definiert wird. Den Rest erledigt das TreeView Control automatisch.

treeviewsmo

Um das Objekt dann an das TreeView Control zu binden, muss man letztlich nur auf die Datenquelle in den Eigenschaften klicken und nach ein paar Klicks sieht das Ergebnis dann so aus:

treeviewconfig

Wer genau hinschaut, erkennt dass an den Knoten auch ein Icon platziert werden kann. Wie konfiguriert man das Icon-Mapping? Glücklicherweise ist dies auch ohne größeren Aufwand machbar, denn dafür gibt es “out of the box” ein Smartobject (theoretisch kann man auch ein eigenes Objekt dafür erstellen)

treeviewicon

Über die IconID an der Kategorie findet dann zur Laufzeit das Mapping statt. Man sieht oben bei den Category Details auch dass diese Eigenschaft via Dropdown Control gesetzt werden kann.

Wie kann man neue, eigene Icons ergänzen oder verändern? Zum Beispiel über eine ListView.

treeviewiconlistview

Diese hierarchischen Daten lassen sich natürlich auch an alle anderen Controls binden. Zum Beispiel an das K2 AutoComplete Control auf einem SharePoint Formular.

treeviewautocomplete

Alles wie immer #nocode ! 😉

K2 Smartforms wurden ergänzt um: for-each!

Ein häufig gefordertes Feature wurde mit dem letzten Upgrade (Neuerungen für 4.6.9 hier) integriert: For-Each Schleifen auf UI Ebene. Schaut man sich die Integration genauer an, wird auch schnell klar warum es hierbei etwas länger gedauert hat bis das Feature im Produkt ankam.

Mit For-Each kann man nun auf ListViews und Editable-ListViews über alle, ausgewählte oder Objekte in einem bestimmten Zustand iterieren und pro Objekt beliebige Operationen ausführen. Im folgenden Beispiel wird eine Liste von Personen verwaltet. Diese Personen haben eine Eigenschaft “Status” – diesen Status können wir nun mit einem Klick für mehrere Personen aktualisieren. Wie man sieht, ist die for-each Funktion direkt im Rules Designer integriert. D.h. man kann nicht nur eine SmartObject Methode ausführen, sondern die komplette Bandbreite an Regeln innerhalb der Schleife nutzen (z.B. Freigabe WF starten, Email versenden etc.)

foreachinitview

Wie erwartet kann ich mit der Maus oder mit der Tastatur nun eine oder mehrere Personen markieren. In diesem Fall Podolski und Beckenbauer.

foreachselectonview

Der Button “Set Confirmed” ist so konfiguriert dass er für alle markierten Personen den Status auf “Confirmed” ändert. Das funktioniert so:

foreachloops

foreachupdateselected

Man muss die Schleife nicht zwangsläufig auf markierte Elemente anwenden, es gibt verschiedene Standardfilter.

foreachstates

Ein Klick auf “Set Confirmed” hat dann für die Elemente Podolski und Beckenbauer folgenden Effekt:

foreachresult

 

Mittels “Reset All” werden alle Personen wieder auf “Invited” gesetzt. foreachresetallresult

Sehr einfach! Hier bleibt zu erwähnen dass diese Funktion aufgrund der Abstraktion durch den SmartObject Layer natürlich für alle unterstützten Backendsysteme gleichermaßen funktioniert! 🙂

K2 4.6.9 veröffentlicht – neue Funktionen im Überblick!

Heute ist es wieder so weit, es gibt ein neues K2 Release 🙂 Dieses Mal sind besonders viele Änderungen enthalten, was diesen Beitrag auf jeden Fall rechtfertigt. Vielen Neuerungen habe ich bereits einzelne Beiträge verlinkt, siehe unten!

Generelle Funktionen:
– IE 11 Support

Blackpearl Server:
– Konnektivität gegen weitere Backendsysteme out of the box: Microsoft Azure AD, SQL Azure, CRM 2015
– Comments & Attachments SmartObjects und API: Ab 4.6.9 gibt es nun Standardobjekte um jeden Workflow mit Kommentaren und Anhängen auszustatten.  Wenn die Standardansichten nicht gefallen, kann man eigene Ansichten ergänzen.
– Neue SmartObject Datentypen: Date und Time können getrennt behandelt werden

Smartforms:
– Default Value Einstellung für Controls mit Datenbindung
– For-Each Regel für Elemente auf Listviews (siehe Beispiel Use Case)
– Kommentarfunktion für Regeldesigner
– Key/Value Einstellung für statische Werte bei Controls mit Datenbindung
– Überarbeiteter Regeldesigner
– Mehrsprachigkeit: Ab sofort sind Language Packs verfügbar!
– Formulare auf Mobile App verfügbar machen (offline forms, momentan für iOS)
– Formulare für anonymen Zugriff veröffentlichen

Smartforms Control Pack:
– Tree View Control (siehe Beispiel Use Case)
– Timer Control
– Auto Complete Control (siehe Beispiel Use Case)

K2 For SharePoint (App für SP2013):
– Create / Deploy Package im Browser
– Workflow Wizards: User and Group Permissions, Azure AD Management, Document Set Support

Kein FoSL – was tun mit SharePoint Formularen?

Vor nicht allzu langer Zeit hat Microsoft das Thema FoSL beendet. Nachzuschlagen gibt es das offiziell auf der Roadmap unter http://roadmap.office.com/

FoSL

Viele Unternehmen fragen sich nun wie sie Formulare in der SharePoint Landschaft gestalten können, auch unterstützt durch das Abkündigen von InfoPath. Von Microsoft selbst gibt es momentan noch keine offizielle Aussage wie die hauseigene Alternative zu InfoPath und FoSL aussehen wird, allerdings wurde bestätigt dass für die SharePoint 2016 Version KEINE Änderungen an der UI Design Experience geplant sind. Das bedeutet zwangsläufig dass es mit der Alternative noch eine Weile dauern wird.

Selbstverständlich gibt es heute schon verschiedene Anbieter am Markt die als Alternative geeignet sind. Je nach Anforderungsprofil sind die Optionen mal mehr, mal weniger relevant. Wie immer, oder? 🙂

Für welche Formulartechnologie man sich letztlich entscheidet, hängt von Details ab. Welche Anforderungen können mit K2 Smartforms bedient werden?

Einfache Formular Anforderungen:

  • No-Code SharePoint Formulardesign
    • für Lösungen die 100%ig auf SharePoint basieren
  • Browserbasiertes Formulardesign
  • Optionale Integration mit Workflow Engine
    • für DB Anwendungen ohne Workflow

Fortgeschrittene Formular Anforderungen:

  • Master / Detail
    • Darstellung Relationaler Daten
  • Anbindung an heterogene Datenquellen
    • Zugriff über SharePoint Site Collections, Web Applications, Farms
    • externe Systeme (CRM, SAP, SQL etc.)
  • Cloudfähigkeit
  • Darstellung hierarchischer Datenstrukturen
  • Tabbed Browsing (Reiter)
  • Auch außerhalb von SharePoint funktionsfähig
    • für Lösungen die SP nicht nutzen
    • für Lösungen die SP als Datenquelle nutzen
  • Wiederverwendbarkeit von UI Komponenten
    • lösungsübergreifend

Ein Thema das sehr häufig unterschätzt wird, ist die Komplexität von Formularen, insbesondere wenn es um die Darstellung und Integration von Daten verschiedenster Systeme geht. Hierzu müssen oftmals eigene Frameworks entwickelt werden, gerade wenn man modernen Ansprüchen wie Generik und Wiederverwendbarkeit gerecht werden will / muss. In Gesprächen mit Kunden ergeben sich oftmals folgende Gegebenheiten:

landscape

IT wird seit Jahrzehnten “betrieben” und somit ist es nur logisch dass es historisch gewachsene Landschaften mit einer Vielzahl von Systemen gibt. Diese Systeme funktionieren auch und sind nicht zu ersetzen, es besteht ggf. sogar eine Abhängigkeit. Was in den vergangenen Jahren versucht wird, ist diese Systeme unterstützend zu den eigentlichen Kernfunktionen miteinander zu verbinden. Oftmals gibt es eine strategische Entscheidung SharePoint als führendes System zu diesem Zwecke zu nutzen. Das bedeutet man steht plötzlich vor der Herausforderung echte Schwergewichte wie SAP, Microsoft CRM, Salesforce oder andere “custom” Applications auf SQL- oder Oracle-Basis in SharePoint Formularen anzubinden. Für K2 sind die klassische Aufhänger, bei denen die SmartObject Technologie voll zur Geltung kommt.

Wir haben zahlreiche Beispiele hierfür im Portfolie! Wer Interesse an einer Demo hat, kann sich direkt via Email melden: markus.alt@k2.com

In Anlehnung an die obenen beschriebenen Anforderungen liefere ich noch den ein oder anderen Screenshot aus unseren Demos nach 🙂

spform

spform1

onboarding onboarding1

 

Weiterhin ist es möglich K2 Smartforms auch als Alternative außerhalb von SharePoint zu nutzen!

treeview1