Automatisch bei Hinzufügen der Aktivität
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)C# Aktivität
Codeblock language c#
...
...
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.
...
Überschreiben Sie dazu
...
die Methode "
...
language | xml |
---|---|
title | C# Designer |
linenumbers | true |
collapse | true |
...
OnModelItemChanged" dens ActivityDesigners in der CodeBehind.
C# Designer - Codebehind
Codeblock language c# 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);
...
Die Implementierung der Methoden finden Sie in der CodeBehind
...
language | c# |
---|---|
title | C# Designer - Codebehind |
linenumbers | true |
collapse | true |
...
}
Per Knopfdruck (AddVariableButton)
Status | ||||
---|---|---|---|---|
|
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 |
---|---|
PathToArgument | Name der Eigenschaft in der Aktivität, für die die Variable angelegt und gesetzt werden soll. |
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.
Codeblock | ||
---|---|---|
| ||
<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.
Ist das Eingabefeld noch leer, kann der Benutzer ebenfalls das “+” klicken. Dann wird der DefaultVariableName verwenden (sofern vorhanden).
Variablenamen für den Ausdruckseditor
Status | ||||
---|---|---|---|---|
|
Mit der 1.1.4 hat der Anwender die Möglichkeit im Ausdruckseditor eine passende Variable anzulegen.
Tipp |
---|
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
Codeblock | ||
---|---|---|
| ||
<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}"/> |
Codeblock | ||
---|---|---|
| ||
[DefaultVariableName(WmsVariableNames.WmsCommentList)]
public OutArgument<List<WmsTaskComment>> CommentList { get; set; } |