|
发表于 2007-7-12 10:51:24
|
显示全部楼层
代码实现转发,需要自己创建一个流程环境,比较麻烦。
1、为每一个待办任务创建一个流程环境(FlowControl)
2、运行起这个任务(不需要启动功能)
3、代码执行转发动作flowcontrol 的 function FlowTransmit(ATasks: Business.System.TList): Boolean;
楼主可以参考一下流程监控功能或者系统核心库的RunTask方法,不过有些不同,你们不需要运行功能,而是启动任务后直接流转
function TFuncManager.RunTasks(AContext: TContext; ATasks: TList;
AExecutor: TOrgURL): TFunc;
var
I: Integer;
lTask: TTask;
lFuncURL: string;
lUIDs: TStringList;
lFlowControl: TFlowControl;
begin
lTask := ATasks[0] as TTask;
lFuncURL := GetFuncURLByTask(lTask);
if lFuncURL = '' then
raise Exception.CreateFmt('找不到与任务''%s''对应的业务功能', [lTask.Subject]);
lUIDs := TStringList.Create;
try
for I := 0 to ATasks.Count - 1 do
lUIDs.Add(GetTaskUniqueID(ATasks[I] as TTask));
lFlowControl := TFlowControl.Create(AContext);
try
lFlowControl.ExecuteTask(ATasks, AExecutor);
Result := CreateFunc(lFlowControl.Context, lFuncURL);
try
lFlowControl.Func := Result;
InternalRunFunc(Result, '', lUIDs, nil, False);
except
Result.Free;
raise;
end;
except
lFlowControl.Free;
raise;
end;
finally
lUIDs.Free;
end;
end; |
|