Im vorherigen Abschnitt haben Sie erfahren, wie man ACComponents per ACUrlCommand starten und stoppen kann. Dasselbe können Sie auch direkt ohne ACUrlCommand durchführen.
1. Starten bzw. Instanziieren von Komponenten
Dafür sind folgende Methoden (unterschiedliche Signaturen) in der ACComponent-Klasse definiert:
public virtual IACComponent StartACComponent(
string acIdentifier,
object content,
object[] acParameter,
ACStartCompOptions startOptions = ACStartCompOptions.Default)
public virtual IACComponent StartACComponent(
ACClass acClass,
object content,
ACValueList parameterList,
Global.ACStartTypes startChildMode = Global.ACStartTypes.Automatic,
bool asProxy = false,
string acIdentifier = "")
public virtual IACComponent StartACComponent(
ACChildInstanceInfo instanceInfo,
Global.ACStartTypes startChildMode = Global.ACStartTypes.Automatic,
bool asProxy = false,
string acNameInstance = "")
Im Parameter "acIdentifer" übergeben Sie den Namen der Kind-Klasse/Instanz, welche in der Entwicklungsumgebung im Anwendungsbaum unterhalb der Klasse definiert wurde (In dieser Klasse befinden Sie sich gerade (this-Pointer). Falls keine Klasse mit dem angegebenen ACIdentifier im Anwendungsbaum vorhanden ist, wird geprüft ob es sich im eine Businessobject-Klasse handelt. (Ableitung von ACBSO). Ist die angegebene Klasse vorhanden erzeugt iPlus eine neue dynamische Kind-Instanz unterhalb der Instanz in der Sie sich gerade befinden.
Der Parameter "object content" wird bei der Konstruktion dem zweiten Konstruktorparameter "IACObject content" übergeben.
Der Parameter "object[] acParameter" muss die Parameter enthalten, die dem vierten Konstruktorparameter als "ACValueList parameter" übergeben werden. Sie können dies auf zwei unterschiedliche Arten programmieren:
- object[] acParameter enthält nur ein Element vom Typ ACValueList in der bereits alle benötigten Parameter laut ACClassConstructorInfo enthalten sind. Rufen Sie dafür die Methode ACClass.TypeACSignature() des entsprechenden iPlus-Typs auf, den Sie instanzieren möchten. Damit erhalten sie die eine ACValueList zurück, mit den notwendigen Parametern die Sie dann als einziges Element im acParameter-Array setzen.
- object[] acParameter enthält exakt die Parameter, die laut ACClassConstructorInfo benötigt werden. Die StartACComponent-Methode wandelt intern das Array in eine ACValueList um.
2. Stoppen bzw. Entladen von Komponenten
Für das Stoppen und Entladen sind folgende Methoden (unterschiedliche Signaturen) in der ACComponent-Klasse definiert:
public virtual bool Stop()
Methode um sich selbst (this) zu stoppen.
public bool StopACComponent(string acIdentifier, bool deleteACClassTask = false)
Methode um eine Kind-Komponente mit dem acIdentifier zu stoppen.
public bool StopACComponent(IACComponent acComponent, bool deleteACClassTask = false)
Methode um die übergebene acComponent zu stoppen.