CreateActivity: Erzeugen eines Objekts
Alle helpLine-Objekttypen lassen sich über CreateActivity erstellen, d. h. Sie finden eine CreateActivity in jeder Gruppierung im Workflow Designer (Personenmanagement, Produktmanagement usw.).
Nach Einfügen der Aktivität ist diese typisiert, d. h. auf den von Ihnen ausgewählten Objekttyp festgelegt. Das rote Ausrufezeichen weist darauf hin, dass noch Eigenschaften zu setzen sind; in diesem Fall Instructions.
InstructionSet
Sourcen
-
Öffnen Sie die Liste der als Source-Objekte zugreifbaren Objekte über
die Schaltfläche Sources. Welche konkreten
Objekte in Ihrem Workflow sind, bestimmen Sie durch Bindung an deren ID
durch die zugehörigen Eigenschaften im Eigenschaftsbereich (siehe
Schritt 5).
-
Fügen Sie ein weiteres Objekt als Source über die Schaltfläche
AddSource HL Object hinzu.
-
Wählen Sie im Dialog Browse and Select a .NET Typeden
gewünschten Objekttyp aus.
-
Bestätigen Sie die Auswahl mit OK.
Der Dialog wird geschlossen, das Source-Objekt steht zur Verfügung.
- Binden Sie zusätzliche Sourcen nach Verlassen des Instruction Sets an die gewünschten Workflow-Objekte durch Angabe deren ID. Hierfür wird eine Eigenschaft erzeugt, die sich nach dem im Instruction Set ausgewählten Objekttyp richtet, also zum Beispiel TaskIdentity, wenn Sie einen Task angesprochen oder IncidentRequestIdentity, wenn Sie einen Incident gewählt haben.
Kopieren von Werten
- Definieren Sie falls nötig ein weiteres Objekt als Source.
- Bestimmen Sie das Attribut, IN welches kopiert werden soll.
- Bestimmen Sie das Attribut, AUS dem der Wert übernommen werden soll.
- Kopieren Sie den Wert über die Funktion .
- Wählen Sie im folgenden Dialog Property.
- Bestätigen Sie mit OK.
Setzen von Werten
- Bestimmen Sie das Attribut, dessen Wert Sie setzen wollen.
- Setzen Sie den Wert entweder über die Auswahl in einem Drop-down-Menü oder über eine Eingabe.
Definieren Sie für den initialen Vorgang eines Workflows
- die Activate Activity - einen Betrefftext und setzten Sie
Priorität des Vorgangs auf hoch.
|
Setzen von Werten - Sonderfall zusammengesetzte Attribute
AccountingDetail.PurchasePrice.CURRENCY_VALUE und
Gehen Sie wie folgt vor.
-
Da zusammengesetzte Attribute gleichzeitig gesetzt werden, wählen Sie
PurchasePrice.
-
Geben Sie im Enter Value-Dialog den Währungsbetrag und das
Währungssymbol durch einen Blank getrennt ein.
Zurücksetzen von List-Attributen
- Öffnen Sie den Dialog zur Eingabe eines Wertes.
- Wählen Sie den Wert none, der für List-Attribute als zusätzlicher Wert verfügbar ist.
- Bestätigen Sie mit OK.
Werte aneinander hängen
- Ziehen Sie das Icon für den Wert auf die Arbeitsfläche.
- Geben Sie das Ziel-Attribut bekannt.
- Bestimmen Sie, ob ein Wert angehängt werden soll, oder der Inhalt eines anderen Attributs.
- Fügen Sie eine weitere Source hinzu.
- Binden Sie aus diesem Objekt ein Attribut als Eigenschaft. Wenn Sie hier das gleiche Attribut wie das Destination-Attribut wählen, entspricht das einer Verdoppelung.
Neue SU anhängen: AppendSU
- Wählen Sie in der Start-Strategie der StageActivity die Strategie StageBeginUpdate.
- Greifen Sie durch BeginInstructions auf das InstructionSet zu.
-
Ziehen Sie das Symbol zum Anfügen einer Service-Einheit von der Gruppe
CaseManagement in den Arbeitsbereich.
Die Anweisung wird im Arbeitsbereich aufgelistet.
Neue SU anhängen und Assoziationen übernehmen: AppenSU+Associations
AppendMultipletreeItem
- Ziehen Sie das Symbol für das MultipleTreeItem aus der Gruppe Mutiples in den Arbeitsbereich.
- Verfolgen Sie das Objektmodell bis zum Attribut Keyword und markieren das Attribut Keyword.
- Bestätigen Sie mit OK.
- Wählen Sie das gewünschte Schlagwort.
- Bestätigen Sie mit OK.
DeleteMultipletreeItem
AppendMulitpleCompoundItem
- Ziehen Sie das Symbol für MCompound(+) in den Arbeitsbereich. Sprechen Sie den neuen (leeren) multiplen Eintrag über Last an.
- Füllen Sie das leere Compound-Attribut mit Werten.
- Wählen Sie das gewünscht MultiplCompound-Attribut.
- Geben Sie für jedes Unterattribut das gefüllt werden soll einen Wert (Value=) oder ein zu kopierendes Attribut (Property) an.
Associations - Assoziationen erzeugen
- AssociateHLObjekt erzeigt eine Assoziation in dem Objekt, für das
der der Instruction Set-Dialog geöffnet wurde, die Rolle A und das
hinzugeladene Objekt die Rolle B einnimmt. Wählen Sie beispielsweise
über das Kontextmenü einer Firma den Befehl Neue
Assoiationen, werden Ihnen Objekt-Typen angezeigt, die
in Rolle B einer Assoziation sein können, die die Firma in Rolle A
einnimmt.
- Person2Organization: Emloyee und ExternalPerson können einer Firma zugeordnet sein,
- CompanyView: Einer Firma können Abteilungen untergeordnet sein,
- Asset2Organization: Produkte können einer Firma untergeordnet sein,
- Contract2Organiszation: Verträge können mit einer Organisationseinheit assoziiert sein als Rolle B.
- Die sogenannten festen Assoziationen ordnen einen Vorgang SU-bezogen.
Die Arbeitsweise ist bei den drei typen gleich und wird hier
beispielhaft beschrieben.
- Einem Anfrager (AssociateSUCaller)
- einer Organisationseinheit (AssociateSUOrganisation)
- einem Produkt (AssociateProduct)
- Assoziationen, um einen Vertrag ein eine Person, Organisation oder
Produkt zu assoziieren. Diese Funktionen können Sie nur aus dem
Instruction Set des übergeordneten Objekts – also der Person, dem
Produkt oder der Organisation – aufrufen. Das Vertrags-Objekt muss als
Quelle (via Add source) zuerst hinzufügt werden, bevor die Assoziation
erstellt werden kann.
- SetContract2Person
- SetContract2Organiszation
- SetContract2Product
Beispiel 1 AssociateHLObject
-
Rufen Sie das Instruction Set einer Firma auf.
Das Objekt ist als hlObj enthalten.
-
Bestimmen Sie als Source zusätzlich den Objekt-Typ
Contact.
Beide Objekte sind im Instruction Set verfügbar. -
Ziehen Sie das Symbol zur Erstellung der Assoziation in den
Arbeitsbereich.
- Wählen Sie hier unter hlObj die Associations (hier Person2Organiszation), die Rolle B und schließlich die ContactList.
-
Wählen Sie im ursprünglichen Sources-Dialog den Eintrag
Contact und bestätigen mit OK.
Die Instruction wird im Arbeitsbereich eingetragen.Nach Verlassen des Instruction-Set-Dialogs wird nun eine Eigenschaften ContactIdentity als zu belegen markiert, an die noch die ID des Employees gebunden werden muss. - Wenn dieser Employee KEIN Workflow-Objekt sondern ein reines helpLine Objekt ist, müssen Sie durch eine eigene API-Methode die ID des Objekts zur Verfügung stellen.
Beispiel: AssociateSUCaller
-
Fügen Sie den Anfrage (Kontakt) und das Produkt (Computer) als
Sourcem im Instruction Set ein.
-
Ziehen Sie das Symbol für AssociateSUCaller in den
ARbeitsbereich und wählen Sie OK.
und bestätigen Sie mit -
Wählen Sie im folgenden Dialog das Objet Contact und
bestätigen mit OK.
Die Instruction wird im Arbeitsbereich angezeigt. -
Führen Sie die Schritte 2 und drei ebenso für die Anweisung
AssociateSUProduct . Wählen Sie für die letzte SU den
Computer.
Die Instruction wird im Arbeitsbereich angezeigt.
- Bestätigen Sie die Erstellung des Instructions Sets mit OK.
-
Benennen Sie die Instruction ggf. um.
Die noch zu bindenden IDs des Mitarbeiters (contactIdentity) und des Produkts (computerIdentity) sind im Eigenschaften-Raster der Aktivität verfügbar.
- Wenn dieser Employee KEIN Workflow-Objekt sondern ein reines helpLine Objekt ist, müssen Sie durch eine eigene API-Methode die ID des Objekts zur Verfügung stellen.
InvokeMethod
- InvokeAPIMethod
- API ist die Abkürzung für Application Programming
Interface und stellt die Programmierschnittstelle der
Workflow-Software zu anderen Programmen dar. Ziehen Sie wie gewohnt
das Symbol der API-Methoden in den Arbeitsbereich des Instruction
Sets.Anmerkung: Für weitere Erklärungen lesen Sie den Abschnitt CallAPIMethodActivity – Aufruf vordefinierter und eigener API-Methoden.
- InvokeStaticMethode
-
StaticMethods sind statische Methoden von Klassen, die aufgerufen werden können, beispielsweise String.IsNullOrEmpty().Anmerkung: Für weitere Erklärungen lesen Sie den Abschnitt CallAPIMethodActivity – Aufruf vordefinierter und eigener API-Methoden.
- Ziehen Sie das Symbol der StaticMethod in den Arbeitsbereich des Instruction Sets.
- Wählen Sie eine Methode aus.
ThrowException
Nach dem Einfügen der ThrowException in den Arbeitsbereich des InstructionSets wird der
-
Ziehen Sie das Symbol der ThrowException in den Arbeitsbereich des
InstructionSets.
Der Dialog zur Auswahl des Exception-Typs wird eingeblendet.
- Geben Sie den Text für die Exception ein.
Instructions anordnen/verschieben
- Öffnen Sie den Arbeitsbereich des InstructionSets.
- Wählen Sie eine Instruction mit der Maus.
- Verschieben Sie die Instruction an die gewünschte Stelle.
Zugriff auf Textvorlagen im Instruction Set
Zugriff auf erweiterte Eigenschaften der Bestellung im Instruction Set
- Instruction – Calculate Order (Gruppe OrderManagement)
- Diese Instruction gibt den Gesamtpreis einer Bestellung zurück.
- Instruction – Load Order (Gruppe OrderManagement)
- Diese Instruction lädt die Informationen einer Bestellung.
- Instruction – Load Product (Gruppe OrderManagement)
- Diese Instruction lädt die Informationen eines Produkts.
- Instruction – Load Feature (Gruppe OrderManagement)
- Diese Instruction lädt die Informationen eines Features.
Definition von lokalen Variablen im Instruction Set
- Ziehen Sie das Symbol für die Variable in das Instruction Set.
-
Definieren Sie den Datentyp.
Die Variable kann jetzt bei Zuweisungen sowohl als Source als auch als Destination verwendet werden.
ForEach-Schleife im InstructionSet
- Ziehen Sie das Symbol für das For/Each-Element in das Instruction Set.
- Definieren Sie, über welche Elemente Sie iterieren wollen. Dies kann eine Liste von Elementen sein oder wie in diesem Beispiel eine Iteration über die Service Units des Vorgangs.
-
Vergeben Sie einen Namen für das Zwischenobjekt.
In der jetzt eingefügten For/Each-Schleife wird durch das rote Ausrufezeichen angezeigt, dass noch keine Anweisungen innerhalb der Schleife sind, die ausgeführt werden können.
-
Ziehen Sie das Symbol für das Anhängen von Werten in die
For/Each-Schleife. Die Destination ist in unserem Beispiel der
Betreff-Text.
- Weisen Sie die Destination über Property zu.
- Wechseln Sie nun als Source/Quelle zu dem vorhin erzeugten Zwischenobjekt su, der die Service-Einheiten-Attribute des Incidents repräsentiert.
-
Suchen Sie den Description-Text.
Fehlerhafte Instruction Sets
Unvollständige bzw. fehlerhafte Instruction Sets führen dazu, dass der Workflow nicht deployed/erstellt werden kann. Dies gilt auch, wenn Sie in keiner Instruction-Set-Property verwendet werden.
Sie erhalten die folgende Fehlermeldung:
Helpline.Workflow.Design.WorkflowCompileException: CompilerErrors:
c:\Programme\helpLine\assembly\DesignAttributeTest_113511_1_1\IFormattedTemplateInstructions1.cs(76,114) : error CS1001: Bezeichner erwartet
Löschen Sie aus diesem Grund alle fehlerhaften Instruction Sets.
IFElse - Bedingte Ausführung von Instructions
-
Ziehen Sie dazu die Funktion IfElse in den Arbeitsbereich.
Der Condition Editor zur Eingabe der Bedingung wird geöffnet. -
Fügen Sie, Sie ein Objekt-Attribut (Compare Instance Member) oder
eine Variable (Compare Static Member) als Bedingung ein.
-
Wählen Sie ein Attribut, beispielsweise die Priorität der Bedingung.
-
Entscheiden Sie, ob der Wert aus einem anderen Attribut (Instance
data/Property) oder aus dem Attribut-Wert ) bezogen werden
soll.
-
Wählen Sie die Konstante (Constant/Value und die Priorität
Hoch.
Die Bedingung ist im Condition Editor eingetragen. Sobald Sie über die Schaltfläche Conditions eine weitere Bedingung einfügen, wird diese automatisch mit UND verknüpft. Durch Anwahl können Sie das AND in ein OR verändern. - Löschen oder verschieben Sie Bedingungen über das Menü hinter dem Pfeil am Ende der Zeile.
-
Beenden Sie den Condition Editor mit
OK.
Im Instruction Set werden die bedingten Verzweigungen eingeblendet.
-
Ziehen Sie die gewünschte Funktion in den Then- und
Else-Zweig.
Anmerkung: Hier können keine weiteren Zweige eingefügt werden. Wenn Sie dennoch mehrere Attributwerte als Bedingung abfangen möchten, müssen Sie die IfEls-Funktionen verschachteln.
Definition lokaler Variablen für die Zwischenspeicherung
ForEach-Schleife
Hier ein kleines Beispiel, wie mit einer ForEach-Schleife die Tätigkeitsbeschreibungen aller Service-Einheiten aneinandergereiht werden.
-
Ziehen Sie das ForEach-Symbol in den Arbeitsbereich. Es öffnet
sich ein Auswahldialog, in dem Sie das Objekt bestimmen, über welches
iteriert wird.
-
In dem Auswahldialog sehen Sie die Elemente, die zur Iteration geeignet
sind, grün markiert. Dies können die Service-Einheiten,
Mehrfach-Listenattribute oder auch Listen assoziierter Objekte
sein.
-
Um die Eindeutigkeit innerhalb des Workflows zu gewährleisten, muss
hier ein Name eingegeben werden.
Die Iterationsstruktur wird im Arbeitsbereich eingefügt und zeigt durch den roten Punkt an, dass noch keine Aktivitäten bestimmt wurden, die iterativ für jede Service-Einheit ausgeführt werden sollen.
-
Fügen Sie die Aktivität hinzu.
In nachfolgender Abbildung wurde der SolutionText sukzessive mit den Tätigkeitstexten jeder SU gefüllt.
TryCast
Beispiele hierfür sind:
- Personen werden gecastet in Employee oder ExternalPerson
- Produkte können unterschieden werden in Computer, Drucker, Monitor usw.
Da die Attribute bei den gecasteten Objekten unterschiedlich sein können, ist eine Differenzierung teilweise notwendig.
Die Option TryCast im Instruction Set bietet diese Unterscheidung an und referenziert auch die entsprechenden Objekte.
Als Beispiel dient nachfolgend das Casting eines Produkts, das als Inventar in einem Incident angegeben ist. In dem Instruction Set soll Aktion1 durchgeführt werden, wenn das Produkt ein ServerComputer ist, Aktion2, falls es sich um ein Notebook handelt, Aktion3 bei einem DesktopComputer und für alle anderen Produkttypen soll keine Aktion durchgeführt werden.-
Rufen Sie beispielsweise in einer End-Instruction oder einer
Update-Activity das Instruction Set auf, und ziehen die TryCast-Funktion
in den Arbeitsbereich.
-
Wählen Sie das Produkt.
-
Wählen Sie Namen und Typ der Variablen.
Die TryCast-Operationen für einen ServerComputer, NotebookComputer und DesktopComputer wuren einfügt. -
Tragen Sie nun die letzten Aktionen 1-4 ein, die für den Casting-Fall
durchgeführt werden sollen.
TryRelatedObject
Für einen Workflow seinerseits, der in dieser Auswahl der Prozesse steht, bedeutet dies, dass er unter Umständen durch unterschiedliche Vorgangstypen aufgerufen wird. Wenn aber von dem auf diese Weise auslösenden Vorgang Attributbelegungen wie beispielsweise der Beschreibungstext übernommen werden sollen, muss – ähnlich der TryCast-Funktion – auch hier nach Typ unterschieden werden können.
Nachfolgend ein Beispiel, welches diesen Sachverhalt verdeutlicht:
Ein auf einem Incident basierender Workflow (TryRelatedObjectWF) soll die Voraussetzungen erfüllen, von einem anderen Incident oder ProblemRecord durch Process Chaining aufrufbar sein. Dabei soll er aus dem aufrufenden Incident den Beschreibungstext und die Schlagwörter, oder aus dem aufrufenden Problem den Beschreibungstext übernehmen. Wird er durch andere Vorgangstypen per Process Chaining gestartet, sollen keine Werte übernommen werden.
-
In der Start-Aktivität wählen Sie zunächst als
Create-Strategy
With Instructions.
Im Eigenschaftenbereich wird die Eigenschaft CreateObjectInstructions eingefügt.
- Ziehen Sie im Instruction Set die TryRelatedObject-Funktion in den Arbeitsbereich.
-
Geben Sie den ersten möglichen Typ des übergeordneten Vorgangs an und
vergeben ein Präfix (RO im Beispiel für
RelatedObject).
Im Instruction Set wird eine Aktivität angezeigt, die im linken Zweig den Fall übergeordnetes Objekt gleich Incident und im rechten Ast (Default) alle anderen Fälle abdeckt. -
Fügen Sie einen weiteren Ast für den ProblemRecord hinzu.
Die gewünschte Struktur wird erzeugt.In den linken Ast werden die Anweisungen zur Übernahme des DescriptionTexts sowie der Schlagwörter übernommen. Der mittlere Ast erhält nur die Anweisung zum Kopieren des DescriptionTexts und der rechte (Default-) Ast erhält einen beliebigen Text.In den linken Ast werden nun die Anweisungen zur Übernahme des DescriptionTexts sowie der Schlagwörter übernommen. Der mittlere Ast erhält nur die Anweisung zum Kopieren des DescriptionTexts und der rechte (Default-) Ast erhält einen beliebigen Text. -
Erstellen Sie ein Default-SLA für den neuen Workflow-Prozess, damit das
Objekt gefunden werden kann.
-
Starten Sie den Workflow als ProcessChaining-Objekt über einen
Incident.
UserTextTemplate - Verwendung von Textvorlagen
Im Gegensatz zur nachfolgend beschriebenen Funktion GetTextTemplates kann das Ergebnis dieser Funktion nur in Felder vom Typ ITemplate geschrieben werden, also beispielsweise den Body einer E-Mail, wo genau dieses Format erwartet wird.
Sie können diese Funktion verwenden, wenn Sie die Textvorlage, die durch den E-Mail-Wizard eingefügt wurde, ändern wollen.
-
Bestimmen Sie die gewünschte Textvorlage.
-
Wählen Sie im Instruction Set einer Mail-Activity die Destination
body, die genau dem Typ ITemplate entspricht.
Die Zuweisung wurde vorgenommen.
GetTemplateText
- Ziehen Sie die Funktion GetTextTemplate in den Arbeitsbereich des Instruction Sets.
-
Wählen Sie eine Textvorlage und entscheiden, ob der Text formatiert
oder unformatiert übernommen werden soll.
- Deaktivieren Sie die Auswahlbox Generate formatted Text um den Inhalt der Textvorlage in ein normales String-Attribut zu schreiben. Bilder und Links gehen hierbei verloren.
-
Wählen Sie, in welches Attribut der Inhalt der Textvorlage geschrieben
werden soll.
-
Wählen Sie bei mehrsprachigen Textvorlagen die Sprache aus. Die
Information kann aus dem Anfrager oder dem Owner bezogen
werden.
-
Verknüpfen Sie die Quellen, wenn Ihre Textvorlage Objekte
referenziert.
Suchen
-
Ziehen Sie die Suche in den Arbeitsbereich des Instruction Sets.
-
Wählen Sie den Suchtyp. Es gibt drei mögliche Suchtypen.
- Erstes Objekt
- Aus der Ergebnismenge wird das erste (beliebige) Objekt als Ergebnis verwendet.
- Mehrere Objekte
- Aus der Ergebnismenge werden die ersten (beliebigen) XYZ Objekte als Ergebnisliste verwendet (Die Anzahl „XYZ“ wurde bei der Definition der Suche festgelegt).
- Gibt es ein Objekt?
- Diese Suche liefert später zu Laufzeit einen Bool’schen Wert (True oder False) zurück:
-
Geben Sie - je nach Suchtyp - den Namen der Ergebnisvariable ein, die
das Ergebnis speichert.
-
Da die Suche auf ein bestimmtes (in der Suche gewähltes) Attribut
definiert wurde, legen Sie fest, wo der Vergleichswert (für das
Integer-Attribut RAMSize) herkommen soll - aus einem
Attribut/Property des hlobj oder selbst eingegeben/Value.
Die Suche wird im Instruction Set mit den Zweigen Found und NotFound angezeigt. -
Verwenden Sie das Ergebnis weiter, soweit Treffer gefunden wurden. Den
NotFound-Zweig können Sie leer lassen oder beispielsweise
eine Meldung zurück in den Vorgang schreiben, dass kein Ergebnis erzielt
wurde. Wurden Treffer gefunden können Sie beispielsweise,