• home
    • news & events
    • blog
  • über uns
    • projekte und referenzen
    • partner
    • produkte & technologien
    • offene jobs / stellen
    • veröffentlichungen
  • dienstleistungen & services
    • software design & architektur
    • software entwicklung
    • beratung / consulting
    • training, kurse und workshops
  • angebote
    • quick-starts
    • trainings und kurse
    • modulare sharepoint 2010 workshops
  • kontakt
Wir bieten SharePoint und .NET
Kompetenz, Erfahrung und Know-How:
"1stQuad guaranteed."
Diesen Blog abonnieren
Subscribe in NewsGator Online Add to My AOL
Add to Google Reader or Homepage Add to netvibes

Aktuelle Posts

Quick-Tipp: Publishing Site Settings
Update: Dynamisches Wiki Inhaltsverzeichnis
Chart Part für SharePoint 2010
SharePoint Content DB Migration -> Access denied
Konfigurieren von „Gefällt mir“ und Kategorien und Notizen

Archiv

Januar 2012 (4)
Dezember 2011 (2)
November 2011 (10)
September 2011 (3)
August 2011 (7)
Juli 2011 (1)
Juni 2011 (3)
Mai 2011 (6)
April 2011 (5)
März 2011 (8)
Februar 2011 (8)
Januar 2011 (4)
Dezember 2010 (5)
November 2010 (7)
September 2010 (6)
August 2010 (2)
Juli 2010 (11)
Juni 2010 (13)
Mai 2010 (11)
April 2010 (4)
März 2010 (6)
Februar 2010 (2)
Januar 2010 (6)
Dezember 2009 (4)
November 2009 (13)
Oktober 2009 (17)
September 2009 (2)
Juli 2009 (2)
März 2009 (2)
Januar 2009 (1)

1stQuad ist Microsoft Certified Gold Partner und bietet SharePoint und .NET Produkt- und Projekt-Kompetenz, -Erfahrung und -Know-How für Entwicklung, Architektur, Beratung, Schulung, Training und Kurse in Schweiz sowie Deutschland und Östereich.
1stQuad ist MatchPoint Partner und bietet MatchPoint Produkt- und Projekt-Kompetenz, -Erfahrung und -Know-How für Entwicklung, Architektur, Beratung, Schulung, Training und Kurse in Schweiz sowie Deutschland und Östereich.
1stQuad ist Nintex Partner und bietet Nintext SharePoint Workflows Produkt- und Projekt-Kompetenz, -Erfahrung und -Know-How für Entwicklung, Architektur, Beratung, Schulung, Training und Kurse in Schweiz sowie Deutschland und Östereich.
1stQuad ist Balesio Gold Partner und bietet SharePoint FILEMinimizer Produkt- und Projekt-Kompetenz, -Erfahrung und -Know-How für Entwicklung, Architektur, Beratung, Schulung, Training und Kurse in Schweiz sowie Deutschland und Östereich.
1stQuad Solutions ist Kentico Certified Solution Partner und bietet Produkt- und Projekt-Kompetenz, -Erfahrung und -Know-How für Entwicklung, Architektur, Beratung, Schulung, Training und Kurse in Schweiz sowie Deutschland und Östereich.
© 2011 1stQuad Solutions
Alle Rechte vorbehalten
> Impressum
Wir bieten Microsoft SharePoint und .NET Projekt- und Produkt-Know-how, Kompetenz und Erfahrung für Entwicklung, Architektur, Beratung, Schulung, Training und Kurse in Zürich, Bern, Basel, Schweiz sowie Deutschland und Östereich.

Blog > Juli 2010

State Machine Workflow mit InfoPath Formularen für SharePoint 2010 – Teil 4

Im vierten Teil der Workflow Serie geht es um den weiteren Design des Workflows mit weiteren Zuständen und Activities.

Veröffentlicht am 31.07.2010 09:16:05 von Reiner Ganser mit 0 Kommentar(en)

Teil 4: Design des Workflows erweitern

 Diesen Blog-Post als PDF herunterladen

   Sourcecode
 

Nachdem wir in den letzten beiden Teilen den minimalen Workflow erstellt und getestet haben, sowie Zuweisungs- und Startformulare erstellt haben, wollen wir diesen nun mit weiteren Zuständen und Activities ausbauen. Wir brauchen noch einen Zustand für den Genehmiger (Approver) und einen für den Initiator (Reviewer).

