起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 1083|回复: 0

如何根据人员列表限制环节执行者

[复制链接]
发表于 2006-8-11 09:53:24 | 显示全部楼层 |阅读模式
这个方式比较安全合理
Static procedure TFlowUtils.ModifyExecutorsByPersonList(Command:TFlowOutCommand;ANextProcUnit:string;APersonList:Tstrings;AAssignMode:TTaskAssignMode;AExecutorAmount:TTaskExecutorAmount);
var
  lFlowTask:TFlowTask;
  lRange:String;
  i,j:integer;
  lPersonList : TOrgUrls;
  lPersonMembers: TList;
  lPersonMember: TOrgUnit;
begin
  lRange := '';
  lFlowTask := Command.FlowTasks.FindFlowTask(ANextProcUnit);
  if lFlowTask <> nil then
  begin
    lPersonList := TOrgUrls.Create;
    lPersonMembers := TList.Create;
    try
      lFlowTask.ExecutorMustBeFuncOwner := True ;
      lFlowTask.ExecutorAmount := AExecutorAmount; //TTaskExecutorAmount.teaMulti;
      lFlowTask.ExecutorKinds := [TTaskExecutorKind.ekPersonMember]; //执行者类型   人员成员
      lFlowTask.AssignMode := AAssignMode;// TTaskAssignMode.amSingleness;
      case  AAssignMode of
        TTaskAssignMode.amSingleness:
        begin
          lFlowTask.ExecuteMode := TTaskExecuteMode.emExclusive;
        end;
        TTaskAssignMode.amTogether:
        begin
          lFlowTask.ExecuteMode := TTaskExecuteMode.emSimultaneous ;  //任务执行方式  同时执行
        end;
      end;
      lFlowTask.AllowExecutors.Clear;
      lFlowTask.Executors.Clear;
      for i := 0 to  APersonList.Count -1 do
      begin
        lPersonMembers.Clear;
        OrgSys.OrgSystem.GetPersonMembers(APersonList.Strings[I], lPersonMembers);
        for J := 0 to  lPersonMembers.Count - 1 do
        begin
          lFlowTask.AllowExecutors.Add(TOrgUnit(lPersonMembers.Items[J]).BizURL) ;
          lFlowTask.Executors.Add(TOrgUnit(lPersonMembers.Items[J]).BizURL);
        end;
      end;
     finally
      lPersonList.Free;
      lPersonMembers.Free;
    end;
  end;

end;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-12-22 19:17 , Processed in 0.038819 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表