起步软件技术论坛-X3

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: huixiangtao

【结】请问如何用代码得到某个功能的执行者呢?**

[复制链接]
 楼主| 发表于 2008-4-15 11:32:28 | 显示全部楼层

谢谢你,写的真的太详细了

谢谢你,写的真的太详细了。我试你的代码完全正确,但是我把你的代码加到启动流程代码中,单步执行到lBizURL.URL:=AOrgBizURLs[0];  就出错,请问是什么原因呢? 另外我想执行人中随机选择一个人员,是这样用Random的不?i:=System.Random((AOrgBizURLs.Count-1));//出错,请问Integer如何转为Longint?

代码如下,
procedure TMAINFORM.StartAlarmFlow1(AFlowIDPram:String);
var
   lContextCurrent: TContextCurrent;
   AOrgBizURLs:TStrings;
   lExecutor: TOrgURL;
   lBizURL: TBizURL;
   AFlowUrl,ADept,ARole,APerson,AStartProc,AFlowID,ASubject,ADescription:String;
   i:Integer;
begin
  lContextCurrent := TContextCurrent.Create(Self.Context);
  AOrgBizURLs := TStringlist.Create;
  Org.OrgSys.OrgSystem.GetBizURLsByOrgExpr('OrgChildren(OrgSelect(OrgCondition('''','''',:OrgUnit.FuncRef = ''\WGXTDEMO\BJCL1_new.Func'')),OrgCondition(''*.psm'', '''', ''''), True) or OrgSelect(OrgCondition(''*.psm'','''',:OrgUnit.FuncRef= ''\OPERATION\LCRKGN.Func''))',AOrgBizURLs);

// for i := 0 to AOrgBizURLs.Count - 1 do
i:=System.Random((AOrgBizURLs.Count-1));//Integer如何转为Longint?
   lBizURL.Create;
    dialogs.ShowMessage(AOrgBizURLs[0]);//
    lBizURL.URL:=AOrgBizURLs[0];//lBizURL.URL:=AOrgBizURLs;这儿会出错,见图
    lExecutor:=TOrgURL.Create(lBizURL);
// end;
  ADept:=lExecutor.DeptID;
  ARole:=lExecutor.PositionID;
  APerson:=lExecutor.PersonID;

  AFlowUrl:='Biz:\WGXTDEMO\BJCL1LC.Proc';//流程处理1
   ASubject:='代码启动报警处理1';
  ADescription:='代码启动报警处理1描述';
  AStartProc:='BJCL1_NEW';   //流程入口功能ID
  AFlowID:=AFlowIDPram;

   try
       UserStartFlow (AFlowUrl,ADept,ARole,APerson,AStartProc,AFlowID,ASubject,ADescription);
    finally
        lContextCurrent.Free;
          lBizURL.Free;
    end;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-15 14:23:01 | 显示全部楼层

忘记了贴图

忘记了贴图,错误见图

error_person.jpg

14.28 KB, 下载次数: 130

回复 支持 反对

使用道具 举报

发表于 2008-4-15 15:09:56 | 显示全部楼层
1、i  是Integer 转换成 Longint  目的是啥
2、把 lBizURL.Create; 修改为 lBizURL := TBizURL.Create;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-15 16:35:16 | 显示全部楼层
1、i  是Integer 转换成 Longint  目的是啥?
i:=System.Random((AOrgBizURLs.Count-1));//Integer如何转为Longint
编译出错,
我开始是以为是Integer与Longint不配备。
今天看了帮助,发现Random该是如下使用。
random1:=System.Random.create();
i:=random1.Next(0,(AOrgBizURLs.Count-1));
    dialogs.ShowMessage(AOrgBizURLs);
    lBizURL.URL:=AOrgBizURLs;
    lExecutor:=TOrgURL.Create(lBizURL);
2、把 lBizURL.Create; 修改为 lBizURL := TBizURL.Create;
发现我抄都抄错了,改了就好了。我没有用过Delphi,Create总是写错
结贴吧,真的非常感谢你的耐心和帮助!
回复 支持 反对

使用道具 举报

发表于 2008-4-15 16:56:21 | 显示全部楼层
好,不客气,
下次要好好学习哦,呵呵。其实大家都一直在学习
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-10 06:24 , Processed in 0.038552 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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