起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 532|回复: 20

[请问]如何用代码添加流程中下个环节的执行者**

[复制链接]
发表于 2007-12-19 09:09:43 | 显示全部楼层 |阅读模式
如何用代码添加流程中下个环节的执行者?
代码如何实现?
回复

使用道具 举报

发表于 2007-12-19 10:07:49 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-19 10:12:33 | 显示全部楼层
流程环节间的逻辑控制、业务数据的传递可以直接通过设置过程模型实现,如果需要根据业务数据来控制流程的流转,就需要在流程环节的OnCreateFlowOutTasks事件中写代码来实现。因此想指定下一环节的接受者需要在OnCreateFlowOutTasks事件中写代码实现,按照流程环节ID,查找到对应这个环节的流程任务,然后根据业务数据对这个流程任务的执行者赋值。

1、代码修改执行者列表

procedure TMainForm.FlowDDLRCreateFlowOutFlowTasks(…;…);
var
  lFlowTask:TFlowTask;
  lOrgURL: TOrgURL;
begin
  lFlowTask := Command.FlowTasks.FindFlowTask(ANextProcUnit);//根据任务环节查找任务
  if lFlowTask <> nil then
  begin
    lFlowTask.Executors.Clear;   //删除缺省执行者
    lOrgURL := TOrgURL.Create('XSB','XSY',ZXX' ); //部门、岗位、人员创建组织单元
    lFlowTask.Executors.Add(lOrgURL);//添加执行者
  end;
end;

2、代码修改执行者表达式

procedure TMainForm.FlowDDLRCreateFlowOutFlowTasks(…);
var
  lFlowTask:TFlowTask;
  lOrgURL: TOrgURL;
  Range:String;
begin
  lFlowTask := Command.FlowTasks.FindFlowTask('DDSH');
  if lFlowTask <> nil then
  begin
    Range:= 'OrgSelect(orgcondition('+''''+'*.psm'''+',ISPLAYNAME =
    '+''''+'李海萍'+''''+','+''''+'''))'
    lFlowTask.ExecutorRange:=Range; //执行组织机构表达式
  end;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-19 10:18:01 | 显示全部楼层
3楼中
1、代码修改执行者列表
lOrgURL := TOrgURL.Create('XSB','XSY',ZXX' )
部门:   'XSB'
岗位:   'XSY'
人员:   ZXX'
这个代码只能加一个人执行一次
我想把具有该功能执行权限的人全列出来
该如何做?
回复 支持 反对

使用道具 举报

发表于 2007-12-19 10:22:38 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-19 10:44:01 | 显示全部楼层
5楼给的连接中

OrgChildren(OrgSelect(OrgCondition('','',:OrgUnit.FuncRef = '\YWGLXT\FJ_1_JHSP.FUNC')),OrgCondition('*.psm', '', ''), True) or OrgSelect(OrgCondition('*.psm','',:OrgUnit.FuncRef= '\YWGLXT\FJ_1_JHSP.FUNC'))


这段代码如何使用?
回复 支持 反对

使用道具 举报

发表于 2007-12-19 11:11:06 | 显示全部楼层
按2、代码修改执行者表达式 使用
设置为Range
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-19 12:02:50 | 显示全部楼层
按照7楼所说的

procedure TMainForm.FlowDDLRCreateFlowOutFlowTasks(…);
var
  lFlowTask:TFlowTask;
  lOrgURL: TOrgURL;
  Range:String;
begin
  lFlowTask := Command.FlowTasks.FindFlowTask('DDSH');
  if lFlowTask <> nil then
  begin
lFlowTask.ExecutorRange:=OrgChildren(OrgSelect(OrgCondition('','',:OrgUnit.FuncRef = '\YWGLXT\FJ_1_JHSP.FUNC')),OrgCondition('*.psm', '', ''), True) or OrgSelect(OrgCondition('*.psm','',:OrgUnit.FuncRef= '\YWGLXT\FJ_1_JHSP.FUNC'))

end;
end;
编译不过去
能否帮忙调整下代码
回复 支持 反对

使用道具 举报

发表于 2007-12-19 13:22:55 | 显示全部楼层
不知道楼主在做啥?为啥要通过代码来做呢?
直接在下一个功能环节上设置 执行规则 的 执行者范围 为所有,
如果任务需要发到某个人员成员上,设置 类型 为 人员成员 就可以了,见附件

3.gif

15.33 KB, 下载次数: 238

回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-19 15:42:16 | 显示全部楼层
我做了如图的设置

11.jpg

1.11 MB, 下载次数: 224

回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-4 20:01 , Processed in 0.041939 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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