|
流程大概这样:
录入
|
<录入人为X?>
|Y |N
A审批 B审批
|
<A同意?>
|Y |N
B审批 结束
1. 怎么取得下一环节的ID,是真正流转到的那个环节,不是条件环节
比如,我希望在[录入]后得到的环节是实际流转到的[A审批]或[B审批],而非<录入人为X?>这个条件环节。
我需要在 OnCreateFlowOutFlowTasks中根据下一环节是哪个,来决定下一环节的执行者范围
我认为在beforeflowout后到OnCreateFlowOutFlowTasks这之前,已经可以决定流转到哪个环节了,但还不知道执行者范围,是这样吗?
但是在OnCreateFlowOutFlowTasks执行下面这段,得到的lTasks为空的
//取下一环节ID
function getNextProcId:string;
var
lTasks: TList;
I: integer;
begin
lTasks := TList.Create;
try
flbRk.FlowControl.Flow.GetSuccedentTasks(flbRk.FlowControl.CurrentTask, lTasks, True);
if lTasks.Count>0 then //count=0
result:=(lTasks.items[0] as TTask).ProcUnitID;
finally
lTasks.free;
end;
end;
//另一种方式(不行)。SuccedentUnits[0] 得到的是 当前环节下面的一个条件环节,而不是实际流转到的环节,用[1]又out of listindex1
lFlowTask := command.FlowTasks.GetFlowTask(flbRk.FlowControl.CurrentProcUnit.SuccedentUnits[0]);
2. 怎么限制只能勾选1个人
在代码中设置执行者范围:
//设置下一环节的执行者范围
lFlowTask := Command.FlowTasks.FindFlowTask(lSucProcID);
if lFlowTask <> nil then
begin
lFlowTask.ExecutorMustBeFuncOwner:=false; //执行者必须是功能拥有者
lFlowTask.ExecutorAmount:=TTaskExecutorAmount.teaOne; //执行者范围 1个
lFlowTask.ExecutorKinds := [TTaskExecutorKind.ekPersonMember]; //执行者类型 人员成员
lFlowTask.ExecutorRange:=lRange; //默认执行者范围
end;
设置lFlowTask.ExecutorAmount:=TTaskExecutorAmount.teaOne 在执行者框里只会显示出1个人
而设置TEAMULTI会显示多个人,但也可以勾选多个人
我需要显示多人,但只能勾选1个人
PS: 我已经看过论坛上的帖了,试了N种都不行。所以麻烦回答的话尽量能保证解决,不要帖个链接就over了 谢谢 |
|