Automatisches Anlegen von Variable

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.

Es gibt mit der WmsActivityContracts Methoden, die das anlegen einer Variable vereinfachen. Folgende Fälle sind dabei zu unterscheiden:

  • Beim Hinzufügen der Aktivität automatisch eine Variable anlegen

  • ab WMS 1.1.4 Per Knopfdruck eine Variable anlegen

  • ab WMS 1.1.4 Für den Ausdruckseditor einen Standard-Namen vorbelegen, damit der Nutzer dort schnell eine Variable anlegen kann

Automatisch bei Hinzufügen der Aktivität

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)

    C# Aktivität

    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. Überschreiben Sie dazu die Methode "OnModelItemChanged" dens ActivityDesigners in der CodeBehind.

    C# Designer - Codebehind

    protected override void 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); }

Per Knopfdruck (AddVariableButton) ab WMS 1.1.4

Beschreibung des Controls

Das Control “AddVariableButton” erstellt bei Klick eine Variable des Typs der angegeben Eigenschaft. Als Name wird der aktuelle Ausdruck verwendet (sofern es ein gültiger Variablenname ist).

Eigenschaft

Beschreibung

Eigenschaft

Beschreibung

PathToArgument

Name der Eigenschaft in der Aktivität, für die die Variable angelegt und gesetzt werden soll.
(Anhand dessen wird der Typ der Variable ermittelt)

ModelItem

Die Aktivität (i.d.R. die Eigenschaft ModelItem aus dem ActivityDesigner)

DefaultVariableName

(optional) Name der Variable, der verwendet werden soll, wenn der Ausdruck leer ist. Wenn nicht angegeben, kann nur eine Variable erstellt werden, wenn ein Ausdruck angegeben ist.

Beispiel

Designer - XAML

Hier ist der Button neben einer Expressiontextbox mit einem OutArgument<List<WmsTaskComment>> eingefügt.

<DockPanel Grid.Column="1" Grid.Row="4"> <controls:AddVariableButton DockPanel.Dock="Right" PathToArgument="CommentList" ModelItem="{Binding ModelItem}" DefaultVariableName="{x:Static workflow:WmsVariableNames.WmsCommentList}"/> <sapv:ExpressionTextBox OwnerActivity="{Binding ModelItem}" UseLocationExpression="True" PathToArgument="CommentList" Expression="{Binding ModelItem.CommentList, Mode=TwoWay, Converter={StaticResource ArgumentToExpressionConverter}, ConverterParameter=Out}" ExpressionType="{extensions:GenericType BaseTypeName=System.Collections.Generic.List, ArgumentType1=portal:WmsTaskComment}"/> </DockPanel>

 

Aussehen im WMS Studio

Der Anwender träge einen (noch nicht vorhandenen) Variablennamen ein. Mit Klicka auf + kann er die Variable anlegen, ohne in die Variablenliste zu wechseln.

ExpressionTextbox mit AddVariableButton

Ist das Eingabefeld noch leer, kann der Benutzer ebenfalls das “+” klicken. Dann wird der DefaultVariableName verwenden (sofern vorhanden).

Variablenamen für den Ausdruckseditor ab WMS 1.1.4

Mit der 1.1.4 hat der Anwender die Möglichkeit im https://accantum.atlassian.net/wiki/spaces/APM2019DE/pages/160827599 eine passende Variable anzulegen.

Das funktioniert, ohne dass eine Anpassung Ihrer externen Aktivität notwendig ist.

Sie können dem Anwender aber ggf Tipparbeit ersparen, wenn Sie den Variablenamen vorbelegen. Nutzen Sie dazu die Eigenschaft "PathToArgument" im Designer und das "DefaultVariableName" in der Aktivitätsklassen.

Beispiel

 

Ausdruckeditor im WMS 1.1.4