|

楼主 |
发表于 2008-6-11 18:27:19
|
显示全部楼层
首先,代码修改如下:
procedure TJXDPLHS.FlowAction1BeforeAction(Sender: TObject; var Accept: Boolean);
var
i: Integer;
lTask: TTask;
lTasks: TList;
lStringList : TStringList;
lQuery : TQuery;
begin
lQuery := TQuery.Create(nil);
lQuery.ConnectionString:='DATABASEURL=Biz:\DDJHXT\MAINTAIN.Database';
lTasks := TList.Create;
try
for i:= FlowBroker1.FlowControl.TaskCount - 1 downto 0 do
begin
lTask := FlowBroker1.FlowControl.TaskByIndex;
if (DataSetBroker1.DataSet.Locate('REQUISITION_ID',lTask.BizDatas.Items[0].BizDataKeys.Items[0].Value,[TLocateOption.loCaseInsensitive])) then
begin
lTasks.Clear;
ID := Variants.VarToStr(lTask.BizDatas.Items[0].BizDataKeys.Items[0].Value);
lQuery.Close;
lQuery.CommandText := 'select * from T_GENMAINTENANCESCHEDULING where REQUISITION_ID = ''' + ID + '''';
lQuery.Open;
if not lQuery.IsEmpty then
begin
try
lStringList := TStringList.Create();
try
lStringList := JXZY.TJXZY.SplitString(lTask.Subject, '||');
lStringList[1] := lQuery.FieldByName('REAL_START_TIME').AsString;
lStringList[2] := lQuery.FieldByName('REAL_END_TIME').AsString;
lStringList[3] := lQuery.FieldByName('UNIT_ID').AsString;
lStringList[4] := lQuery.FieldByName('EQUIPMENT_ID').AsString;
lTask.Subject := lStringList[0] + '||' + lStringList[1] + '||' + lStringList[2] + '||' + lStringList[3] + '||' + lStringList[4];
lTask.SaveToDB;
finally
lStringList.Free;
end;
except
//
end;
end;
lTasks.Add(lTask);
FlowBroker1.FlowControl.FlowOut(lTasks);
first_flowed:='是';
Accept := false;
end;
end;
finally
lTasks.Free;
lQuery.Free;
end;
其中lTasks.Add(lTask);挪到了下面。斑竹说的没有产生任务是什么意思??我跟踪代码看lTask的对象是有内容的,并且是我想要的那条任务。
其次,按照斑竹给的方法,在原事件中调用流转:FlowBroker1.FlowControl.FlowOut(nil);
在FlowOut事件中写3#的代码。效果依旧,主题还是起始任务生成时的主题,既不是上一环节,也不是我修改的。 |
|