请参考
说明:
aa是数据集的关键字字段,如果是多个就要用循环BizDataKeys
bb=1 不流转
执行完这个程序以后,delete掉不允许流转的,剩下的可以流转
procedure TMainForm.FlowBroker1GetFlowOutTasks(Sender: TObject; Command: TGetTasksCommand);
var
i: Integer;
lTask: TTask;
begin
for i:=Command.Selected.Count-1 downto 0 do
begin
lTask := Command.Selected as TTask;
if DataSetBroker1.DataSet.Locate('aa', lTask.BizDatas.Items[0].BizDataKeys.Items[0].Value, [TLocateOption.loCaseInsensitive]) then
begin
if DataSetBroker1.DataSet.FieldByName('bb').AsInteger=1 then
begin
Command.Selected.Delete;
Command.Source.Delete;
end;
end;
end;
end;
3楼代码中 for i:=Command.Selected.Count-1 downto 0 do 中的Command.Selected 即为选中的任务
通过 if DataSetBroker1.DataSet.Locate('aa', lTask.BizDatas.Items[0].BizDataKeys.Items[0].Value, [TLocateOption.loCaseInsensitive]) then 这一句就定位到了业务数据集的业务数据记录
这样试试
procedure TZCT.FlowBroker1AfterFlowOut(Sender: TObject; Command: TFlowOutCommand);
var
i: Integer;
ls: string;
begin
Inherited;
// ls := objecthelper.tostring(command.InvolvedTaskByIndex[0].bizdatas[0].bizdatakeys[0].value)
for i := Command.InvolvedTaskCount - 1 downto 0 do
begin
if DataSetBroker1.DataSet.Locate('aa', command.InvolvedTaskByIndex.bizdatas[0].bizdatakeys[0].value, [TLocateOption.loCaseInsensitive]) then
begin
//
end;
end;