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?
- CodeActivity
- NativeActivity, wenn einer dieser Punkte zutrifft:
- Die Aktivität soll den Workflow pausieren
- Die Aktivität kann weitere "Unteraktivitäten" enthalten (wie z.B. ForEach-Aktivität)
(Link zu einem Beispiel von Microsoft)
- AsyncCodeActivity: Zur asynchronen Ausführung von Aktivitäten (Details in der Microsoft Dokumentation)
Codeblock | ||||||
---|---|---|---|---|---|---|
| ||||||
public Activity 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
Codeblock | ||||||
---|---|---|---|---|---|---|
| ||||||
public Activity HelloWorldActivity: CodeActivity
{
protected override void CacheMetadata(CodeActivityMetadata a_oMetadata)
{
//Zusätzliche Validierungen
base.CacheMetadata(a_oMetadata);
}
protected override void Execute(CodeActivityContext a_oContext)
{
//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.
Wann verwende ich "InArgument" bzw. "OutArgument" und wann nicht?
Argumente (In, Out und InOut) erlauben dem Anwender im Workflow Designer VisualBasic-Ausdrücke des angegeben Typen einzutragen.
- InArgument: Ein eingehendes Argument.
- OutAgument: Ein 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 ein normales Property des gewünschten Typen hinzuzufügen (Zeile 5 im Beispiel rechts)
Codeblock | ||||||
---|---|---|---|---|---|---|
| ||||||
public Activity HelloWorldActivity: CodeActivity
{
public InArgument<string> StringArgument { get; set; }
public bool BoolProperty { get; set; }
public OutArgument<string> Result { get; set; }
}
|