Heute möchte ich mal meine Erfahren mit K2 Blackpearl und den K2 SmartForms mit euch teilen – ohne großartig auf technische Details einzugehen.
Vor gut einem Jahr haben wir die Plattform bei uns in einer klassischen „On Premises“ Architektur installiert.
Natürlich haben wir zu Beginn eine klassische Schulung erhalten und die Online Tutorials durchgearbeitet. An dieser Stelle kann ich schon mal die Tutorials loben. Hier hat sich K2 wirklich Mühe gegeben. Schritt für Schritt wird durch die Tutorials geführt – beinahe jeder Mausklick ist dokumentiert und z.T. mit Bildern illustriert.
Da ich selbst mit sogenannten „Low Code“ Plattformen bisher wenig Erfahrungen gemacht hatte, musste ich gerade zu Beginn doch etwas umdenken.
SmartForms
Gerade wenn es um das Designen von Formularen geht, vermisst man am Anfang recht schnell die Freiheit, die ein Visual Studio mit sich bringt. Trotzdem konnte ich mich relativ schnell an den SmartForms Designer gewöhnen. Das liegt sicherlich auch daran, dass sich meine Denkmuster mit dem Aufbau und Strukturierungen innerhalb von K2 sehr ähneln. Als ich aber immer wieder an Punkte kam, an denen ich nicht verstehen konnte warum nun gerade dies oder jenes nicht funktionierte, machte sich ab zu etwas Frust breit. Allerdings lernte ich mit jeder Anforderung, mit jedem Problemchen dazu und kam schnell zur Erkenntnis, dass es eigentlich fast immer eine Lösung gibt. Dieser Erfahrungsschatz wuchs mit jeder View, mit jeder Form, mit jeder Regel – und wächst natürlich noch immer. Mit ein wenig JScript und literalen DataLabels lässt sich wirklich viel machen.
UND AUßERDEM: Man kann ja noch immer zu Visual Studio greifen
Inzwischen bin ich mehr und mehr begeistert, mit wie wenig Aufwand selbst komplexe Konstrukte zusammengeklickt werden können. Jedoch kann man auch schnell den Überblick im Dschungel der Abhängigkeiten von Views, Forms und Regeln verlieren. Hier ist extreme Disziplin bei der Benennung der Artefakte erforderlich – ansonsten wird es wirklich schnell ekelig.
Eine Sache stört mich aber doch. Dabei handelt es sich um die nicht vorhandene Möglichkeit Formulare oder Kategorien auf einfache Art und Weise vor unberechtigtem Zugriff zu schützen. Hier habe ich eine eigene Lösung entwickelt (einen http-Handler), die uns genau diese Möglichkeit bietet.
Allerdings ist auch dieses Problem aber Version K2 Five kein Problem mehr – an dieser Stelle hat K2 nachgebessert.
Einen weiteren kleinen Kritikpunkt sehe ich in der Mehrsprachigkeit. Damit meine ich nicht den Designer selbst, sondern die Möglichkeit, seine K2-Applications mehrsprachig zu gestalten. Hierzu muss auf eine Communitylösung zurückgegriffen werden, die aus meiner Sicht noch den ein oder anderen Wunsch offenlässt.
SmartObjects
Den Punkt Datenintegration mit den SmartObjects fand ich von der ersten Sekunde an überragend! Ich habe selten eine derart durchdachte und praxistaugliche Abstrahierung unterschiedlicher Datenzugriffe gesehen. Da ist besonders hervorzuheben, dass es völlig egal ist, an welcher Stelle in K2 auf Daten zurückgegriffen wird. Es funktioniert IMMER auf die gleiche Art und Weise. Und das unabhängig von der Art der Datenquelle – ob Webservice, Datenbanktabellen, Views, Stored Procedures, Assemblies, Textdateien … Der Zugriff auf die Daten und/oder Funktionen erfolgt über die SmartObjects IMMER genau gleich. Zudem ist es möglich die SmartObjects zu sogenannten CompositeSmartObjects zusammenzubauen. Dabei handelt es sich einfach ausgedrückt um eine Art Join unterschiedlicher SmartObjects (beispielsweise könnten so Daten aus einer Datenbank mit Daten aus einem Webservice „verheiratet“ werden – für den Entwickler (LowCoder) kann über ein einziges SmartObject auf die Daten zugegriffen werden).
Die eigentliche Kommunikation zwischen Datenquelle und SmartObjects erfolgt über sogenannte ServiceBroker. Hier bringt K2 im Standard schon eine ganze Menge mit (z.B. für ActiveDirectory, Webservices, SQL-Server usw.) Sollte man auf ein absolutes Unikat zugreifen müssen, für den es noch keinen Servicebroker gibt, so kann ein eigener Servicebroker geschrieben werden. Auch das habe ich bereits hinter mir. Mit den Beispielen auf den K2-Seiten war das kein größeres Problem.
Ein riesen Pluspunkt stellt außerdem die Wiederverwendbarkeit dar! Sowohl Forms und Views als auch SmartObjects lassen sich auf einfachste Art wiederverwenden. Hat man z.B. ein SmartObject für den Zugriff auf den Artikelstamm erstellt, so kann dieses natürlich immer wieder verwenden – egal in welcher Applikation – werden Artikeldaten benötigt kann immer das gleiche SmartObject verwendet werden. Ähnlich verhält es sich mit Views. Um beim Beispiel zu bleiben: Hat man für eine Anwendung z.B. eine View für die Detailansicht eines Artikels erstellt, so kann diese View in jeder folgenden, neuen Anwendung verwendet werden.
Workflows
Was die Workflows betrifft, so hatten wir bei der Auswahl der Plattform einen großen Fokus auf der Fehlerbehandlung bei Prozessen. D.h. es war uns wichtig in laufende Prozesse korrigierend eingreifen zu können, wenn eine Fehler aufgetreten ist – z.B. wenn eine Datenbank offline ist, während ein Prozessschritt auf diese zugreifen will. Dies ist ohne weiteres möglich. Fehlerhafte Prozesse können nach der Behebung solcher Probleme ohne Mühe fortgesetzt werden.
Selbst bei Designfehlern (z.B. eine ungewollte 0-Division in einem Prozessschritt) kann behoben werden, in dem der Fehler korrigiert wird und die neue Version des Workflows deployed wird. Bereits bestehende Prozesse, die an dieser Stelle fehlerhaft abgebrochen wurden, können auf die neue Version „migriert“ werden und mit der neuen Version fortgeführt werden.
Ungünstig finde ich, dass es zwei unterschiedliche Workflowdesigner gibt. Eine Silverlight-Version und die K2-Studio (oder eine Visual Studio AddIn). Von der Silverlightlösung würde ich die Finger lassen – das macht wenig Spaß.
Das K2 Studio kommt etwas altbacken daher, ist aber in Funktion unheimlich mächtig. Es bedarf natürlich einer gewissen Einarbeitungszeit, aber wenn man mal drin ist macht es richtig Spaß.
Allerdings kommt man immer wieder an Punkte, an denen sich die Anwendung anders verhält als erwartet. Bisher hat sich aber noch alles aufgeklärt – natürlich erst nachdem ich die richtige Stelle in all den Tutorials und Hilfestellungen auf der Community gefunden habe.
Mit K2 Five ist allerdings auch der K2 Studio Workflow Designer Geschichte – der Silverlight Designer sowieso! Mit K2 Five wurde der Plattform ein moderner HTML5-Designer spendiert. Darauf freue ich mich schon!
Fazit:
Inzwischen arbeite ich gut ein halbes Jahr sehr intensiv mit K2 und ich bin nach wie vor begeistert. Mit jeder umgesetzten Lösung wächst der Wissensschatz und vor allem die Bibliothek der wiederverwendbaren Artefakte. Kurz: Es macht echt Spaß mit der Plattform zu arbeiten.
Auch K2 Five haben wir bereits auf unserer Sandbox installiert – TSCHAKKA