SharePoint Inhaltstypen und K2 Smartforms

Eine typische Anforderung beim Umgang mit SharePoint Formularen ist es, für jeden Inhaltstyp (ContentType) auf einer Liste bzw. Bibliothek ein dediziertes Formular bereitstellen zu können. Mit der App “K2 For SharePoint” ist dies sehr einfach umzusetzen, denn die App erzeugt für jeden Inhaltstyp automatisch ein eigenes Formular welches dann mit den K2 eigenen Bordmitteln – ohne Programmieraufwand – angepasst werden kann.

Inhaltstypen der Liste:

inhtaltstypen

Artefakte die von der K2 App erzeugt werden:

In dieser Auflistung finden sich drei Objekttypen: SmartObjects, Views und Forms. View und Forms werden für die Aktionen “Neu”, “Bearbeiten” und “Anzeigen erstellten. Dies sind im SharePoint üblicherweise die sog. New-, Edit- und Displayforms.
ct_artefakte

Bearbeitung im webbasierten K2 Designer:

Alle Objekte können nun im K2 Designer direkt bearbeitet werden.

Inhaltstyp Contact

ct_editcontact

 

Inhaltstyp Issue

ct_editissue

Es gibt keinerlei Einschränkungen was die Designoptionen betrifft, d.h. die gesamte Bandbreite an Regeln und Controls können auch für SharePoint Formulare genutzt werden. Dazu gehört auch das Multilingual Control, wie im Beispiel für den Inhaltstyp Contact

ct_runtimecontact

Nutzt man das Multilingual Control, genügt (in diesem Beispiel) ein Klick auf die Flagge und das Formular wird übersetzt.

ct_runtimeissue

 

Inhaltstyp Issue

ct_runtimeissue2

In einem anderen Post habe ich bereits beschrieben wie man mit K2 Smartforms auch Anforderungen umsetzen kann, die im SharePoint nur mit Programmieraufwand darstellbar wären. Siehe hier 

Weitere Informationen zur K2 For SharePoint app gibt es im SharePoint Store K2 For SharePoint

Mit K2 Smartforms mehr aus der SharePoint UI herausholen!

Am 25.März wird K2 For SharePoint öffentlich zum Download bereitgestellt werden. Höchste Zeit für mich, ein paar besondere Features unserer App einmal genauer vorzustellen.

Grundsätzlich handelt es sich bei K2 For SharePoint um die neue Integration von K2 Blackpearl in SharePoint 2013. Das bedeutet, durch simples Aktivieren der App, hat man die komplette Bandbreite der K2 Features browserbasiert im Zugriff:

  • Formulardesign
  • Workflow
  • Datenintegration
  • Reports

Nutzt man die K2 App zum Beispiel für eine Liste, muss zunächst definiert werden, welche der oben genannten Features die App bereitstellen soll. In meinem Beispiel begnüge ich mich mit dem Punkt Formulardesign (ich will ein Smartform für New, Edit und Display Forms nutzen) und aktiviere die App auf einer default Issue List.

issuelistschema

Zunächst mal der Vergleich zwischen dem “New Form” der SharePoint UI und dem Smartform, das von der App automatisch erzeugt wird.

spui

smartformui

 

Auf den ersten Blick sind die optischen Unterschiede nicht so deutlich (zB Richtext – Editor), jedoch hat man durch die Konvertierung in das Smartform eine Vielzahl von Optionen gewonnen, die es im SharePoint per default überhaupt nicht gibt. Ich demonstriere dies an dem Multi-Lookup Control der Spalte “Related Issues”. Auf den Screenshots oben sieht man beide Versionen: SharePoint und Smartform. Nun ist es eine Eigenschaft von dieser SharePoint Spalte (Type: Lookup) dass man alle referenzierten Listitems für die Auswahl angeboten bekommt. Der einzige einschränkende Faktor könnten die Permissions sein. Eine Möglichkeit die Elemente anhand von Kriterien zu filtern gibt es nicht!

Angenommen wir hätten nun eine Anforderung nach der das Feld “Related Issues” abhängig von der Kategorieauswahl die Elemente filtern soll. D.h. nicht nur statisch konfiguriert, sondern dynamisch zur Laufzeit des Formulars! Dank der Rules Engine die ein Smartform steuern, ist dies sehr einfach umzusetzen. Zunächst erstellt man dazu eine Regel für das Dropdown Control der Kategorien.

rule1

Und konfiguriert dort ganz einfach über eine Action dass bei jeder Änderung des Kategorie Controls, die Datenquelle für das Multi-Lookup Control neu gefiltert wird.

rule2

Über den Punkt configure muss man nur eine Drag & Drop Aktion ausführen und zwar den Wert des Category Controls als Input Parameter für die Filtermethode binden.

configureDer Rest wird von der Engine automatisch gemacht und man hat sofort das gewünschte Ergebnis zur Laufzeit.

Beispiel: Kategorie Hardware

hardware

Beispiel: Kategorie Software

software

 

Dies ist nur ein kleines Beispiel an einem einzigen Control. Aber selbstverständlich könnte man auch hier die Anpassungen noch weiter ausbauen, zum Beispiel in folgende Richtungen:

  • Laden der “Related Issues” aus einer anderen SharePoint Liste auf der Issue Site
  • Laden der “Related Issues” aus einer anderen SiteCollection
  • Laden der “Related Issues” aus einer anderen WebApplication
  • Laden der “Related Issues” aus einer beliebigen Datenquelle (SAP, CRM, Oracle, SQL, Webservice)

