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.).

Sobald Sie eine CreateActivity in den Workflow ziehen, bestimmen Sie zunächst den Objekttyp, der erzeugt werden soll. Nachfolgendes Beispiel zeigt die Auswahl für die Aktivität Erzeuge Produkt, wenn zuvor im Activity Designer alle verfügbaren Aktivitäten für Produkte erzeugt wurden.

Anmerkung: Da für alle helpLine Objekte standardmäßig Pflichtfelder definiert sind, ist es wichtig, darauf zu achten, dass diese Pflichtfelder vor dem Speichern im Workflow gefüllt sind.

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

Das Instruction Set wird bei der Erzeugung neuer Objekte und für das Ändern von Objekten verwendet, um Attributwerte zu kopieren, neu zu belegen, eine Service-Einheit anzuhängen, Assoziationen zu erstellen usw.
Den Dialog für das Instruction Set öffen Sie über den Instructions-Parameter im Eigenschaftsbereich.
Anmerkung: Nur das Objekt (beim Delegate nur die beiden Objekte Root und das delegierte Objekt), mit dem Sie das Instruction Set aufgerufen haben, kann verändert werden kann. Die hinzugeladenen Objekte stehen nur lesend zur Verfügung.


Anmerkung: In Processes können Sie lokale Variable zur Zwischenspeicherung von Ergebnissen im Instruction Set definieren.

Sourcen

Das Instruction Set stellt das Objekt, aus dessen Change, Create oder Stage Activity es aufgerufen wurde, als Source bereit. Das bedeutet, dass das Instruction Set beispielsweise bei der Aktivität Erzeuge Produkt das Produkt als hlObj (inkl. ODEs und Attribute) zugreifbar macht.
  1. Ö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).

  2. Fügen Sie ein weiteres Objekt als Source über die Schaltfläche AddSource HL Object hinzu.

  3. Wählen Sie im Dialog Browse and Select a .NET Typeden gewünschten Objekttyp aus.

  4. Bestätigen Sie die Auswahl mit OK.
    Der Dialog wird geschlossen, das Source-Objekt steht zur Verfügung.
  5. 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

Das Kopieren von Werten von einem Attribut in ein anderes kann an unterschiedlichen Stellen im Workflow gebraucht werden. Unabhängig davon, in welcher Aktivität das Instruction Set aufgerufen wird, funktioniert das Kopieren von Werten immer gleich.

Anmerkung: Ein ausführliches Beispiel, wie Sie einen Wert von einem Objekt in ein anderes kopieren, finden Sie im Abschnitt Anweisungen für den neu erstellten Vorgang: Instructions.
Anmerkung: Ein lesender Zugriff auf verschlüsselte Attribute ist nicht möglich.
  1. Definieren Sie falls nötig ein weiteres Objekt als Source.
  2. Bestimmen Sie das Attribut, IN welches kopiert werden soll.
  3. Bestimmen Sie das Attribut, AUS dem der Wert übernommen werden soll.
  4. Kopieren Sie den Wert über die Funktion Assignemnt > abc.
  5. Wählen Sie im folgenden Dialog Property.
  6. Bestätigen Sie mit OK.

Setzen von Werten

Das Setzen von Werten wird an vielen unterschiedlichen Stellen des Workflows verwendet, und funktioniert immer auf die gleiche Weise.
  1. Bestimmen Sie das Attribut, dessen Wert Sie setzen wollen.
  2. Setzen Sie den Wert entweder über die Auswahl in einem Drop-down-Menü oder über eine Eingabe.
Beispiel:
Definieren Sie für den initialen Vorgang eines Workflows - die Activate Activity - einen Betrefftext und setzten Sie Priorität des Vorgangs auf hoch.
  1. Ziehen Sie das Symbol für Text in den Arbeitsbereich des Instruction Sets.

  2. Öffnen Sie den Dialog zur Eingabe des Textes und geben Sie den Text an.

  3. Bestätigen Sie mit OK damit das so definierte Statement im Arbeitsbereich des Instruction Sets angezeigt wird.

  4. Fügen Sie das Icon zum Setzen von Werten erneut ein, um die Priorität zu setzen.

  5. Bestätigen Sie mit OK damit beide Statements im Arbeitsbereich des Instruction Sets angezeigt werden.

Setzen von Werten - Sonderfall zusammengesetzte Attribute

