我现在有这样的主流程:功能A-〉自流程A-〉子流程B-〉end
现在遇到一个问题:
在子流程A中到了子流程A的End环节以后,取不到下一个子流程B的入口环节。
流转界面能显示子流程B的入口环节,也能选择。但是我需要用代码获得子流程的功能URL
用2个方法都不能得到。
1。GetNextTasks方法,得到 lList.Count = 0
var
lList : TList;
begin
lList := TList.Create;
try
FlowBroker.FlowControl.Flow.GetNextTasks(
FlowBroker.FlowControl.CurrentTask, lList,True);
Result := SysUtils.UpperCase(TTask(lList[0]).FuncURL);
finally
lList.Free;
end;
end;
2。用论坛上的递归调用也不能得到。lUnits.Count = 0
var
lUnits: TList;
lUnits := TList.Create;
try
FindSuccedentActivityUnit(FlowBroker.FlowControl.CurrentProcUnit, lUnits);
GNURL := SysUtils.UpperCase(TProcActivity(lUnits.Items[0]).FuncURL.URL);
GNNM := TProcUnit(lUnits.Items[0]).DisplayName;
finally
lUnits.Free;
end;
procedure TLXSQBD1.FindSuccedentActivityUnit(AUnit: TProcUnit; ASuccedentUnits: TList);
var
i: Integer;
lBizURL: TBizClassURL;
lProc: TProc;
begin
if AUnit.Kind in [TProcUnitKind.ukStart, TProcUnitKind.ukFinish] then Exit;
if AUnit.Kind=TProcUnitKind.ukSubProc then
begin
lBizURL := TBizClassURL.Create;
lBizURL.BizURL.URL := TSubProcUnit(AUnit).ProcURL.URL;
lProc := Context.FindParentContext(BizSys.IL_GLOBAL).GetBizObject(lBizURL) as TProc;
lBizURL.Free;
for i:=0 to lProc.EntryActivityCount-1 do
ASuccedentUnits.Add(lProc.EntryActivities);
end;
for i:=0 to AUnit.SuccedentUnitCount-1 do
begin
if AUnit.SuccedentUnits.Kind = TProcUnitKind.ukActivity then
ASuccedentUnits.Add(AUnit.SuccedentUnits)
else FindSuccedentActivityUnit(AUnit.SuccedentUnits, ASuccedentUnits);
end;
end; |