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 2 Nächste Version anzeigen »

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:

  1. 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; }
  2. 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">
  3. 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"));
            }
  • Keine Stichwörter