Einen Spezialfall der Wertezuweisung stellen zusammengesetzte Attribute dar. Hier als Beispiel das Setzen eines Währungsbetrages in einem Vertrag, der sich aus dem Betrag selbst und der Währungseinheit zusammensetzt (CURRENCY_VALUE und CURRENCY_SYMBOL). Der komplette Attributpfad lautet:

AccountingDetail.PurchasePrice.CURRENCY_VALUE und

AccountingDetail.PurchaseRate.CURRENCY_SYMBOL
Anmerkung: Ob Sie den Währungsbetrag mit Punkt oder Komma für die Nachkommastellen eingeben, richtet sich nach den Einstellungen Ihres Betriebssystems.

Gehen Sie wie folgt vor.

  1. Da zusammengesetzte Attribute gleichzeitig gesetzt werden, wählen Sie PurchasePrice.

  2. Geben Sie im Enter Value-Dialog den Währungsbetrag und das Währungssymbol durch einen Blank getrennt ein.

Die entsprechende Instruction wird aufgelistet.

Zurücksetzen von List-Attributen

Für die Belegung von Listenattributen ist auch ein Zurücksetzen vorgesehen.

  1. Öffnen Sie den Dialog zur Eingabe eines Wertes.
  2. Wählen Sie den Wert none, der für List-Attribute als zusätzlicher Wert verfügbar ist.
  3. Bestätigen Sie mit OK.

Werte aneinander hängen

Für Konstruktionen, wie beispielsweise den OverviewText, bietet es sich an, an ein Text-Attribut einen Wert (Text) oder den Inhalt eines anderen Attributs anzuhängen.

  1. Ziehen Sie das Icon für den Wert auf die Arbeitsfläche.
  2. Geben Sie das Ziel-Attribut bekannt.
  3. Bestimmen Sie, ob ein Wert angehängt werden soll, oder der Inhalt eines anderen Attributs.
  4. Fügen Sie eine weitere Source hinzu.
  5. 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

Wenn ein Vorgang zur weiteren Bearbeitung in eine weitere Queue geroutet wird, soll eine Service-Einheit (SU) angehängt werden.

  1. Wählen Sie in der Start-Strategie der StageActivity die Strategie StageBeginUpdate.
  2. Greifen Sie durch BeginInstructions auf das InstructionSet zu.
  3. 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

Mit dieser Funktion wird eine neue Service-Einheit an den Vorgang gehängt und zudem die Anfrager-Assoziationen (Customer2Case und Product2Case) aus der vorletzten Service-Einheit übernommen.

AppendMultipletreeItem

Fügen Sie den Wert eines MultipleTreeItems - beispielsweise einen Schlagwortbaums - an.

  1. Ziehen Sie das Symbol für das MultipleTreeItem aus der Gruppe Mutiples in den Arbeitsbereich.
  2. Verfolgen Sie das Objektmodell bis zum Attribut Keyword und markieren das Attribut Keyword.
  3. Bestätigen Sie mit OK.
  4. Wählen Sie das gewünschte Schlagwort.
  5. Bestätigen Sie mit OK.

DeleteMultipletreeItem

Um alle Attribute - beispielsweise des Schlagwortbaumes - zu löschen, verwenden Sie die Funktion MTree(x).
Anmerkung: In fast allen Vorgangsobjekten ist das Schlagwort ein Pflichtattribut. Wenn Sie das Schlagwort löschen, können Sie diese Vorgänge nicht mehr speichern.

AppendMulitpleCompoundItem

MultiCompound-Einträge werden folgendermaßen hinzugefügt. Das Beispiel zeigt das Anhängen und Füllen einer weiteren E-Mail-Adresse an das Attribut PersonCommunication.PersonEmail.

  1. Ziehen Sie das Symbol für MCompound(+) in den Arbeitsbereich. Sprechen Sie den neuen (leeren) multiplen Eintrag über Last an.
  2. Füllen Sie das leere Compound-Attribut mit Werten.
  3. Wählen Sie das gewünscht MultiplCompound-Attribut.
  4. Geben Sie für jedes Unterattribut das gefüllt werden soll einen Wert (Value=) oder ein zu kopierendes Attribut (Property) an.

Associations - Assoziationen erzeugen

Im Instruction Set befindet sich die Gruppe Associations, in der die Instructions zur Erstellung unterschiedlicher Assoziationen aufgelistet sind.
Es gibt drei Typen von Assoziationen:
  • 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

