起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 345|回复: 10

【结贴】取下一环节执行者

[复制链接]
发表于 2009-9-15 13:13:07 | 显示全部楼层 |阅读模式
流程入口环节,录入完数据后,在流程的CreateFlowOutFlowTasks事件中通过代码指定下一环节的执行者,会有这样的情况,数据保存后不流转,在待办任务中打开任务,不做任何操作,点流转按钮,
lFlowTask := Command.FlowTasks.FindFlowTask('COMPROJECTFUNC1'); lFlowTask对象是空的,弹出流转对话框后,取消,重新流转,lFlowTask对象就有值了,代码如下:
procedure TMainForm.FlowBroker1CreateFlowOutFlowTasks(Sender: TObject; Command: TFlowOutCommand);
var
  lFlowTask:TFlowTask;
  lOrgURL: TOrgURL;
  Range:String;
begin
  TPublicFuncLib.TakeUpperLevelagent(context,dsbMain.DataSet.FieldByName('DLSBH').asString,
       dsbEquipment.DataSet.FieldByName('CPBM').asString,Fsjtype,Fsjbm,Fsflzgsj);//判断流转给哪个执行者;

  if Fsflzgsj = '是' then
  begin
    lFlowTask := Command.FlowTasks.FindFlowTask('COMPROJECTFUNC1');
    if lFlowTask <> nil then
    begin
      if Fsjtype = '代理商' then
        Range:= 'OrgChildren(OrgKey('''+Fsjbm+''', ''DLSXYJL'', ''''), '''', False, False)'
      else
        Range:= 'OrgChildren(OrgKey('''+Fsjbm+''', ''DBGSXZ'', ''''), '''', False, False)';
      lFlowTask.ExecutorRange:=Range; //执行组织机构表达式
    end;
  end
  else
  begin
    lFlowTask := Command.FlowTasks.FindFlowTask('COMPROJECTFUNC2');
    if lFlowTask <> nil then
    begin
      Range:= 'OrgChildren(OrgKey('''+dsbMain.DataSet.FieldByName('DLSBH').asString+''', '+
       ' ''DLSZJL'', ''''), '''', False, False)';
      lFlowTask.ExecutorRange:=Range; //执行组织机构表达式
    end;
  end;
end;
回复

使用道具 举报

发表于 2009-9-15 13:43:21 | 显示全部楼层
入口环节下面有几个活动环节?就这一个'COMPROJECTFUNC1'活动环节么?

在    if lFlowTask <> nil then 设置断点,每次都走的是else里面的么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-15 14:04:44 | 显示全部楼层
入口环节下面有2个活动环节,通过条件判断流转到其中一个环节,条件是通过TPublicFuncLib.TakeUpperLevelagent函数判断的;
打开任务,不做任何操作,执行到if lFlowTask <> nil then就直接跳出了,弹出流转对话框,取消后再执行流转动作,可以执行到f lFlowTask <> nil then里面;
回复 支持 反对

使用道具 举报

发表于 2009-9-15 14:10:00 | 显示全部楼层
入口环节下面是一个or环节下面有两个活动环节么?

Command.FlowTasks.count是几?
如果不是0,那么Command.FlowTasks[0].Subject是那个环节的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-15 14:17:13 | 显示全部楼层
入口环节不是or环节,下面是有两个活动环节;
Command.FlowTasks.count是1,Command.FlowTasks[0].Subject取出的环节不是条件指定那个环节;
回复 支持 反对

使用道具 举报

发表于 2009-9-15 14:24:51 | 显示全部楼层
如果lflowtask为nil的时候弹出流转对话框中选中的环节是你想要的环节么?

条件环节的条件设置的正确么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-15 14:32:07 | 显示全部楼层
lflowtask为nil时弹出的对话框选中的环节不是我想要的,条件设置应该没有问题;我想知道打开任务时不做任何操作,流转的时候lflowtask为啥是空的,取消后再流转就有值了?
回复 支持 反对

使用道具 举报

发表于 2009-9-15 14:53:53 | 显示全部楼层
首先要搞清楚,你第一次走的不对,并不是因为lflowtask是空的,因为你的lflowtask是根据环节找任务的,而那个任务并不是这个环节而是另一个环节的。
其实你这里的问题出在条件分支的取值。至于条件分支的结果,第一次跟第二次不一样,需要你跟踪调试看看到底是什么原因。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-15 15:01:03 | 显示全部楼层
跟踪调试了,第一次流转的时候lflowtask是空的,取的不是我想要的环节,执行者也错了;第二次再流转的时候lflowtask是有值的,取的环节也是对的
回复 支持 反对

使用道具 举报

发表于 2009-9-15 15:03:23 | 显示全部楼层
楼主,不是这样的。
你要看看条件分支的值是什么。
不要停留在这个lflowtask=nil上(因为你根据这个环节取任务他目前取到,因为任务是在另一个分支环节上。)
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-16 01:48 , Processed in 0.042129 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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