IWmsDesignerImportService - Import automatisch anlegen

Import (oder “usings” im C#) sind notwendig, damit Variablentypen im Workflow Designer gefunden werden. Es kann vorkommen, dass Sie im Workflows Imports hinzufügen müssen, wenn z.B. die Typen von in einer anderen dll sind und nicht automatisch hinzugefügt werden.

Dazu können Sie das Interface IWmsDesignerImportService nutzen. Gehen Sie wie folgt vor:

In der Codebehind des Designers:

  • Überschreiben Sie die Methode “OnModelItemChanged(object a_newItem)
    Diese Methode wird immer aufgerufen, sobald die Aktivität hinzugefügt oder geöffnet wird.

  • Falls noch nicht eingebunden: Fügen Sie eine Referenz zur WmsActivityContracts.dll hinzu

  • Ermitteln über das ModelItem Sie das Service-Interface “IWmsDesignerImportService”

  • Rufen Sie die Methode AddImportType auf und geben Sie alle Typen an, zu denen der Import angelegt werden soll.

Beispiel:

protected override void OnModelItemChanged(object a_oNewItem) { EditingContext editingContext = ModelItem.GetEditingContext(); IWmsDesignerImportService importService = editingContext.Services.GetService<IWmsDesignerImportService>(); importService.AddImportType(typeof(MyType)); }

 

Der Import wird nur hinzugefügt, wenn er noch nicht vorhanden ist.

Fehler in der 1.1.3: Der Import wird korrekt angelegt. Der Workflow zeigt aber einen Fehler an (Ursache ist die IntelliSense). Der Workflow ist trotz des Fehlers lauffähig und sobald man den Workflow neu öffnet, ist der Fehler behoben.

Das Interface “IWmsDesignerImportService”:

namespace Accantum.Wms.ActivityContracts { /// <summary> /// Diese Schnittstelle ermöglicht es Aktivitäten bzw ihren Designern Namespace-Importe hinzuzufügen, damit /// der Anwender Variablen dieser Typen anlegen und verwenden kann. /// </summary> public interface IWmsDesignerImportService { /// <summary> /// Importiert die Namespaces der angegeben Typen in den Worklfow Designer, um diese Typen im Designer verwenden zu können /// Voraussetzung: die Assembly der angegebenen Typen muss dem WMS bekannt sein (d.h. sie muss in der ActivityPackageInfo.xml angegeben sein.) /// </summary> /// <param name="a_typeToImport">Typen, deren Namespaces importiert werden sollen</param> void AddImportType(params Type[] a_typeToImport); }