Erstellung einer Assoziation Person2Organization - ein Kontakt wird einer Organsiationseinheit (Firma) zugeordnet.
  1. Rufen Sie das Instruction Set einer Firma auf.
    Das Objekt ist als hlObj enthalten.

  2. Bestimmen Sie als Source zusätzlich den Objekt-Typ Contact.

    Beide Objekte sind im Instruction Set verfügbar.

  3. Ziehen Sie das Symbol zur Erstellung der Assoziation in den Arbeitsbereich.

  4. Wählen Sie hier unter hlObj die Associations (hier Person2Organiszation), die Rolle B und schließlich die ContactList.
  5. 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.

  6. 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

Der Anfrager (ein Workflow-Objekt) und ein Produkt werden in der Begin-Phase einer StageActivity gesetzt - d. h. zum Vorgang assoziiert.
  1. Fügen Sie den Anfrage (Kontakt) und das Produkt (Computer) als Sourcem im Instruction Set ein.

  2. Ziehen Sie das Symbol für AssociateSUCaller in den ARbeitsbereich und wählen Sie AssociateSUCaller > hlObj > ServiceUnits > Last und bestätigen Sie mit OK.

  3. Wählen Sie im folgenden Dialog das Objet Contact und bestätigen mit OK.

    Die Instruction wird im Arbeitsbereich angezeigt.

  4. 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.

  5. Bestätigen Sie die Erstellung des Instructions Sets mit OK.
  6. 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.
  7. 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

In diesem Bereich stehen vorgefertigte Methoden-Aufrufe zur Verfügung: APIMethoden und StaticMethoden.
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.
  1. Ziehen Sie das Symbol der StaticMethod in den Arbeitsbereich des Instruction Sets.
  2. Wählen Sie eine Methode aus.

ThrowException

ThrowExeption ermöglicht das Auslösen einer Ausnahme des festgelegten Typs. Ein Verwenden dieser Instruction entspricht einem Codehandler, der die Ausnahme im Benutzercode auslöst. Die beispielhafte Instruction entspricht einem deklarativen Weg zum Auslösen einer .NET-Ausnahme.

Nach dem Einfügen der ThrowException in den Arbeitsbereich des InstructionSets wird der

  1. Ziehen Sie das Symbol der ThrowException in den Arbeitsbereich des InstructionSets.
    Der Dialog zur Auswahl des Exception-Typs wird eingeblendet.
  2. Geben Sie den Text für die Exception ein.

Instructions anordnen/verschieben

Da die Reihenfolge von Instructions wichtig ist, kann es nötig sein, Instructions zu verschieben.

  1. Öffnen Sie den Arbeitsbereich des InstructionSets.
  2. Wählen Sie eine Instruction mit der Maus.
  3. Verschieben Sie die Instruction an die gewünschte Stelle.

Zugriff auf Textvorlagen im Instruction Set

Bei der Verwendung der Mail- und Approvement-Activies werden Sie durch einen Assistenten bei der Bestimmung der zu benutzenden Textvorlage unterstützt. Hierbei wird für diese Aktivitäten jeweils ein eigenes Instruction Set erzeugt. Dieses können Sie nachträglich bearbeiten, d. h. Sie können die gewählte Textvorlage im Instruction Set löschen und über die Funktion UseTextTemplate eine andere auswählen.

Zugriff auf erweiterte Eigenschaften der Bestellung im Instruction Set

Um innerhalb eines Instruction Sets auf Eigenschaften der Bestellung zugreifen zu können, stehen folgende Instructions zur Verfügung:
Instruction – Calculate Order (Gruppe OrderManagement)
Diese Instruction gibt den Gesamtpreis einer Bestellung zurück.
Sie benötigt keine Parameter und ihr Rückgabewert muss einem Currency-Attribut (Compound) zugeordnet werden.
Instruction – Load Order (Gruppe OrderManagement)
Diese Instruction lädt die Informationen einer Bestellung.
Diese Instruction benötigt keine Parameter und wird in einer Variablen gespeichert. Um die Positionen der Bestellung zu laden, iteriert man über die Property Items. Jedes OrderItem (Position) enthält die Menge (Quantity) als Ganzzahl und die ID des jeweiligen Produkts (Guid).
Instruction – Load Product (Gruppe OrderManagement)
Diese Instruction lädt die Informationen eines Produkts.
Sie benötigt als Parameter die ID (Guid). Diese kann aus einem OrderItem (Position einer Bestellung) entnommen werden. Das Produkt wird in einer Variablen gespeichert.
Instruction – Load Feature (Gruppe OrderManagement)
Diese Instruction lädt die Informationen eines Features.
Sie benötigt als Parameter die ID (Guid). Diese kann aus der FeatureSelection (Auswahl eines Features), welche in jeder Position einer Bestellung gesetzt ist, entnommen werden. Das Feature wird in einer Variablen gespeichert.

