Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Sie zeigen eine alte Version dieser Seite an. Zeigen Sie die aktuelle Version an.

Unterschiede anzeigen Seitenhistorie anzeigen

« Vorherige Version anzeigen Version 11 Aktuelle »


Fügen Sie Ihrem Projekt eine neue Klasse hinzu und benennen passend und eiten Sie von einer Aktivitätsklasse ab (CodeActivity, NativeActivity, AsyncActivity).

Von welcher Klasse muss ich ableiten?


Aktivitäts-Klasse
using System.Activities;

public class HelloWorldActivity: CodeActivity 
{
}

Welche Methoden muss ich implementieren?

  • Execute
    Wird ausgeführt, sobald die Aktivität aus einer Workflow-Instanz ausgeführt wird.
  • (optional) CacheMetadata
    Wird vor jeder Ausführung und bei jeder Änderung im Workflow-Designer ausgeführt.
    Hier können Sie Fehler und Warnungen für den Designer ausgeben.
    Solange Fehler vorhanden ist, kann der Workflow nicht gestartet werden
Methoden
using System.Activities;

public class HelloWorldActivity: CodeActivity 
{
    protected override void CacheMetadata(CodeActivityMetadata metadata)
    {
       //Zusätzliche Validierungen
       base.CacheMetadata(metadata);
    }

    protected override void Execute(CodeActivityContext context)
    {
       //Eigentliche Implementierung der Logik und Funktion der Aktivität
    }
}

Wie definiere ich Argumente und Eigenschaften?

Für jede Eigenschaft Ihrer Aktivität (siehe Eigenschaftsfenster) müssen Sie in Ihrer Aktivitäts-Klasse ein Property mit einem getter und einem setter hinzufügen.

Was ist der Unterschied zwischen einem "Argument" und einer "Eigenschaft"?

Argumente (In, Out und InOut) erlauben dem Anwender im Workflow Designer VisualBasic-Ausdrücke des angegeben Typen einzutragen.

  • InArgument: Ein eingehendes Argument.
  • OutAgumentEin ausgehendes Argument (hier kann nur eine Variable eingetragen werden).
  • InOutArgument: Ein Argument, das sowohl eingehen, als auch ausgehend verwendet wird.

Ist kein VisualBasic-Ausdruck nötig (z.B. bei einfachen Option wie in der Dateien ermitteln-Aktivität), reicht es eine normale Eigenschaft (engl. Property) des gewünschten Typen hinzuzufügen (Zeile 5 im Beispiel rechts)

Wie und wann greife ich auf Argumente zu?

Die Inhalte der Argumente können nur in der Execute-Methode verwendet werden, da erst zur Laufzeit bekannt ist, was in einer Variable oder einem anderen VisualBasic-Ausdruck steht. In der  CacheMetadata-Methode können Sie lediglich prüfen, ob der Anwender ein Argument "befüllt" hat. Verwenden Sie zum Ermitteln / Setzen des Wertes eines Arguments die Get bzw. Set-Methode.

Eigenschaften können Sie bereits in der CacheMetadata-Methode verwenden, da hier der Wert bereits zur Design-Zeit bekannt ist.


Argumente / Eigenschaften
using System.Activities;

public class HelloWorldActivity: CodeActivity 
{
    public InArgument<string> StringArgument { get; set; }

    public bool BoolProperty { get; set; }

    public OutArgument<string> Result { get; set; }

    protected override void CacheMetadata(CodeActivityMetadata metadata)
    {
       if (StringArgument?.Expression == null)
           metadata.AddValidationError("Geben Sie einen Wert für StringArgument an.");
    }

    protected override void Execute(CodeActivityContext context)
    {
       string sText = StringArgument.Get(context);

       Result.Set(context, "Hallo " + sText);
    }
}
  • Keine Stichwörter