Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

...

  1. Die Aktivität muss das Interface " Accantum.Wms.ActivityContracts.IAutoCreateVariables"  implementieren
    (so wird gespeichert, ob die Variable bereits erstellt wurde)

    Codeblock
    languagec#
    titleC# Aktivität
    linenumberstrue
    collapsetrue
    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 Überschreiben Sie dazu eine "Loaded" und "Unloaded" Methode ein:

    Codeblock
    languagexml
    titleC# Designer
    linenumberstrue
    collapsetrue
    <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 CodeBehinddie Methode "OnModelItemChanged" dens ActivityDesigners in der CodeBehind.

    Codeblock
    languagec#
    titleC# Designer - Codebehind
    linenumberstrue
    collapsetrue
            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 eprotected override void OnModelItemChanged(OnModelItemChanged(object newItem)
            {
    			//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"));
    
    			base.OnModelItemChanged(newItem);
            }