Definition von lokalen Variablen im Instruction Set

Zur Definition bzw. Deklaration einer lokalen Variablen im Instruction Set verwenden Sie das Variablen-Symbol.

  1. Ziehen Sie das Symbol für die Variable in das Instruction Set.
  2. Definieren Sie den Datentyp.
    Die Variable kann jetzt bei Zuweisungen sowohl als Source als auch als Destination verwendet werden.

ForEach-Schleife im InstructionSet

Wie Sie ForEach-Schleifen im InstructionSet verwenden können, erfahren Sie im folgenden Abschnitt.
  1. Ziehen Sie das Symbol für das For/Each-Element in das Instruction Set.
  2. 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.
  3. 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.

  4. 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.

  5. Weisen Sie die Destination über Property zu.
  6. Wechseln Sie nun als Source/Quelle zu dem vorhin erzeugten Zwischenobjekt su, der die Service-Einheiten-Attribute des Incidents repräsentiert.
  7. Suchen Sie den Description-Text.

Die Diagnose-Texte aus den Service-Einheiten werden nun aneinandergehängt und in den Betreff-Text geschrieben.

Fehlerhafte Instruction Sets

Durch die Verwendung des Wizards für die Belegung der Approvement- oder –Mail-Properties kann es bei Abbruch des Wizards dazu kommen, dass fehlerhafte bzw. unvollständige Instruction Sets entstehen.

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

Nicht nur auf Workflow-Ebene (in Form der Evaluate-Aktivität) sondern auch auf Ebene des Instruction Sets können Sie bedingte Anweisungen einfügen.
Anmerkung: Bedenken Sie, dass der Workflow unübersichtlich wird, wenn Sie IfElse-Bedingungen innerhalb eines Instruction Sets verwenden! Verwenden Sie daher sprechende Name für das Instruction Set.
  1. Ziehen Sie dazu die Funktion IfElse in den Arbeitsbereich.

    Der Condition Editor zur Eingabe der Bedingung wird geöffnet.
  2. Fügen Sie, Sie ein Objekt-Attribut (Compare Instance Member) oder eine Variable (Compare Static Member) als Bedingung ein.

  3. Wählen Sie ein Attribut, beispielsweise die Priorität der Bedingung.

  4. Entscheiden Sie, ob der Wert aus einem anderen Attribut (Instance data/Property) oder aus dem Attribut-Wert ) bezogen werden soll.

  5. 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.

  6. Löschen oder verschieben Sie Bedingungen über das Menü hinter dem Pfeil am Ende der Zeile.
  7. Beenden Sie den Condition Editor mit OK.
    Im Instruction Set werden die bedingten Verzweigungen eingeblendet.
  8. 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

ForEach-Schleifen werden dazu verwendet, Befehle für eine gewisse Anzahl von Elementen zu durchlaufen; dies können Listenelemente sein oder auch SU-bezogene Attribute.

Hier ein kleines Beispiel, wie mit einer ForEach-Schleife die Tätigkeitsbeschreibungen aller Service-Einheiten aneinandergereiht werden.

  1. Ziehen Sie das ForEach-Symbol in den Arbeitsbereich. Es öffnet sich ein Auswahldialog, in dem Sie das Objekt bestimmen, über welches iteriert wird.

  2. 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.

  3. 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.

  4. Fügen Sie die Aktivität hinzu.
    In nachfolgender Abbildung wurde der SolutionText sukzessive mit den Tätigkeitstexten jeder SU gefüllt.

TryCast

Als Casting im Computerumfeld wird eine Art Typumwandlung verstanden, d. h. eine Spezialisierung von einer groben Definition in eine feinere.

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.
  1. Rufen Sie beispielsweise in einer End-Instruction oder einer Update-Activity das Instruction Set auf, und ziehen die TryCast-Funktion in den Arbeitsbereich.

  2. Wählen Sie das Produkt.

  3. Wählen Sie Namen und Typ der Variablen.

    Die TryCast-Operationen für einen ServerComputer, NotebookComputer und DesktopComputer wuren einfügt.
  4. Tragen Sie nun die letzten Aktionen 1-4 ein, die für den Casting-Fall durchgeführt werden sollen.

