Versionen im Vergleich

Schlüssel

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

Best Practice

Aktivität

Info
title

Basisklasse

Ableitung einer WMS-Aktivität (siehe Basisklassen für Aktivitäten)

Info
title

Array, List und andere Collections

  • List statt Array: So kann der Anwender einfacher mit der Auflistung weiterarbeiten (z.B. Einträge hinzufügen und entfernen mit den Auflistungs-Aktivitäten)

  • InArgument<ICollection<string>>

    InArgument<ICollection<string>>So bleibt es dem Anwender überlassen, ob er eine Liste oder ein Array angibt

Panel
borderStylesolid
titleInhalt
Inhalt


FAQ

TippViele Fragen und Tipps anderer Entwickler können Sie auch in unserem Forum auf https://forum.accantum.de nachlesen.

Entwicklung

Anforderungen an die Aktivität

Codeblocklanguagec#
title
Aktivität mit Variablen
linenumbers
Codeblock
true
language
collapse
c#
truecode
public class DemoNativeActivity : NativeActivity
{
	public DemoNativeActivity()
	{
		Variables = new Collection<Variable>();
	}

	[Browsable(false), ExcludeInAnnotation]
	public Collection<Variable> Variables { get; }
    
	protected override void CacheMetadata(NativeActivityMetadata metadata)
	{
    		metadata.SetVariablesCollection(Variables);
	        base.CacheMetadata(metadata);
	}
}
  • In welcher Gruppe soll meine Aktivität angezeigt werden?
    Die Gruppe, in der die Aktivität sich befinden soll, definieren Sie über das ActivityGroupAttribute. Gruppen der [accantum] WMS Aktivitäten können Sie verwenden, indem Sie auf die Resources der WmsActivityContracts.dll zugreifen 

Fehlermeldungen der Workflow Engine

  • InvalidOperationException: Das Argument des Typs 'System.String' kann nicht verwendet werden. Stellen Sie sicher, dass es für eine Aktivität deklariert ist.
    Alle Argumente (In oder Out) einer Aktivität müssen in der CacheMetadata-Methode deklariert werden. In der Regel übernimmt das die Basisklasse (CodeActivity bzw. NativeActivity).
    → Stellen Sie sicher, dass Sie in der CacheMetadata-Methode Ihrer Aktivität die BasisKlasse aufrufen.
    → Sie verwenden eine Auflistung an Argumente (z.B. List<InArgument> oder Dicitonary<string, OutArgument>) oder einen komplexen Typ mit weiteren Argumenten? Dann müssen Sie die Argumente selbst deklarieren.


title

languagec#
Aktivität mit einer Liste an Argumenten
linenumbers
Codeblock
true
language
collapse
c#
true
public List<InArgument<string>> ListOfArguments { get; set; }

protected override void CacheMetadata(CodeActivityMetadata metadata)
{
	base.CacheMetadata(metadata);

    //!!! Liste mit Argumenten erst nach base.CacheMetadata setzen, da sie sonst verworfen werden !!!
    int i = 0;
    foreach (var argument in ListOfArguments)
    {
    	//Name muss eindeutig sein
        var argumentName = $"argument{++i}";
        var runtimeArg = new RuntimeArgument(argumentName, typeof(string), ArgumentDirection.In, false);
        metadata.Bind(argument, runtimeArg);
        metadata.AddArgument(runtimeArg);
    }
	
	protected override void Execute(CodeActivityContext a_oContext)
    {
    	foreach (InArgument<string> item in ListOfArguments)
        {
        	string s = item.Get(a_oContext);
        }
    }
}
...