Workflows
Workflows, die zur Laufzeit geladen werden, leiten ihre persistierten virtuellen Methoden an die asynchrone Start-Methode von Prozessfunktionen im physikalischen Modell weiter. Der Punkt für asynchrone Methodenaufrufe ist jedoch nicht in der PAProcessFunction-Klasse deklariert, sondern in seiner Elternklasse (ParentACComponent), die von Typ PAProcessModule ist.
PAProcessModule implementiert das interface IACComponentTaskExec. Das Interface schreibt vor, dass die zu implementierende Klasse den Punkt ACPointTask TaskInvocationPoint bereitstellen muss. ACPointTask ist lediglich eine Ableitung von ACPointAsyncRMI. ACPointTask persistiert seine ConnectionList in der Tabelle ACClassTaskValuePos im Gegensatz zur Basisklasse ACPointAsyncRMI, welche die ConnectionList als XML serialisiert und in der Tabelle ACClassTaskValue speichert.
Implementierung der Methoden von IACComponentTaskExec:
Falls sie selbst ACPointTask verwenden möchten, sollten Sie das interface IACComponentTaskExec verwenden und folgende Methoden auf dieser Art implementieren:
public virtual bool ActivateTask(ACMethod acMethod, bool executeMethod, IACComponent executingInstance)
{
return ACPointAsyncRMIHelper.ActivateTask(this, acMethod, executeMethod, executingInstance);
}
public virtual bool CallbackTask(ACMethod acMethod, ACMethodEventArgs result, PointProcessingState state)
{
return ACPointAsyncRMIHelper.CallbackTask(this, acMethod, result, state);
}
public virtual bool CallbackTask(IACTask task, ACMethodEventArgs result, PointProcessingState state)
{
return ACPointAsyncRMIHelper.CallbackTask(this, task, result, state);
}
public IACTask GetTaskOfACMethod(ACMethod acMethod)
{
return ACPointAsyncRMIHelper.GetTaskOfACMethod(this, acMethod);
}
public virtual bool CallbackCurrentTask(ACMethodEventArgs result)
{
return ACPointAsyncRMIHelper.CallbackCurrentTask(this, result);
}
Delegieren Sie nur die Aufrufe an die Methoden der Klasse ACPointAsyncRMIHelper weiter. Diese Methoden sind nur Hilfsmethoden für einen etwas vereinfachten Umgang mit dem Aufruf der Callback-Methoden. Verwenden Sie bitte diese Methoden anstatt ACPointNetAsyncRMI<T>.InvokeCallbackDelegate().