Beispiel: Einrichten eines Workflows zur Verwendung mit dem Prozessmanager
Wenn die der Workflow-Task zugewiesene Person die Task im Prozessmanager öffnet, wird der Name des Ereignisses im Feld Ereignisname angezeigt. Die Person klickt zum Starten des Workflows auf die Schaltfläche .
Das Ereignis "HR_NewHireAnnouncement" und der zugehörige Ereignis-Handler sowie einige Ereignisaktionen und eine beispielhaft gespeicherte Prozedur werden in der initialisierten Datenbank als Beispiel-Workflow bereitgestellt, damit Sie diese Daten im Prozessmanager ändern und testen können. Dieser Beispiel-Workflow sendet eine Benachrichtigung mit dem Namen und den Positionsdetails des neuen Mitarbeiters an alle Mitarbeiter. Sie müssen dieses Beispiel wie beschrieben bearbeiten, wenn Sie es in Ihrem System testen möchten. Dieses Beispiel zeigt, wie Parameter über das Masken-Scripting für dieses Ereignis weitergegeben werden können. Die generisch gespeicherte Prozedur gibt alle angepassten Ereignisse aus.
Ereignis - Definition
Dieses beispielhafte Ereignis mit der Bezeichnung "HR_NewHireAnnouncement" ist mit einem Handler und drei Ereignisaktionen verknüpft:
- Aktionstyp "Attribute festlegen" SET(EVENTTITLE=E(EventTitle)): Diese Ereignisaktion schreibt die Prozess-Task RowPointer zu Querverweiszwecken in den Ereignistitel.
- Der Aktionstyp "Benachrichtigen" verfügt über die folgenden Parameter:
- Bis: Globale Ereigniskonstante "HR_AnkündigungZuNeueinstellungEmpfänger"
Hinweis: Sie müssen die Liste der zugewiesenen Anwender für diese globale Ereigniskonstante definieren.
- Betreff: Übersetzbarer Zeichenkette "Herzlich Willkommen, <empname>"
- Text: Übersetzbare Zeichenkette "Ich freue mich, dass uns <empname> ab heute als <empposition> unterstützen wird."
Mit dieser Ereignisaktion werden Anwender, die mit der globalen Ereigniskonstante verknüpft sind, über den neu eingestellten Mitarbeiter informiert. EmpName und EmpPosition sind die Eingabeparameter für dieses Ereignis. Diese Informationen werden aus dem Prozess übernommen, aus dem dieser Workflow stammt.
- Bis: Globale Ereigniskonstante "HR_AnkündigungZuNeueinstellungEmpfänger"
- Aktionstyp: "Fertigstellen"
Wenn Sie eigene Ereignisse programmieren möchten, müssen Sie die erste und dritte Ereignisaktion verwenden und Ihre eigenen Ereignisaktionen auf Basis Ihrer Anforderungen zwischen diesen Aktionen platzieren.
Das Beispielereignis "HR_NewHireAnnouncement" wird inaktiv bereitgestellt. Sie müssen es zunächst auf der Maske Aktivierung v. Workflow-Ereignis-Handler aktivieren, bevor Sie es verwenden können. Geben Sie im Feld Anwender inform. die entsprechenden Anwender ein, die die Benachrichtigung zum neu eingestellten Mitarbeiter erhalten sollen.
Masken-Scripting:
- Für alle anwenderdefinierten Ereignisse, die durch den Prozessmanager unterstützt werden müssen, müssen Sie zunächst alle erforderlichen Eingabeparameter identifizieren. (Für das Beispielereignis "HR_NewHireAnnouncement" sind zwei Eingabeparameter erforderlich: EmpName und EmpPosition).
- Wenn ein Ereignis Eingabeparameter verwendet, müssen Sie bestimmen, ob diese Eingabeparameterwerte aus den Form-Page-Komponenten, aus den Eigenschaften oder den Variablen abgerufen werden können. Ist dies nicht der Fall, müssen Sie diese Werte aus der Maske abrufen. Weisen Sie diese Eingabeparameter zu. (In unserem Beispiel können beide Eingabeparameterdaten aus den Formkomponenten abgerufen werden.)
Weisen Sie diese Eingabeparameter gemäß unserem Beispiel zu:
If ThisForm.Components("MyTasksFormPageEventNameEdit").Text = "HR_NewHireAnnouncement" Then ThisForm.Variables("ParmName1").Value = "EmpName" ThisForm.Variables("ParmValue1").Value = ThisForm.Components("MyTasksFormPageEmpName1Edit").Text ThisForm.Variables("ParmName2").Value = "EmpPosition" ThisForm.Variables("ParmValue2").Value = ThisForm.Components("MyTasksFormPageJobTitleEdit").Text End If
Hinweis: Wenn Sie zusätzliche anwenderdefinierte HR-Ereignisse aus dem Prozessmanager ausführen möchten, fügen Sie Ihren eigen Code-Block zum Process Manager-Masken-Scripting hinzu, um Eingabeparameter für Ihre anwenderdefinierten Ereignisse zuzuweisen. Wir stellen Ihnen den Beispielcode als Framework zur Verfügung. Auf diesem Code können Sie aufbauen. - Führen Sie die gespeicherte Prozedur mit dem auf der Maske genannten Ereignisnamen aus, und verwenden Sie dabei alle Namen-/Wertepaare, die von der gespeicherten Prozedur unterstützt werden.
Gespeicherte Prozedur
Wir stellen eine generische gespeicherte Prozedur mit der Bezeichnung GenericNotifyEventGlobalCsSp und den folgenden Parametern bereit:
- @EventName
- @ProcessTaskRowPointer
- @EventStateRowPointer OUTPUT
- @Infobar OUTPUT
- @ParmName1
- @ParmValue1
- @ParmName2
- @ParmValue2
- €¦usw. für Parm-Namen und -Werte 3 bis 19 ...
- @ParmName20
- @ParmValue20
Die gespeicherte Prozedur führt die folgenden Schritte aus:
- @SessionId, @EventTrxId, @EventParmId initialisieren
- @ProcessTaskRowPointer als Eingabeparameter an das Ereignis weiterleiten, das im "Ereignistitel" gespeichert ist
- FireEventSp durch das Weiterleiten von @EventName, @SessionId, @EventTrxId und @EventParmId ausführen
- WAITFOR DELAY '00:00:05'
- Event State RowPointer lesen und zur Maske zurückkehren.
Wenn der Beispielcode gemäß den hier bereitgestellten Erläuterungen aktualisiert wird und Sie auf die Schaltfläche Prozessmanager klicken, wird der RowPointer des erstellten Ereignisstatusdatensatzes unter process_mgr_process_task.EventStateRowPointer gespeichert. Die Erfolgsmeldung wird als "Ereignis wurde gestartet" angezeigt.
auf der Maske