Workflows
Workflows loaded at run time redirect their persistent virtual methods to the asynchronous start method of process functions in the physical model. However, the point for asynchronous method calls is not declared in the PAProcessFunction class, but in its parent class (ParentACComponent), which is of type PAProcessModule.
PAProcessModule implements the interface IACComponentTaskExec. The interface requires, that the implementing class provides the ACPointTask TaskInvocationPoint point. ACPointTask is just a derivation of ACPointAsyncRMI. ACPointTask persists its ConnectionList in the ACClassTaskValuePos table, unlike the ACPointAsyncRMI base class, which serializes the ConnectionList as XML and stores it in the ACClassTaskValue table.
Implementing the methods of IACComponentTaskExec:
If you want to use ACPointTask yourself, you should use the IACComponentTaskExec interface and implement the following methods in this way:
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);
}
Delegate only the calls to the methods of the ACPointAsyncRMIHelper class. These methods are only helper methods for a somewhat simplified way of dealing with the callback methods. Please use these methods instead of ACPointNetAsyncRMI<T>. InvokeCallbackDelegate().