procedure TMainForm.DoGetFlowGUIDs(const AFlowID: string; AFlowGUIDs: TStrings);
begin
Query.CommandText := SysUtils.Format('SELECT FFLOWGUID FROM TFLOWID WHERE FID = ''%s''', [AFlowID]);
Query.Open;
while not Query.Eof do
begin
AFlowGUIDs.Add(Query.FieldByName('FFLOWGUID').AsString);
Query.Next;
end;
Query.Close;
end;
procedure TMainForm.FlowBroker1BeforeFlowStartup(Sender: TObject; Command: TFlowStartupCommand);
var
lTaskParam: TLoadTaskParam;
lFlowParam: TLoadFlowParam;
lTasks: TTasks;
lFlows: TObjectList;
i: Integer;
lDataSet : TDataSet;
begin
lDataSet := DataSetBroker1.DataSet;
if not lDataSet.Active or lDataSet.Eof then
Exit;
lFlowParam := TLoadFlowParam.Create;
lFlowParam.ProcURLs.Add('Biz:\YANCMPRIVATE\PROC\YWLC2.Proc');
lFlows := TObjectList.Create;
try
//根据ProductID,找到对应的流程Guid值
DoGetFlowGUIDs(lDataSet.FieldByName('ID').AsString, lFlowParam.GUIDs);
//以给定的条件查询流程实例(这里给定的条件由lFlowParam给出,根据流程Guid值查询)
Flow.FlowEngine.GetFlows(lFlowParam, lFlows);
Dialogs.Showmessage(SysUtils.IntToStr(lFlows.Count));
if lFlows.Count>0 then
begin
Command.Accept:=false;
end;
finally
lFlowParam.Free;
lFlows.Free;
end;
end;
修改一下18楼的代码:
procedure TMainForm.DoGetFlowGUIDs(const AFlowID: string; AFlowGUIDs: TStrings);
begin
Query.CommandText := SysUtils.Format('SELECT FFLOWGUID FROM TFLOWID WHERE FID = ''%s''', [AFlowID]);
Query.Open;
AFlowGuids.Clear;
while not Query.Eof do
begin
AFlowGUIDs.Add(Query.FieldByName('FFLOWGUID').AsString);
Query.Next;
end;
Query.Close;
end;
procedure TMainForm.FlowBroker1BeforeFlowStartup(Sender: TObject; Command: TFlowStartupCommand);
var
lTaskParam: TLoadTaskParam;
lFlowParam: TLoadFlowParam;
lTasks: TTasks;
lFlows: TObjectList;
i: Integer;
lDataSet : TDataSet;
begin
lDataSet := DataSetBroker1.DataSet;
if not lDataSet.Active or lDataSet.Eof then
Exit;
lFlowParam := TLoadFlowParam.Create;
lFlowParam.ProcURLs.Add('Biz:\YANCMPRIVATE\PROC\YWLC2.Proc');
lFlows := TObjectList.Create;
try
//根据ProductID,找到对应的流程Guid值
DoGetFlowGUIDs(lDataSet.FieldByName('ID').AsString, lFlowParam.GUIDs);
//以给定的条件查询流程实例(这里给定的条件由lFlowParam给出,根据流程Guid值查询)
if lFlowParam.GUIDs.Count>0 then
begin
Flow.FlowEngine.GetFlows(lFlowParam, lFlows);
Dialogs.Showmessage(SysUtils.IntToStr(lFlows.Count));
if lFlows.Count>0 then
begin
Command.Accept:=false;
end;
end;
finally
lFlowParam.Free;
lFlows.Free;
end;
end;