Hierzu ziehen wir 2 neue State Activities auf den Designer und benennen diese in stateApprover und stateReviewer um:

 
Um mit den einzelnen Zuständen zu arbeiten, könnte man nur eine eventDrivenActivity in den Zustand ziehen. Ich bevorzuge jedoch die Verwendung von zusätzlichen Initialisierungs- und Finalisierungs-Activities. Somit ziehen wir nacheinander ein StateInitializionActivity, ein EventDrivenActivity und ein StateFinalizationActivity in unseren Zustand stateApprover:

 
Jetzt müssen wir die Activities zuerst richtig benennen, bevor wir weitermachen.
Die folgenden Umbenennungen wurden gemacht:

 

Alt Neu
stateInitializationActivity1  stateInit_Approver
eventDrivenActivity2 eventDrivenActivity_Approver
stateFinalizationActivity1  stateFinal_Approver


Unser stateApprover Zustand sieht nun wie folgt aus:

 
Innerhalb des stateApprover Zustandes sollen die folgenden Aktionen durchgeführt werden:
 

  1. Eine Aufgabe (Task) wird für den jeweiligen Benutzer angelegt, der genehmigen soll
  2. Es wird auf die Abarbeitung der Aufgabe gewartet. Dabei kann das Ergebnis die Genehmigung (Approve) oder Ablehung (Reject) sein.
  3. Prüfen, was der Benutzer ausgewählt hat. Wurde genehmigt, wird noch ein Eintrag in die Workflow Verlaufsliste geschrieben ansonten wird zum Zustand stateReviewer verzweigt.

Eine Aufgabe für den Genehmiger legen wir in der stateInit_Approver Activity an. Hierzu erst mal ein Doppelklick auf stateInit_Approver. Man landet dann in den Innereien dieser Activity. Nun kann man eine CreateTask Activity aus der Toolbox vom Bereich SharePoint Workflow in den Designer ziehen:

 
Wie man sieht erscheint zunächst erst mal wieder das dicke rote Ausrufezeichen. Bevor wir dieses jedoch bearbeiten, steht zunächst die Namensgebung der CreateTask1 Activity an. In unserem Fall benennen wir sie createTask_Approver.
Nun zum roten Ausrufezeichen. Es fehlt dieser Activity also noch an korrekten Einstellungen.Klickt man auf das Ausrufezeichen, sieht man dass der sog. CorrelationToken nicht gesetzt ist:

 
Beim Correlation Token handelt es sich quasi um eine Klammer um einen Workflow bzw. Zustand. In einem State Machine Workflow bekommt jeder Zustand seinen eigenen Correlataion Token. In den Eigenschaften des CreateTask Activities kann man einen neuen Correlation Token eingeben (in unserem Fall ApproverToken) und als OwnerActivityName den Zustand auswählen, in welchem die Aufgabe angelegt wurde (stateApporver):

 
Diesen Correlation Token werden für alle Activities, die diesen brauchen, in unserem Zustand verwenden. Wir müssen aber noch ein paar andere Einstellungen vornehmen:
 

  • TaskId setzen: Diese wird für alle Activities verwendet, die mit dieser Aufgabe arbeiten. Sie kennzeichnet quasi alle Aktivitäten, die mit dieser Aufgabe durchgeführt werden (warten auf Bearbeitung der Aufgabe, Abschliessen der Aufgabe usw.).
  • TaskProperties anlegen: Über diese lässt lassen die Felder der Aufgabe auslesen. Wir werden die Daten dazu verwenden, um zu entscheiden, wie der Vorkflow nach der Bearbeitung der Aufgabe weiterlaufen soll.

Die TaskId kann man durch Klick in das Feld und danach Klick auf den Schaltfläche … rechts davon anlegen. Es erscheint ein Dialog, in welchem man neue Felder und Eigenschaften anlegen kann:

 
Wir brauchen jedoch erst mal ein neues Feld für insere TaskId und wählen deshalb den Reiter Bind to a new member. Dort geben wir den entsprechenden Namen ein (in unserem Fall TaskId_Approver) und selektieren Create Field, da wir keine öffentliche Eigenschaft (Create Property) brauchen:

 
Für die TaskProeprties gehen wir in gleichen Weise vor:

  1. Klick in das Feld von TaskProperties und danach Klick auf die Schaltfläche …
  2. Reiter Bind to a new member auswählen
  3. Create Field auswählen
  4. Als Name TaskProperties_Approver auswählen


