我用了以下代码
lDataSet := DataSetBroker1.DataSet;
if not lDataSet.Active or lDataSet.Eof then
Exit;
lFlowParam := TLoadFlowParam.Create;
lTaskParam := TLoadTaskParam.Create;
DoGetFlowGUIDs(DataSetBroker1.dataset.FieldByName('guid').AsString, lFlowParam.GUIDs);
if lFlowParam.GUIDs.count = 0 then
begin
//accept:=true;
exit;
end;
//lFlowParam.GUIDs.Add(DataSetBroker1.dataset.FieldByName('guid').AsString);
lTasks := TTasks.Create;
lFlows:= TObjectList.Create;
Flow.FlowEngine.GetFlows(lFlowParam, lFlows);
lTaskParam.States := [TTaskState.tsReturned];
//以给定的条件查询任务(这里给定的条件由lFlowParam给出,根据流程Guid值查询,lTaskParam条件是按照任务状态,只查询出需要处理的任务)
Flow.FlowEngine.GetTasks(lFlowParam, lTaskParam, lTasks);
if lTasks.Count < 1 then
begin
//accept:=true;
exit;
end;
lFlowControl := self.Context.GetParentContext(BizSys.IL_FLOW).Owner as TFlowControl;
lFlowControl.InitializationByTask(lTasks);
lFlowControl.FlowOut(lTasks);
但是有两个问题:
1。流转时,只能选择回退前的下一步环节,而不是初始环节的下一环节;
2。流转后桌面的待办任务还在。
麻烦看下代码!! |