...
Die Aktivität muss das Interface " Accantum.Wms.ActivityContracts.IAutoCreateVariables" implementieren
(so wird gespeichert, ob die Variable bereits erstellt wurde)Codeblock language c# title C# Aktivität linenumbers true collapse true public class MyActivity : WmsCodeActivity, IAutoCreateVariables { /// <summary> ///Kennzeichen, ob durch die Aktivität bereits automatisch eine Variable angelegt wurde (<see cref="IAutoCreateVariables"/>) /// </summary> [Browsable(false)] [ExcludeInAnnotation] public bool VariableCreated { get; set; } public OutArgument<List<WmsFileInfo>> MyActivityResult { get; set; }
Die Variable selbst wird im Designer erzeugt. Fügen Sie dazu eine "Loaded" und "Unloaded" Methode ein:
Codeblock language xml title C# Designer linenumbers true collapse true <sap:ActivityDesigner x:Class="ActivitySample.Activities.MyActivity.V01.MyActivityDesigner" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Loaded="MyActivity_OnLoaded" Unloaded="MyActivity_OnUnloaded">
Die Implementierung der Methoden finden Sie in der CodeBehind
Codeblock language c# title C# Designer - Codebehind linenumbers true collapse true private void MyActivity_OnLoaded(object a_oSender, RoutedEventArgs a_oArgs) { //So könnte man auf Änderungen in der Aktivität reagieren ModelItem.PropertyChanged += OnModelItemOnPropertyChanged; } private void MyActivity_OnUnloaded(object a_oSender, RoutedEventArgs a_oArgs) { if (ModelItem != null) ModelItem.PropertyChanged -= OnModelItemOnPropertyChanged; } private void OnModelItemOnPropertyChanged(object sender, PropertyChangedEventArgs e) { //Eigenschaft finden, der die Variabel zugewiesen werden soll: ModelProperty oResultProp = ModelItem.Properties[nameof(MyActivity.MyActivityResult]; //Methode aus der WmsActivityContracts (Namespace "Accantum.Wms.ActivityContracts.Utils") aufrufen, Typ und Name der Variable angeben ModelItem.AddVariableAndAssignByType(oResultProp, new Variable<List<WmsFileInfo>>("aoFileInfos")); }