起步软件技术论坛-X3

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

【结】流程执行者范围**

[复制链接]
 楼主| 发表于 2009-2-10 15:30:57 | 显示全部楼层
你给我一个表达式 就取当前流程环节执行者所在的部门下的所有人 一级上一级部门下的所有人和上上一级部门下的所有人 这个表达式如何写?
回复 支持 反对

使用道具 举报

发表于 2009-2-10 15:45:25 | 显示全部楼层
比如
procedure TMainForm.Button1Click(Sender: TObject);
var
  Os:Business.Model.Org.TOrgSystem;
  olist:Business.Model.Org.TOrgURLs;
  i : Integer;
begin
  memo1.Clear;
   olist:= Business.Model.Org.TOrgURLs.Create;
   os:=   Business.Model.Org.TOrgSystem.Create;
   os.GetOrgURLsByOrgExpr('OrgChildren(OrgParent(OrgKey(''BM3'', '''', ''''),'
               + 'OrgCondition(''*.DPT'', '''', ''''), true, true),'
               + 'OrgCondition(''*.psm'','''',''''),true,true)', olist);
   for i:=0 to olist.Count-1 do
   begin
        memo1.Lines.add(olist.BizURL.URL);
   end;
   os.free;
   olist.free;
这个代码
看图

snap1.png

11.74 KB, 下载次数: 175

回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-10 17:30:08 | 显示全部楼层
点击测试 效果如下

1.jpg

88.4 KB, 下载次数: 172

回复 支持 反对

使用道具 举报

发表于 2009-2-10 17:32:30 | 显示全部楼层
你用12楼的代码。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-11 09:51:19 | 显示全部楼层
我那里填的就是12楼的代码啊 测试出错 我是在设置流程环节的执行者范围 不是窗体代码中取某些人员
回复 支持 反对

使用道具 举报

发表于 2009-2-11 10:05:30 | 显示全部楼层
12楼的代码不是取到需要的相关组织单元的URL了吗?
那你在流程中控制执行者时,只要类似于这么做就可以了吧:
var
  lFlowTask:TFlowTask;
  lOrgURL: TOrgURL;
  lBizURL : TBizURL;
begin
    lFlowTask.Executors.Clear;
    lBizURL := TBizURL.Create;
    lBizURL.URL := 'Org:\ROOT\JG1.OGN\BM1.DPT\GW1.PTM\RY1.psm';//这里就是需要上面获得的那个list
    lFlowTask.Executors.Add(lOrgURL);//默认执行者,允许执行者用:AllowExecutors
    lBizURL.Free;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-11 11:06:49 | 显示全部楼层
procedure TMainForm.FlowBroker1CreateFlowOutFlowTasks(Sender: TObject; Command: TFlowOutCommand);
var
    lFlowTask:TFlowTask;
    Os:Business.Model.Org.TOrgSystem;
    olist:Business.Model.Org.TOrgURLs;
    lBizURL : TBizURL;
    lOrgURL: TOrgURL;
begin
    lFlowTask := Command.FlowTasks.FindFlowTask('MATREQAPP');
    if lFlowTask <> nil then
    begin
        lFlowTask.Executors.Clear;
        os:=Business.Model.Org.TOrgSystem.Create;
       // os.GetOrgURLsByOrgExpr('OrgChildren(OrgParent(OrgKey(''KFB'', '''', ''''),'
              // + 'OrgCondition(''*.DPT'', '''', ''''), true, true),'
              // + 'OrgCondition(''*.psm'','''',''''),true,true)', olist);
        lBizURL := TBizURL.Create;
        lBizURL.URL :='Org:ROOTTQM.OGNGS.OGNMJWL.DPTKGY.PTMWJK.psm';// olist[0].BizURL.URL;//这里就是需要上面获得的那个list
        lOrgURL:=TOrgURL.Create(lBizURL);
        lFlowTask.AllowExecutors.Add(lOrgURL);
        //lFlowTask.Executors.Add();//默认执行者,允许执行者用:AllowExecutors
        lBizURL.Free;
    end;
    os.free;
    olist.free;
end;

代码中设置了一个人 为什么流程流转的时候 点击添加还是可以选择很多人

2.jpg

72.14 KB, 下载次数: 160

回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-11 11:15:20 | 显示全部楼层
把中间注释掉的那句恢复的话就报错 在测试窗体的按钮中测试没有问题 在这个事件中就报错
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-11 11:31:20 | 显示全部楼层
搞定了 结贴吧 谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-27 23:35 , Processed in 0.045993 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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