这有一段流程流转的代码,能不能帮解释一下
function TFlowCreator.FlowOut(AProcUnitID, ASubject: String; ASender, AReceiver: TOrgUrl;
AStartTime: TDateTime): Boolean;
var
lTask: TTask;
lProcUnit: TProcActivity;
begin
try
if (not Assigned(FFlow)) or (FFlow.Tasks.Count=0) then
raise Exception.Create('FlowOut : 流程未启动');
if FFlow.State = TFlowState.fsFinished then
raise Exception.Create('FlowFinish : 流程已结束');
lProcUnit := FindProcUnit(AProcUnitID);
if not Assigned(lProcUnit) then
raise Exception.Create('FlowOut : 错误的环节ID');
lTask := CreateTask(lProcUnit, ASubject, ASender, AReceiver, AStartTime, AStartTime,
TTaskState.tsStarted, TTaskMessageState.tmsSend);
if not Assigned(lTask) then
raise Exception.Create('FlowOut : 创建任务失败');
{流转处理}
lTask.PrevGUID := FCurrentTask.GUID;
FCurrentTask.NextGUID := lTask.GUID;
FCurrentTask.State := TTaskState.tsFinished;
FCurrentTask.FinishTime := AStartTime;
FCurrentTask.TaskMessages[0].State := TTaskmessagestate.tmsFinished;
Flow.Tasks.Add(lTask);
FlowEngine.SaveTask(FCurrentTask);
FlowEngine.SaveTask(lTask);
FCurrentTask := lTask;
result := true;
except
result := false;
end;
end; |