Bei komplexen Typen kann es für den Anwender nützlich sein, wenn die Aktivität automatisch eine Variable dazu anlegt. So muss der Anwender den Typ (den er erst einmal nicht kennt) nicht umständlich über das "Typ suchen"-Fenster suchen.
Gehen Sie wie folgt vor, wenn Ihre Aktivität eine Variable automatisch anlegen soll:
Die Aktivität muss das Interface " Accantum.Wms.ActivityContracts.IAutoCreateVariables" implementieren
(so wird gespeichert, ob die Variable bereits erstellt wurde)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:
<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
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")); }