起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 373|回复: 9

【结贴】代码添加多个是执行者

[复制链接]
发表于 2010-5-25 10:38:48 | 显示全部楼层 |阅读模式
比如说:张三 经理 领导办公室
        李四 经理 领导办公室
        赵四 经理 领导办公室
我想把这三个人 用代码加到下一个环节执行者。
请问如何去写啊!我用
  lOrgURL := TOrgURL.Create(FName, FRole, FDept);
                     lFlowTask.Executors.Add(lOrgURL);
去分三次ADD,可是老报错,错误提示是:statck overflow
能否给你一个完整的代码?
回复

使用道具 举报

发表于 2010-5-25 10:54:00 | 显示全部楼层
首先,流程环节上要做一个执行规则,允许多人执行
然后代码写法参考http://bbs.justep.com/forum.php?mod=viewthread&tid=32134
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-5-25 13:09:11 | 显示全部楼层
做过执行规则允许多人执行了!
回复 支持 反对

使用道具 举报

发表于 2010-5-25 13:36:13 | 显示全部楼层
那还有什么问题么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-5-26 16:32:29 | 显示全部楼层
错误提示是:statck overflow
走不下去!报错!
回复 支持 反对

使用道具 举报

发表于 2010-5-26 16:38:13 | 显示全部楼层
把你写的完整代码贴出来看看,是不是死循环了才导致堆栈溢出的。
回复 支持 反对

使用道具 举报

发表于 2010-5-26 16:58:26 | 显示全部楼层
另,标注一下,报错时停在那句代码上。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-5-27 13:28:41 | 显示全部楼层
procedure TMAINFORMCHILD.FlowBroker1CreateFlowOutFlowTasks(Sender: TObject; Command: TFlowOutCommand);
var
  lFlowTask:TFlowTask;
  lOrgURL: TOrgURL;
  Query1:TQuery;
  ADept,ARole,APerson,AManager,AManaDept,AManaRole,Aleader,ALeadDept,ALeadRole,ADCPer,ADCRole,ADCDept:String;
  FGLZ, SYBM, SYBMRole, SYBMDept : String; //管理者、使用部门人员、使用部门岗位、使用部门
  FCGType, FIsTender,FProGroup : Integer; //采购合同类型、是否招标、是否成立项目组
  FName,FRole,FDept :String;
begin
  Inherited;
  if SysUtils.SameText(FuncBroker.Func.ID,'HTPSBTZFUNC') then
  begin
    FGLZ := dsb_Contract.DataSet.FieldByName('FGLZ').AsString;
    SYBM := dsb_Contract.DataSet.FieldByName('FDept').AsString;
    FCGType := dsb_Contract.DataSet.FieldByName('FCGType').AsInteger;
    FIsTender := dsb_Contract.DataSet.FieldByName('FIsTender').AsInteger;
    FProGroup := dsb_Contract.DataSet.FieldByName('FProGroup').AsInteger;
    try
       Query1:=TQuery.Create(nil);
       Query1.ConnectionString:=SysUtils.Format('DATABASEURL=%s', [DatabaseURL]);
       Query1.CommandText:='Select * from GLZSSGXB where FName='''+ PersonID+'''';
       Query1.Open;
       if Query1.RecordCount>0 then
       begin
         //APerson := Query1.FieldByName('FDeptLeader').AsString;    //本部门分管领导
         //ARole := Query1.FieldByName('BBMFGLDGW').AsString;        //本部门分管领导岗位
         //ADept := Query1.FieldByName('BBMFGLDBM').AsString;        //本部门分管领导部门
         AManager := Query1.FieldByName('FDeptManager').AsString;  //本部门管理者
         AManaDept := Query1.FieldByName('BMGLZBM').AsString;      //部门管理者部门
         AManaRole := Query1.FieldByName('BMGLZGW').AsString;      //部门管理者岗位
         //ALeader := Query1.FieldByName('FZZGLZ').AsString;         //组织结构管理者
         //ALeadDept := Query1.FieldByName('ZZGLZBM').AsString;      //组织管理者部门
         //ALeadRole := Query1.FieldByName('ZZGLZGW').AsString;      //组织管理者岗位
         //ADCPer := Query1.FieldByName('FGSDCRY').AsString;         //分公司督查人员
         //ADCRole := Query1.FieldByName('FGSDCRYGW').AsString;      //分公司督查人员岗位
         //ADCDept := Query1.FieldByName('FGSDCRYBM').AsString;      //分公司督查人员部门
       end;
    finally
       Query1.Free;
    end;
    if PersonID = FGLZ then
    begin
      lFlowTask := Command.FlowTasks.FindFlowTask('BMHQ');
      if lFlowTask <> nil then
      begin
        lFlowTask.Executors.Clear;
        if SYBM <> '' then
        begin
           try
              Query1:=TQuery.Create(nil);
              Query1.ConnectionString:=SysUtils.Format('DATABASEURL=%s', [DatabaseURL]);
              Query1.CommandText:='Select * from CGXMCSB where FCS='''+ SYBM+'''';
              Query1.Open;
              if Query1.RecordCount >0 then
              begin
                 SYBMRole := Query1.FieldByName('FRole').AsString;
                 SYBMDept := Query1.FieldByName('FDept').AsString;
              end;
           finally
              Query1.Free;
           end;
           lOrgURL := TOrgURL.Create(SYBM, SYBMRole, SYBMDept);
           lFlowTask.Executors.Add(lOrgURL);
        end;
        if  FCGType=1 then            //普通采购
        begin
           if (FIsTender=0) and (FProGroup=1) then  //非招标非项目组
           begin
              try
                Query1:=TQuery.Create(nil);
                Query1.ConnectionString:=SysUtils.Format('DATABASEURL=%s', [DatabaseURL]);
                Query1.CommandText:='Select * from CGXMCSB where FCS=''PTFZBFXM''';
                Query1.Open;
                if Query1.RecordCount >0 then
                begin
                   Query1.First;
                   while not Query1.Eof do
                   begin
                     FName := Query1.FieldByName('FName').AsString;
                     FRole := Query1.FieldByName('FRole').AsString;
                     FDept := Query1.FieldByName('FDept').AsString;
                     lOrgURL := TOrgURL.Create(FName, FRole, FDept);
                     lFlowTask.Executors.Add(lOrgURL);
                     Query1.Next;
                   end;
                end;
             finally
              Query1.Free;
             end;
           end;
  在Query1.Free时候报错!
回复 支持 反对

使用道具 举报

发表于 2010-5-27 15:46:41 | 显示全部楼层
看不出来什么问题,qq远程看看吧
657944664
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-5-31 08:25:21 | 显示全部楼层
OK,结贴
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-9 05:02 , Processed in 0.048077 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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