procedure TMainForm.DataNavigator1BeforeAction(Sender: TObject; var Accept: Boolean);
//流程状态 处理人 ---S
Var
I : Integer;
lTaskParam: TLoadTaskParam;
lFlowParam: TLoadFlowParam;
lTasks: TTasks;
lDataSet : TDataSet;
SenderNameStr,TaskTypeNameStr:String;
//流程状态 处理人 ---E
begin
case TBizDataSetAction(Sender).ID of
BizActnConsts.ActionDataSetRefresh:
begin
//流程状态 处理人 ---S
with DataSetBroker.DataSet do
begin
First;
while not eof do
begin//--循环列-开始
lDataSet := DataSetBroker.DataSet;
if not lDataSet.Active or lDataSet.Eof then
Exit;
lFlowParam := TLoadFlowParam.Create;
lTaskParam := TLoadTaskParam.Create;
lTasks := TTasks.Create;
try
//根据ProductID,找到对应的流程Guid值
DoGetFlowGUIDs(lDataSet.FieldByName('Inst_ID').AsString, lFlowParam.GUIDs);
lTaskParam.States := [TTaskState.tsStarted, TTaskState.tsProcessing, TTaskState.tsWaiting];
//流程模型的BizURL
lFlowParam.ProcURLs.Add('Biz:\DMISXT\ZDHXSBTZTCLC.Proc') ;
//以给定的条件查询任务(这里给定的条件由lFlowParam给出,根据流程Guid值查询,lTaskParam条件是按照任务状态,只查询出需要处理的任务)
Flow.FlowEngine.GetTasks(lFlowParam, lTaskParam, lTasks);
if lTasks.Count = 0 then
begin
TaskTypeNameStr := '已完成';
SenderNameStr := '';
end
else
begin
TaskTypeNameStr := lTasks[0].TaskTypeName.ToString; //lTasks[0].ProcUnitID.ToString;
SenderNameStr := lTasks[0].TaskMessages[0].ReceiverName; //lTasks[0].SenderName.ToString;
end;
finally
lFlowParam.Free;
lTaskParam.Free;
lTasks.Free;
end;
edit;
FieldByName('clr').AsString := SenderNameStr;
FieldByName('zt').AsString := TaskTypeNameStr;
next; //--循环列-结束
end;
end;
//流程状态 处理人 ---E
end;
end;
end; |