|
发表于 2008-10-6 15:29:09
|
显示全部楼层
或者,直接修改系统的脚本:
"业务模型\系统空间\系统功能\组织机构\组织机构资源库"这个库源文件中
static procedure TCommonFunc.GetOperaters(AContext: TContext; ABroker: TOperationBroker; AList: TStrings);
var
I, J, K: Integer;
lOrgUnit: TOrgUnit;
lList: TList;
lOprPolicy: TOperationPolicy;
lRealOperURLs, lPsms: TStrings;
lOperator: TOperator;
begin
lList := TList.Create;
lRealOperURLs := TStringList.Create;
lPsms := TStringList.Create;
try
TStringList(lRealOperURLs).Duplicates := TDuplicates.dupIgnore;
for I := 0 to ABroker.Operations.Count - 1 do
lRealOperURLs.Add(ABroker.Operations[I].URL);
lOrgUnit := TContextUtils.FindPersonMember(AContext);
if not Assigned(lOrgUnit) then
begin
lOperator := TContextUtils.FindOperator(AContext);
if SysUtils.SameText(lOperator.ID, 'System') then
begin
for I := 0 to lRealOperURLs.Count - 1 do
AList.Add(lRealOperURLs[I]);
Exit;
end else
lOrgUnit := lOperator.DefaultPosition.PersonMember;
end;
while Assigned(lOrgUnit) do
begin
lList.Clear;
lOrgUnit.Module.GetOperationPolicy(lList);
if lOrgUnit.OrgKind = TBizObjectKind.boPositionMember then
with Org.OrgSys.OrgSystem.FindPosition(lOrgUnit.ID).Module do
GetOperationPolicy(lList);
for I := 0 to lList.Count - 1 do
begin
lOprPolicy := TOperationPolicy(lList[I]);
if SysUtils.SameText(lOprPolicy.Name, SysSQLConst.cFixOperationPolicyName) then
begin
for J := 0 to lOprPolicy.Operations.Count - 1 do
if lRealOperURLs.IndexOf(lOprPolicy.Operations[J].URL) <> -1 then
AList.Add(lOprPolicy.Operations[J].URL);
end;
end;
lOrgUnit := lOrgUnit.Parent;
end;
finally
lPsms.Free;
lRealOperURLs.Free;
lList.Free;
end;
end; |
|