TryRelatedObject

In Serviceware Processes steht die Funktion des Process Chaining zur Verfügung. Dies bietet die Möglichkeit, eine Vorgangsverkettung aus der Ribbon Bar eines Vorgangsdialoges zu starten. Hierzu wird im Vorgangsdialog eine Liste von verkettbaren Vorgangstypen und Workflows angegeben, inkl. der Assoziation, die bei der Verkettung benutzt werden soll.

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.

  1. In der Start-Aktivität wählen Sie zunächst als Create-Strategy With Instructions.
    Im Eigenschaftenbereich wird die Eigenschaft CreateObjectInstructions eingefügt.

  2. Ziehen Sie im Instruction Set die TryRelatedObject-Funktion in den Arbeitsbereich.
  3. 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.

  4. 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.

  5. Erstellen Sie ein Default-SLA für den neuen Workflow-Prozess, damit das Objekt gefunden werden kann.

  6. Starten Sie den Workflow als ProcessChaining-Objekt über einen Incident.

UserTextTemplate - Verwendung von Textvorlagen

Diese Funktion liefert zunächst die Auswahl aller Textvorlagen der geladenen Projekte.

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.

  1. Bestimmen Sie die gewünschte Textvorlage.

  2. Wählen Sie im Instruction Set einer Mail-Activity die Destination body, die genau dem Typ ITemplate entspricht.

    Die Zuweisung wurde vorgenommen.

GetTemplateText

Diese Funktion kann eine Textvorlage formatiert oder unformatiert in den Typ String umwandeln, um den Inhalt dieser Textvorlage in ein Attribut vom Typ String schreiben zu können (beispielsweise DescriptionText, Betreff in der richtigen Sprache – ausgehend von der Textvorlage).
Im nachfolgenden Beispiel schreiben wir den Text einer Textvorlage, die als Projekt schon geladen ist, in den DescriptionText eines Vorgangs.
Anmerkung: Formatierten Text können Sie nur in sogenannte ComplexText-Attribute schreiben. Hierbei bleiben auch Grafiken und Links erhalten.
  1. Ziehen Sie die Funktion GetTextTemplate in den Arbeitsbereich des Instruction Sets.
  2. Wählen Sie eine Textvorlage und entscheiden, ob der Text formatiert oder unformatiert übernommen werden soll.

  3. 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.
  4. Wählen Sie, in welches Attribut der Inhalt der Textvorlage geschrieben werden soll.

  5. Wählen Sie bei mehrsprachigen Textvorlagen die Sprache aus. Die Information kann aus dem Anfrager oder dem Owner bezogen werden.

  6. Verknüpfen Sie die Quellen, wenn Ihre Textvorlage Objekte referenziert.

Der Vorlagentext wurde in die Textvorlage geschrieben.

Suchen

Im Activity Designer für Code-Projekte (API-Projekte) können einfach Suchen für Produkte, Personen und Organisationen vordefiniert werden (siehe Abschnitt Vordefinieren von Suchen). Im Instruction Set können diese (sofern ein entsprechendes Projekt referenziert ist) angewendet werden.
Anmerkung: Sie können Suchen für Objekttypen verwenden, die nicht mit dem Objekttyp des Instruction Sets übereinstimmen!
  1. Ziehen Sie die Suche in den Arbeitsbereich des Instruction Sets.

  2. 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:
    True: Es existiert (mindestens) ein Objekt, auf welches die Suchbedingung zutrifft.
    False: Es existiert KEIN Objekt, auf das die Suchbedingung zutrifft.
  3. Geben Sie - je nach Suchtyp - den Namen der Ergebnisvariable ein, die das Ergebnis speichert.

  4. 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.

  5. 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,
    1. das einzelne gefunden Objekt assoziieren,
    2. das Bool’sche Ergebnis der Suche Existiert ein Objekt für eine IF-Abfrage verwenden,
    3. die Liste der gefundenen Objekte innerhalb einer For-Each-Schleife (siehe nachfolgendes Beispiel) verwenden.

      Innerhalb eines Update-Instruction Set eines Incidents werden die ersten 5 Notebook Computer gesucht und in der Variablen MehrereLappies gespeichert.

      Danach wird für jedes dieser Notebooks in einer For-Each-Schleife die Assoziation (AffectedItems2Incident) zum aktuellen „hlobj“, also hier dem Incident, erzeugt.