起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 541|回复: 1

流程取怎么能不取到条件环节和代码设置执行者范围?**

[复制链接]
发表于 2006-12-31 11:02:25 | 显示全部楼层 |阅读模式
流程大概这样:

录入
|
<录入人为X?>
|Y           |N
A审批   B审批
|
<A同意?>
|Y         |N
B审批  结束

1. 怎么取得下一环节的ID,是真正流转到的那个环节,不是条件环节
比如,我希望在[录入]后得到的环节是实际流转到的[A审批]或[B审批],而非<录入人为X?>这个条件环节。

我需要在 OnCreateFlowOutFlowTasks中根据下一环节是哪个,来决定下一环节的执行者范围

我认为在beforeflowout后到OnCreateFlowOutFlowTasks这之前,已经可以决定流转到哪个环节了,但还不知道执行者范围,是这样吗?

但是在OnCreateFlowOutFlowTasks执行下面这段,得到的lTasks为空的
//取下一环节ID
function getNextProcId:string;
var
  lTasks: TList;
  I: integer;
begin
  lTasks := TList.Create;
  try
    flbRk.FlowControl.Flow.GetSuccedentTasks(flbRk.FlowControl.CurrentTask, lTasks, True);
    if lTasks.Count>0 then  //count=0
      result:=(lTasks.items[0] as TTask).ProcUnitID;
  finally
    lTasks.free;
  end;
end;

  
  //另一种方式(不行)。SuccedentUnits[0] 得到的是 当前环节下面的一个条件环节,而不是实际流转到的环节,用[1]又out of listindex1
  lFlowTask := command.FlowTasks.GetFlowTask(flbRk.FlowControl.CurrentProcUnit.SuccedentUnits[0]);

2. 怎么限制只能勾选1个人
在代码中设置执行者范围:
  //设置下一环节的执行者范围
  lFlowTask := Command.FlowTasks.FindFlowTask(lSucProcID);
  if lFlowTask <> nil then
  begin
    lFlowTask.ExecutorMustBeFuncOwner:=false;       //执行者必须是功能拥有者
    lFlowTask.ExecutorAmount:=TTaskExecutorAmount.teaOne;  //执行者范围 1个
    lFlowTask.ExecutorKinds := [TTaskExecutorKind.ekPersonMember]; //执行者类型   人员成员
    lFlowTask.ExecutorRange:=lRange; //默认执行者范围
  end;

设置lFlowTask.ExecutorAmount:=TTaskExecutorAmount.teaOne 在执行者框里只会显示出1个人
而设置TEAMULTI会显示多个人,但也可以勾选多个人

我需要显示多人,但只能勾选1个人

PS: 我已经看过论坛上的帖了,试了N种都不行。所以麻烦回答的话尽量能保证解决,不要帖个链接就over了 谢谢
回复

使用道具 举报

 楼主| 发表于 2006-12-31 13:56:29 | 显示全部楼层
顶下顶下
急....
今天应该还有人在吧
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-12-23 05:15 , Processed in 0.039174 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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