写了个公共函数根据不同条件判断是否能启动流程
函数中用到了 这个启动其它功能的函数
SystemCore.TSystemCore.FuncManager.RunFunc(Context,'', sRKGNID, SysUtils.Format('-vvmTaskDetail -l%s',[sXMXH]) , False, nil, False); 但是编译的时候提示“没有匹配的方法”,是不是context这个参数没有传递的原因,如果是 context 参数 该怎么传递
procedure TAddMenuItems.StartUpFlow(sRKGNID,sLCURL,sXMXH,sSFCFQD: String);
Const sSQL = 'select Count(*) as cnt from TTASK,TFLOWID '
+ 'where TTASK.FFLOWGUID = TFLOWID.FFLOWGUID '
+ 'AND TTASK.FSTATE NOT IN (''tsFinished'',''tsAborted'',''tsCanceled'',''tsReturned'') '
+ 'AND TTASK.FPROCURL = ''%s'' '
+ 'AND TFLOWID.FID = ''%s'' ';
sSQL1 = 'select Count(*) as cnt from TTASK,TFLOWID '
+ 'where TTASK.FFLOWGUID = TFLOWID.FFLOWGUID '
+ 'AND TTASK.FPROCURL = ''%s'' '
+ 'AND TFLOWID.FID = ''%s'' ';
Var
Query :TQuery;
exist: Boolean;
begin
// sSFCFQD=(0,1,2);
// 0 流程能重复启动但同时只存在一次流程
// 1 流程能重复启动多次
// 2 流程只能启动一次
/// sSFCFQD=1 任何情况下都能启动流程
if sSFCFQD <> '1' then
begin
Query := TQuery.Create(nil);
try
Query.ConnectionString := 'DatabaseURL=Biz:\SYSTEM\SYSTEM.DATABASE';
if sSFCFQD='0' then
Query.CommandText := SysUtils.Format(sSQL,[sLCURL,sXMXH]) ;
if sSFCFQD='2' then
Query.CommandText := SysUtils.Format(sSQL1,[sLCURL,sXMXH]) ;
Query.Open;
if Query.FieldbyName('cnt').AsInteger > 0 then
exist := True
else exist := False;
finally
Query.Free;
end;
//// sSFCFQD 判断是否可以重复启动 如果不能重复 则 需判断 流程中是否已存在
if (sSFCFQD='0') and (exist = True) then
begin
jsDialogs.ShowMsg('该任务正在流程处理中。。。','提示');
SysUtils.Abort;
end else
begin
if (sSFCFQD='2') and (exist = True) then
begin
jsDialogs.ShowMsg('该任务不能再次启动流程','提示');
SysUtils.Abort;
end;
end;
end;
SystemCore.TSystemCore.FuncManager.RunFunc(FContext,'', sRKGNID, SysUtils.Format('-vvmTaskDetail -l%s',[sXMXH]) , False, nil, False);
end; |