WMS Einstellung: IWmsActivitySettingWithMapping

Beschreibung

Mit dem Interface „IWmsActivitySettingWithMapping“ kann der WMS-Benutzer zu einer Einstellung Zuordnugnen anlegen. 

Verwenden Sie zusätzlich das Interface „IWmsActivitySettingWithMapping“ in Ihrer Implementierung von IWmsActivitySetting.

 

Häufige Anwendungsfälle:

  • Im Workflow muss mit Daten (i.d.R. mit IDs) aus dem Drittsystem gearbeitet werden. Um zu vermeiden, dass der WMS Benutzer die IDs kennen und in Ihre Aktivität eintragen muss sind Zuordnugnen notwendig

Aufbau der Interfaces

IWmsActivitySettingWithMapping

Das Interface dient nur der Verbindnung Ihrer WMS Einstellung: IWmsActivitySetting zu der Mapping-Implementierung

Eigenschaft / Methode

Beschreibung

Eigenschaft / Methode

Beschreibung

Type WmsMappingType

Typ der Klasse die das Interface WMS Einstellung: IWmsActivitySettingWithMapping#IWmsMapping implementiert

IWmsMapping

Das Interface dient der Implementierung des Mapping-Controls (Beispiel: Zuordnungen#DMS)

Eigenschaft / Methode

Beschreibung

Eigenschaft / Methode

Beschreibung

Type[] VariableTypes

Typen der zu erstellenden Variablen (muss IWmsMappingObject implementieren)

UserControl Content

Inhalt (GUI), der im Menü "Zuordnugnen" angezeigt werden soll.

bool Initialise(setting, variables)

Methode, die einmalig beim Laden der GUI aufgerufen wird.
settings: Wert aus der dazugehörigen Einstellung
variables: Liste der bereits existierenden Variablen aus dem Workflow

Ab WMS 1.1.2 Damit Sie Zugriff auf den Wert der Einstellung haben, ruft das WMS vor dieser Methode IWmsActivitySetting.Initialise(value) auf.

IEnumerable<WmsMappingVariable> GetMappingVariables()

Methode, die aktuellen Werte der Mappings liefert, welche als Variable angelegt werden sollen.

string GetCloseConfirmMessage()

Methode, die eine Meldung zurückgibt, wenn der Dialog mit den Mappings geschlossen wird. Sie können auch nur null oder einen Leerstring liefern, wenn Sie diese Funktion nicht benötigen.

IWmsMappingObject

Diese Interface beschreibt den Typ der Variable, die das Mapping anlegen soll. 

Eigenschaft / Methode

Beschreibung

Eigenschaft / Methode

Beschreibung

Name

Name des Objects aus dem Drittssystem, um das Element zu identifizieren und bei Bedarf einen Datenabgleich durchzuführen

Beispiel 

Implementierung IWmsActivitySettingWithMapping

Beispiel IWmsActivitySettingWithMapping
using System; using System.ComponentModel; using System.Windows.Controls; using Accantum.Wms.ActivityContracts.Mappings; using Accantum.Wms.ActivityContracts.Settings; namespace ActivitySample.Activities.ActivityWithMappings.MySettingWithMappings { public class MySettingWithMappings: IWmsActivitySetting, IWmsActivitySettingWithMapping { //... Die Implementierungsdetails zu IWmsActivitySetting unterscheiden sich nicht. Sie finden Sie im Beispiel zu IWmsActivitySetting //Typ der das Interface IWmsMapping implementiert public Type WmsMappingType => typeof(MyMappingImpl); } }

Implementierung IWmsMapping

Beispiel IWmsMapping
using System.ComponentModel; using Accantum.Wms.ActivityContracts.Mappings; using Accantum.Wms.ActivityContracts.Settings; namespace ActivitySample.Activities.ActivityWithMappings.MyMapping { public class MyMappingImpl : IWmsMapping { /// <summary> /// Variable-Typen, die dieses Mapping anlegt, verwaltet und löscht /// Die Variablen, die angelegt werden, sind von diesem Typ /// </summary> public Type[] VariableTypes => new Type[] { typeof(MyMappingVariableType) }; /// <summary> /// Die Oberfläche zur Anzeige der Variablen und Zuordnungen /// </summary> public UserControl Content { get; private set; } /// <summary> /// Initialisiert die Ansicht und die Daten für die Zuordungen /// </summary> /// <param name="a_oSetting"> /// Die Einstellung, die zu diesen Mappings gehören (hier vom Typ MySettingWithMappings) /// </param> /// <param name="mappingVariables">List mit Variablen aus dem Workflow</param> public bool Initialise(IWmsActivitySetting setting, IEnumerable<WmsMappingVariable> mappingVariables) { var viewModel = new MyMappingControlViewModel(mappingVariables); Content = new MyMappingControl(viewModel); return true; } /// <summary> /// Ermittelt die Variablen, die in der Oberfläche ausgewählt wurden. /// Diese Variablen werden schließlich im Worklfow angelegt, alle anderen von diesem Typ werden gelöscht /// </summary> /// <returns>List der anzulegenden Variablen</returns> public IEnumerable<WmsMappingVariable> GetMappingVariables() { //Nur weiterleiten an das ViewModel if (!(Content?.DataContext is MyMappingControlViewModel viewModel)) return new List<WmsMappingVariable>(); return viewModel.GetMappingVariables(); } /// <summary> /// Methode, die eine Meldung zurückgibt, wenn der Dialog mit den Mappings geschlossen wird. /// Wenn leer oder null, wird kein Dialog angezeigt /// </summary> /// <param name="selectedVariables">die ausgewählten Variablen</param> /// <returns></returns> public string GetCloseConfirmMessage(IEnumerable<WmsMappingVariable> selectedVariables) { //Nur weiterleiten an das ViewModel if (!(Content?.DataContext is MyMappingControlViewModel viewModel)) return null; return viewModel.GetCloseConfirmMessage(selectedVariables); } } }

Implementierung Mapping-Oberfläche

Beispiel Mapping Control
<UserControl x:Class="ActivitySample.Activities.ActivityWithMappings.MyMapping.MyMappingControl" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:myMapping="clr-namespace:ActivitySample.Activities.ActivityWithMappings.MyMapping" mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800" d:DataContext="{d:DesignInstance myMapping:MyMappingControlViewModel}"> <Grid Margin="10"> <DataGrid ItemsSource="{Binding Items}" CanUserAddRows="False" CanUserDeleteRows="False" CanUserSortColumns="True" AutoGenerateColumns="False"> <!--SelectedItems="{Binding SelectedItems}" geht nicht so einfach-> da wäre ein Behaviour notwendig--> <DataGrid.Columns> <DataGridCheckBoxColumn Header="" Binding="{Binding IsSelected, Mode=TwoWay}"/> <DataGridTextColumn Header="Name" Binding="{Binding Name}" IsReadOnly="True"/> <DataGridTextColumn Header="ID" Binding="{Binding Id}" IsReadOnly="True"/> <DataGridTextColumn Header="Variable" Binding="{Binding VariableName}" IsReadOnly="False"/> <DataGridTextColumn Header="Kommentar" Binding="{Binding Comment}" IsReadOnly="False"/> </DataGrid.Columns> </DataGrid> </Grid> </UserControl>



Beispiel Mapping Control ViewModel

Implementierung IWmsMappingObject

Implementierung zu IWmsMappingObject

Verwendung in der Aktivität

Beispiel zur Verwendung in der Aktivität




Weitere nützliche Funktionen

Methoden, die Sie in Ihren Mappings benötigen könnten