Marek Czarzbon
Marek Czarzbon hat einen Abschluss als Ingenieurinformatiker. Er ist CTO der Spirit Link Technology GmbH und beschäftigt sich dort mit Softwarearchitektur, Workflows und Governance im SharePoint-Bereich.email: marek.czarzbon@spiritlink.de
xing: https://www.xing.com/profile/Marek_Czarzbon
blog: http://www.czarzbon.com
twitter: @marekczarzbon
-
Schulung Basic und Advanced Nintex Workflows
Mittlerweile arbeiten wir als Firma seit mehr als einem Jahr mit Nintex Workflow 2007 und der Workflow Foundation. In den Projekten haben wir für uns viele Lessons Learned mit Nintex Workflow definiert.
Wir wurden von unsern Kunden nach einer Schulung in diesem Bereich gefragt. Das haben wir sehr gerne aufgegriffen und mittlerweile eine erfolgreiche Reihe an Schulungen durchgeführt.
Durch die Schulungen sind auch sehr interessante Ideen für die Weiterentwicklung von Nintex Workflow entstanden. Diese habe ich auch an Nintex weitergegeben. Wir diskutieren noch mit den Australiern, wie die Vorschläge in die Release-Planung einfließen können.
Basierend auf unserer praktischen Erfahrung haben wir zwei Trainings entwickelt:
Basic Nintex Workflow 2007 Seminar (2 Tage)
Ziel des Seminars ist die Einführung in die Konzepte und die praktische Umsetzung von Human-Centric Workflows auf der SharePoint 2007 Plattform (MOSS und WSS) auf Basis von Nintex Workflow 2007.
Teilnehmerkreis:
SharePoint Endanwender; Grundkenntnisse werden vorausgesetzt.Seminarinhalt:
• Grundlagen Windows Workflow Foundation
• Grundlagen Nintex Workflow 2007
• Hello World mit Nintex
• Positionierung SharePoint Designer, Visual Studio
• Workfl ow-Verwaltung, Status, Ausgaben
• Bedingungen
• Workflow Data, Liste Item Data, Konstanten
• Timer Jobs
• Action Set, Template, Snippet
• Freigabe, Request Data
• Delegation und Eskalation, Reminder, Report Webparts
• Hands On: Travel Management
• State Machine
• Travel Management mit State Machine
• InfoPath 2003, 2007 und Nintex
• Nintex Aktion Items
• Workflow Design PatternAdvanced Nintex Workfl ow 2007 Seminar (1Tag)
Ziel des Seminars ist der Aufbau von Expertenwissen im Bereich Entwicklung und Administration von
Nintex Workflow. Besonders stark wird auf das Thema Performance und Govermance von Workflow eingegangen.Teilnehmerkreis:
Sie arbeiten bereits mit Nintex Workflow 2007 oder Sie haben die Basic Schulung absolviert.
Zusätzlich benötigen Sie einen technischen Background oder Affinität zum Thema.Grundlagen MS Workflow Foundation
• Persistenz, Timer
• Performance
• Überwachung der Workfl ow-Aufgaben
• Administration Nintex, NWAdmin
• Delegation und Eskalation
• Nutzung Nintex-Webservices
• Design Patterns
• Advanced Action Item
• WebService, Query List, Collection, RegExp
• Look behind:
• Nintex Workflow in Visual Studio
• Logging, Debuging
• Optional (nach Wunsch der Teilnehmer):
Action Item EntwicklungDie neuen Termine stehen ebenfalls fest:
Basic Nintex Workflow 2007 Seminar (2 Tage)
Nürnberg/München: 20.-21.04.2009 (Standort abhängig von den Teilnehmern)
Düsseldorf: 28.-29.04.2009
Hamburg: 06.-07.05.2009Advanced Nintex Workflow 2007 Seminar (1Tag)
Nürnberg/München: 22.04.2009 (Standort abhängig von den Teilnehmern)
Düsseldorf: 30.04.2009
Hamburg: 08.05.2009Unterlagen als PDF und Preise:
-
Trim, SubString etc.: reguläre Ausdrücke für Zeichenoperationen nutzen
Vor kurzem hatte ich ein Problem bei einem Nintex Workflow. Es ging darum, einen Text aus einer Variable von Leerzeichen vor dem Text und danach zu befreien (TRIM).
Dafür ist der „Build dynamic string“ nicht gedacht. Hier können Texte dynamisch aus Variablen und/oder statischen Texten zusammengesetzt werden.
Was nun?
Hier kann natürlich die Aktivität „Regular Expression“ helfen. Die Lösung ich recht einfach, wenn man sich bereits mit regulären Ausdrücken auskennt.
^(?:\s*)([\W\w]*)(?:\b\s*$)
Für das Bauen von regulären Ausdrücken verwende ich sehr gerne das Tool RegExBuddy. Das Tool erzeugt auch automatisch eine Erklärung für den Ausdruck (siehe unten [1]).Was uns jetzt interessiert, ist die erste s.g. Backreference (Durch (?:xxx) können Ausdrücke zu einer Gruppe zusammengefasst werden ohne in der Backreference-Liste aufzutauchen). Das können wir leider nicht so in der Nintex Aktivität angeben. Was uns hier hilft, ist Split Operation. Diese nutzt die Backreference, um den Text zu zerstückeln.
Wieso hilft uns hier die Extract Operation nicht? Diese findet den gesamten Match und nicht nur die Backreference :- ( Damit ist die Extract Operationan dieser Stelle nutzlos.Fazit: Wie konfiguriert man die Aktivität?
(1) Zuerst den Typ „Split“ festlegen, sonst werden alle Felder gelöscht! Die Einstellung ist leider nicht als erste da. Nicht besonders logisch

(2) Pattern: ^(?:\s*)([\W\w]*)(?:\b\s*$)
(3) Input Text: eine String Workflow Variable auswählen
(4) Die Ergebnisse werden in einer Collection abgelegt. Diese muss man vorher als eine Workflow Variable hinzufügenEs kann sein, das wir keinen Treffer haben, dann ist unsere Collection leer (Input-Variable war leer). Das würde eine RunTime-Exception hervorrufen. Deswegen brauchen wir noch zusätzliche
Aktivitäten:
(1) Collection Operation – die Anzahl der Elemente in der Collection wird ausgelesen und in einer Workflow-Variable vom Typ Number countCollection abgelegt.
(2) Run If – wenn countCollection größer als 0 ist, dann können wir den Text auslesen.
(3) Set Variable – wir setzen den Index für die Get-Operation auf 1. Split-Operation liefert 3 Elemente: vor der Backreference, die Backreference, alles nach der Backreference.
(4) Collection operation – die Variable mit dem Text nach dem Trim auslesen. Es ist das zweite Element in der Collection. Der Index beginnt bei 0. Deswegen haben wir in (3) den Index auf 1 gesetzt.Das Ganze sollte man dann in eine Action Box verpacken.
Nach demselben Muster können folgende Operationen ausgeführt werden:trim: ^(?:\s*)([\W\w]*)(?:\b\s*$) - rechts und links Leerzeichen abschneiden
rtrim: ^([\W\w]*)(?:\b\s*$) - nur rechts Leerzeichen abschneiden
ltrim: ^(?:\s*)([\W\w]*) – nur links Leerzeichen abschneiden
substr :position, length : ^(?:[\W\w]{x})([\W\w]{y}) – einen Substring ausschneiden, ab der Position x und mit der Länge yAndere Operationen:
concat – Textzeichen zusammensetzen: dafür ist Build dynamic String prädestiniert
replace – Reguar Expression replace und für den Treffer $1 etc. nutzen
Leider ist es nicht möglich mit RegEx und Nintex folgende Operationen durchzuführen. Vielleicht aber doch? Ideen?
upper: ^([\W\w]*) \U1 -> Spirit Link Technology – SPIRIT LINK TECHNOLOGY
lower ^([\W\w]*) \L -> Spirit Link Technology – spirit link technology
initcap (\w)(\w+) \F1$2 -> spirit link technology - Spirit Link Technology
rpad DOG-*-*-*, beginning, ending, padding
lpad *-*-*DOGMit der Match-Operation, die ein Yes/No zurückliefert, können Beispielweise folgende Werte validiert werden (hier kann auch „Set a Condition“ oder „Run If“ benutzt werden, dass ebenfalls reguläre Ausdrücke unterstützt):
- Nur Buchstaben
- Nur Zahlen
- Alphanumerisch
- gültige IP Adresse
- gültige eMail Adresse
- etc.Viel Spaß damit! Weitere Ideen?
TIPP 1:
Dem regulären Ausdruck können auch Parameter als „inline parameter“ übergeben werden.
Um z.B. in einem Text wie „Spirit Link Technology“ nach dem Wort „Link“ zu suchen, könnten wir die Match-Operation benutzen:
Pattern: link
Allerdings wird hier case-senstive gesucht und wir bekommen keinen Treffer. Mit den „inline parameter“ i können wir das Verhalten ändern
Pattern: (?i)link
Mehr zum Thema RegEx und Parameter:
http://msdn.microsoft.com/en-us/library/yd1hzczs.aspxTIPP 2:
Benutzen Sie als String Unicode, so müssen andere Operatoren für die regulären Ausdrücke benutzt werden. Es gilt nicht bei UTF 8 für die englische und deutsche Sprache.
\p{name}
Matches any character in the Unicode general category or named block specified by name (for example, Ll, Nd, Z, IsGreek, and IsBoxDrawing).
http://msdn.microsoft.com/en-us/library/20bw873z.aspxErklärung:
[1] Trim RegExp ^(?:\s*)([\W\w]*)(?:\b\s*$)
Assert position at the start of the string «^»
Match the regular expression below «(?:\s*)»
Match a character that is a “whitespace character” (spaces, tabs, line breaks, etc.) «\s*»
Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
Match the regular expression below and capture its match into backreference number 1 «([\W\w]*)»
Match a single character out of the list: non-word character, or a word character «[\W\w]*»
Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
Match the regular expression below «(?:\b\s*$)»
Assert position at a word boundary «\b»
Match a character that is a “whitespace character” (spaces, tabs, line breaks, etc.) «\s*»
Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
Assert position at the end of the string (or before the line break at the end of the string, if any) «$» -
Rechte bei der Ausführung der Nintex Workflows 2007
Bei der Gestaltung von Workflows für Information Worker kommt es sehr oft zu folgendem Szenario:�
Ein Mitarbeiter soll im Self-Service einen Antrag stellen, der von einem oder mehreren Verantwortlichen freigegeben werden soll, zum Beispiel einen Reiseantrag. Nachdem die Daten von ihm angegeben wurden, soll es den Antrag nicht mehr verändern können. Vom Workflows soll Status im Formular verändert werden.Ein einfaches Szenario. Im Kontext von SharePoint und Nintex Workflow wird das ganze jedoch problematisch. Man kann mit dem “Set Permissions” Action Item das Vererben der Rechte für ein Element unterbrechen und das Recht nur für den User setzen. Damit kann man dem Antragsteller nur das Leserecht gewähren (Initiator). Das Workflow läuft aber ebenfalls mit den Rechten vom Initiator. Die Folge: Ein “Item Update” kann nicht durchgeführt werden.
Wenn man sich die Rechte, in denen ein Workflow ausgeführt wird, anschaut, ergibt sich folgendes Bild:
• Manual – User, der manuell ein Workflow startet.
• On update – User, der die letzte Änderung vorgenommen hat.
• On create – User, der den Eintrag erzeugt hat.
• Schedular for an Item – System account.
• As a Subworkflow – im Namen des Users vom Haupt-Workflow.
• As a workflow for a policy – System account.Umweg:
Eine offizielle Empfehlung von Nintex ist es, an dieser Stelle das Web Service Action Item Web Service zu nutzen und dann auch die das _vti_bin/Lists.asmx Web Service zu gehen. Damit kann man einen Web Service im Namen eines anderen Users als Initiator aufrufen und eine Änderung vornehmen. Ein Weg, der selbstverständlich funktioniert. Damit könnte man sich aber doch alle Action Items im Bereich Operation and Libraries nachbauen. Mit dem Slogan: “Workflows for everyone” ist es gerade kein gutes Beispiel.
Eine andere Idee wurde bei Fujitsu-Siemens (Boris Lisac) realisiert. Das Action Item Update Item wurde kopiert und angepasst. Ein neues Feld für den User, in dessen Namen es ausgeführt werden soll, wurde hinzugefügt.
Diese Idee habe ich auch an Dan Parker von Nintex weitergegeben. Hoffentlich haben wir bald diesen Parameter bei allen Items, die eine Manipulation der SharePoint Liste vornehmen.
-
Suche
-
Tag Cloud
- 2010
- action item
- Autorentool
- Backreference
- Business Intelligence
- CMS
- Collaboration
- Consulting
- Content Management
- CRM
- Development
- Dokumentenmanagement
- Dynamics
- E-Learning
- Enterprise 2.0
- Entwicklung
- Evaluation
- Eventhandler
- FAST
- Filterung
- Impuls
- ISPA SharePoint User Gruppe
- Key Performance Indicators
- Knowledgemanagement
- Learning Management System
- Liste
- LMS
- Metadaten
- Migration
- MOSS 2007
- Nintex
- Nintex Workflow 2007
- Opentext Livelink
- Partner Konferenz
- Projektmanagement
- Rechnungsmanagement
- Rechte
- regexp
- schulung
- Scorm
- Search
- SharePoint
- Social Community
- Software Ring
- Start Up
- Suche
- Teamraum
- training
- trim
- Veranstaltung
- Verknüpfung
- Vortrag
- whitespace
- Windows Workflow Foundation
- Workflow
- Workshop
- WSS 2.0
- WSS 3.0
-
Jobs
-
Partner
-
Externe Links
-
Spirit Links
-
Autoren
-
Abonnieren