Alles natürlich unter dem Motto: no code solution 🙂

 

K2 Lizensierung & SharePoint Skalierung

Es gibt immer wieder Missverständnisse im Zusammenhang der K2 Lizenzkosten mit SharePoint. Grundsätzlich muss betont werden, dass K2 (egal ob Blackpearl, Smartforms oder Connect) technisch komplett unabhängig von einem SharePoint Server funktioniert. D.h. bei der K2 Software handelt es sich keinesfalls um ein SharePoint Add-on, sondern vielmehr um eine eigenständige Plattform die sich in SharePoint integrieren lässt.

Logischerweise schlägt diese Tatsache dann bei der Lizensierung im Zusammenhang mit SharePoint durch. Denn hat man K2 einmal bezogen, wirkt sich aufgrund dieser technischen Unabhängigkeit eine Skalierung der SharePoint Farm nicht auf die K2 Lizenzkosten aus.

Das bedeutet beim denkbar einfachsten Setup befindet sich ein K2 Server in der Landschaft und dieser bedient eine SharePoint “Farm” mit einem WFE Server.

initsetup

Typischerweise wächst im Laufe der Zeit die Last auf dem SharePoint Server und man muss die Farm skalieren. Es werden dann n WFE Server ergänzt. Da K2 wie oben beschrieben unabhängig vom SharePoint läuft, bedeutet diese Skalierung nicht dass pro neuem SharePoint WFE auch ein neuer K2 Server gekauft / lizensiert / installiert werden muss.

3xwfe

 

Von der Lizensierung her gibt es also keine Verbindung zum SharePoint Server. Natürlich wird der K2 Server im obigen Beispiel irgendwann an die Auslastungsgrenze stoßen – auch hier: maßgeblich hierfür ist nur die Last auf dem K2 System – dann muss die K2 Farm um einen weiteren K2 Server erweitert (und somit lizensiert) werden. Diese Maßnahme hat keinen Einfluss auf die SharePoint Farm.

Eine weitere Funktion, die dank dieser unabhängigen Architektur unterstützt wird, ist das Betreiben von unterschiedlichen SharePoint Servern mit einem einzigen K2 Server. K2 differenziert aus Produktsicht nicht zwischen SharePoint 2007, 2010 und 2013 (aktuell Site im SP2010 Modus, 2014 kommt für SP2013 eine K2 App in den SharePoint Store).

spversionsk2

K2 Endpoint Service Broker + SharePoint Webservice

Seit dem Release von Blackpearl 4.6.5 gibt es OOTB einen neuen Service Broker. Mit dem Endpoint Service Broker kann man sich ein SmartObject für einen beliebigen Webservice, WCF Service oder eine .Net Assembly erstellen lassen. In diesem Beispiel zeige ich anhand der Webservice Schnittstelle von SharePoint wie sich die K2 Plattform nun sehr einfach um neue Funktionen erweitern lässt – und zwar ohne zusätzliche Programmierung. Konkret werde ich mir ein SmartObject erstellen, mit dem ich neue SharePoint SiteCollections erstellen kann.

Im SmartObject Services Tester Tool kann man sich am schnellsten orientieren und die neuen Typen identifizieren. Im Screenshot rot markiert.

smotester_endpoint

 

Einen recht guten Überblick über die Möglichkeiten der SharePoint Webservice Schnittstelle liefern die Seiten des MSDN. Dort findet man heraus, dass man zum Erstellen von SiteCollections den Admin Webservice verwenden muss. Zu finden unter <URLcentraladmin>/_vti_adm/Admin.asmx
Kennt man die URL des Dienstes, kann man sich über das Tester Tool mit wenigen Rechtsklicks eine ServiceInstance und das passende SmartObject generieren lassen.

smotester_instance

 

Service Instance

smo

SmartObject

Danach kann man theoretisch aus dem Tester Tool bereits SiteCollections erstellen. Um den Broker zu testen, würde dies sicher ausreichen. Allerdings braucht man in der echten Welt doch immer ein Frontend. Da wir nun ein SmartObject in der Hand haben, gibt es mehrere Einsatzmöglichkeiten:

  • Aufruf in einem K2 Workflow mit entsprechender Parametrisierung. Der Workflow kann von verschiedenen Systemen gestartet werden, zB SharePoint (Ereignisgesteuert), InfoPath, Websites, Windows Anwendungen etc.
  • Aufruf mit Hilfe eines Smartforms, synchron. Das bedeutet ich erstelle mir für das SMO (SmartObject) ein Smartforms UI und binde den Aufruf direkt an ein Ereignis au f dem Formular (zB ein Button Clickevent) .
  • Aufruf mit Hilfe eines Smartforms, asynchron. In diesem Fall erfasse ich die Daten auf einem Smartform und nutze das Formular um den Workflow zu starten. Genau wie im ersten Ansatz könnte man so noch eine Freigabe einbauen und auch die ggf. lange Laufzeit (abhängig vom gewählten SiteTemplate) zum Erstellen der SiteCollection verschleiern indem man den Benutzer sofort auf eine Landingpage weiterleitet.

Das Endergebnis könnte dann so aussehen:

neuesitecoll

 

MSDN SharePoint Webservices
http://msdn.microsoft.com/en-us/library/ee705814(v=office.14).aspx

SmartObject Services Tester Tool Verzeichnis
<Installationsverzeichnis>\K2 blackpearl\Bin