对于22楼的第一个问题,找到一个方法,
就是在 业务、财务、策划 这个三个功能环节的主窗体上,放一个流程代理,然后在 AfterFlowBack 事件上写代码去控制如果回退将取消其他两个环节的任务,参考代码如下:
var
i: Integer;
lTask: TTask;
begin
for i:=0 to FlowBroker1.FlowControl.Flow.Tasks.Count-1 do
begin
lTask := FlowBroker1.FlowControl.Flow.Tasks;
if ((lTask.ProcUnitID = 'SP1')
or (lTask.ProcUnitID='SPGN11')
or (lTask.ProcUnitID='SPGN111'))
and (lTask.State in [TTaskState.tsStarted, TTaskState.tsWaited]) then
begin
lTask.State := TTaskState.tsCanceled;
lTask.SaveToDB
end;
end;
end;
其中SP1、SP11、SP111是在流程的并列功能环节的ID,你替换成 业务部审批、财务部审批、策划部审批 这三个的ID就可以了