procedure UserStartFlow (AFlowUrl,ADept,ARole,APerson,AStartProc,AFlowID,ASubject,ADescription:string);
var
lBizURL: TBizURL;
lFlowValue: TFlowValue;
lFlowControl: TFlowControl;
lExecutor: TOrgURL;
lHandle: TTransactionHandle;
begin
lBizURL := TBizURL.Create;
lFlowValue := TFlowValue.Create;
lFlowControl := TFlowControl.Create(Self.Context);
lExecutor := TOrgURL.Create(ADept, ARole, APerson);
lBizURL.URL := AFlowUrl;
lHandle:= lFlowControl.FlowManager.Transaction.Start(True);
try
lFlowValue.IDs.Add(AFlowID); //流程ID
lFlowValue.Subject := ASubject; //流程主题
lFlowValue.Description := ADescription; //流程描述
try
//启动流程实例
lFlowControl.StartupFlow(lBizURL, AStartProc, lExecutor, lFlowValue);
//流程实例数据保存到数据库
lFlowControl.FlowRunnerbyIndex[0].CurrentTask.SaveToDB;
lFlowControl.FlowManager.Transaction.Commit(lHandle);
except
lFlowControl.FlowManager.Transaction.Rollback(lHandle);
end;
finally
lFlowControl.Free;
lFlowValue.Free;
lBizURL.Free;
end;
end;
不加事务处理代码没有任何问题, 一旦使用事务控制,产生的流程和任务数据将不完整,TFLOWID表中没有相关记录
如果这样不对, 怎样确保启动流程和业务数据处理在同一个事务中
版本:3019 |