Fügen Sie Ihrem Projekt eine neue Klasse hinzu und benennen passend und eiten Sie von einer Aktivitätsklasse ab (CodeActivity, NativeActivity, AsyncActivity).
using System.Activities; public class HelloWorldActivity: WmsCodeActivity { } |
using System.Activities; public class HelloWorldActivity: WmsCodeActivity { 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 } } |
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.
Argumente (In, Out und InOut) erlauben dem Anwender im Workflow Designer VisualBasic-Ausdrücke des angegeben Typen einzutragen.
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)
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.
using System.Activities; public class HelloWorldActivity: WmsCodeActivity { 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); } } |