Die Eigenschaften unseres Approver Task sehen somit wie folgt aus:

 
Mit dem Anlegen einer Aufgabe für den Genehmiger sind wir somit zumindest mit dem Design fertig. Den notwendigen Code werden wir in einem späteren Teil der Serie kennen lernen.
Um wieder zurück zur Gesamtansicht im Designer zu kommen, klicken wir auf Workflow1.

 
In der Gesamtansicht wollen wir nun die eventDrivenActivity_Approver mit Leben füllen. Also einen Doppelklick auf diese Activity ausführen und wir befinden uns wieder in den Innereien. Hier brauchen wir zunächst eine onTaskChanged Activity:

 
Benannt wird dieses Activity von uns mit TaskChanged_Approver. Und auch in diesem Fall müssen wir das rote Ausrufungszeichen weg bekommen. In den Eigenschaften der Activity müssen wir zunächst den Correlation Token auf ApproverToken setzen. Zusätzlich wählen wir für die TaskId die bereits zuvor angelegte TaskId_Approver aus.Damit wir später im Task wissen, was sich geändert hat (bzw. wie es zuvor und wie es danach war) sollten wir noch die sog. BeforeProperties und AfterProperties anlegen. Wir legen dabei beide als Feld (nicht als Property) mit den folgenden Namen AfterProperties_Approver und BeforeProperties_Approver an.
Die Eigenschaften unserer TaskChanged Activity sehen somit wie folgt aus:

 
Nachdem sich der Task geändert hat, müssen wir anhand einer Verzweigung entscheiden, was als nächstes im Workflow getan werden soll. Hierzu stellt Visual Studio die sog. ifElse Activity aus dem Abschnitt Windows Workkflow V3.0 bereit. Wir ziehen diese Activity unter die TaskChanged_Approver Activity:

 
Um das Ausrufezeichen kümmern wir uns später. Wir brauchen jetzt noch jeweils eine LogToHistory Activity  und darunter jeweils eine SetState Activity. Benennen brauchen wir diese nicht, da wir diese nicht im Code weiterverwerten wollen:

 
In der setStateActivity2 setzen wir die Eigenschaft TargetStateName auf stateFinal (dies ist der Zweig, wenn der Genehmiger zugestimmt hat). In Activity setStateActivity3 setzen wir den TargetStateName auf stateReviewer (dies ist der Zweig, wenn der Genehmiger abgelehnt hat):

 
Die Eigenschaften für die beiden logToHistoryActivity setzen wir wie folgt:

 

Activity  Eigenschaft  Wert
logToHistoryListActivity2  HistoryDescription  1stQuad Approval WF
  HistoryOutcome  Genehmigt
logToHistoryListActivity2  HistoryDescription  1stQuad Approval WF
  HistoryOutcome  Abgelehnt

Wie gesagt kümmern wir uns um das rote Ausrufezeichen im nächsten Teil der Serie.
Durch Klick auf Workflow1 wechseln wir wieder in die Gesamtansicht. Dort wieder ein Doppelklick auf die stateFinal_Approver Activity:

 
Innerhalb dieser Activity möchten wir die Aufgabe abschliessen. Deshalb ziehen wir eine CompleteTask Activity in den Designer:

 
Zuerst wieder umbenennen in completeTask_Approver. Dann auch hier wieder den Correlation Token und die TaskId setzen:

 
Die gleichen Schritte wie oben aufgeführt, sind nun für den ReviewerState ducrhzuführen. In der Namensgebung wird dabei lediglich statt Approver der Wert Reviewer verwendet. Ein Schritt unterscheidet sich jedoch: Beim Setzen des nächsten Zustandes in der Activity eventDrivenActivity_Reviewer wird im linken Zweig auf den stateApprover verzweigt:

 
Was jetzt noch fehlt ist das Umbiegen des initialen Zustandes auf den Zustand des Genehmigers (stateApprover). Für unseren Test aus dem vorigen teil der Serie zeigt er immer noch auf den finalen Zustand (stateFinal). Durch einen Doppelklick auf die eventDrivenActivity1 im Zustand Workflow1InitialState lässt sich das sehr schnell beheben:

 
Wir setzen die SetState Activity am Ende nun einfach auf den Zustand des Genehmigers um (stateApprover):

 
Der Workflow sieht jetzt in der Übersicht wie folgt aus:

 
Damit steht der Design und die wichtigsten Eigenschaften sind eingestellt. Testen lässt sich der Workflow in diesem Zustand natürlich schlecht, da er immer in einer Aufgabe stehen bleibt und dort nicht mehr herauskommt. Wir brauchen als noch Code. Bevor wir dies allerdings einbauen, werden wir in den nächsten beiden Teilen erst einmal die InfoPath Formulare erstellen und diese mit dem Workflow verbinden. Danach haben wie alle Einzelteile beisammen, um den Workflow mit Code zu implementieren.
 

Kommentar
Dieser Blog-Eintrag wurde noch nicht kommentiert.
Kommentar hinterlassen



 Security code
Zurück, Seite drucken