起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 163|回复: 9

【结帖】无法进入OnCreateFlowOutFlowTasks事件**

[复制链接]
发表于 2008-9-5 10:38:52 | 显示全部楼层 |阅读模式
流程的两个环节都使用了同一个功能,即:填写和审批
当填写环节时,能够正确进入OnCreateFlowOutFlowTasks,
但是,当运行审批时,就不进入OnCreateFlowOutFlowTasks事件了,请问是什么问题?如何解决

代码如下
procedure TDesignTaskRequisitionInOroutMainForm.FlowBroker1CreateFlowOutFlowTasks(Sender: TObject; Command: TFlowOutCommand);
var
  FlowTask1 : TFlowTask;
  OrgURL1, OrgURL2 : TOrgURL;
  i: integer;
  ReceiveDept : string;
  Position : string;
begin
  Inherited;
  //当下一环节为“指定责任部门”,执行者项目部项目管理员。
  if (FlowBroker1.FlowControl.CurrentProcUnit.ID = 'MakeDesignTaskRequisitionInOroutBill') then
  begin
    FlowTask1 := Command.FlowTasks.FindFlowTask('AssignDutyDept');
    if FlowTask1 <> nil then
    begin
      FlowTask1.Executors.Clear;
      FlowTask1.Executors.Add('XMGLB401S','XMGLY','');
      FlowTask1.Executors.Add('XMGLBJSQS','XMGLY','');
      FlowTask1.AllowExecutorInOrgURLs.Add('XMGLB401S','XMGLY','');
      FlowTask1.AllowExecutorInOrgURLs.Add('XMGLBJSQS','XMGLY','');
    end;
  end;
  //当下一环节为“发出部门领导审批”,执行者为发出部门所级领导;
  if (FlowBroker1.FlowControl.CurrentProcUnit.ID = 'MakeDesignTaskRequisitionInOroutBill') then
  begin
    FlowTask1 := Command.FlowTasks.FindFlowTask('SendDeptLeaderAudit');
    if FlowTask1 <> nil then
    begin
      Position := '';
      FlowTask1.Executors.Clear;
      FlowTask1.AllowExecutors.Clear;
      //ContextCurrent1.Dept.Parent.ID
      InfoBroker1.Info.DataSetByID('TORGSYSTEM').SQLFilter := ' FKIND = '''+'.psm'+''' '+
                  'and (FPOSITION = '''+'SZ'+''' or FPOSITION = '''+'FSZ'+''') '+
                  'and (FDEPT='''+ContextCurrent1.Dept.ID+''' or FDEPT='''+ContextCurrent1.Dept.Parent.ID+''')';
      InfoBroker1.Info.DataSetByID('TORGSYSTEM').SQLFiltered := True;
      InfoBroker1.Info.DataSetByID('TORGSYSTEM').Open;
      for i:=1 to InfoBroker1.Info.DataSetByID('TORGSYSTEM').RecordCount do
      begin
        ReceiveDept := InfoBroker1.Info.DataSetByID('TORGSYSTEM').FieldByName('FDEPT').AsString;
        Position := InfoBroker1.Info.DataSetByID('TORGSYSTEM').FieldByName('FPOSITION').AsString;
        FlowTask1.Executors.Add(ReceiveDept,Position,InfoBroker1.Info.DataSetByID('TORGSYSTEM').FieldByName('FPERSON').AsString);
        FlowTask1.AllowExecutors.ADD(ReceiveDept,Position,InfoBroker1.Info.DataSetByID('TORGSYSTEM').FieldByName('FPERSON').AsString);
        InfoBroker1.Info.DataSetByID('TORGSYSTEM').Next;
      end;
      InfoBroker1.Info.DataSetByID('TORGSYSTEM').Close;
    end;
  end;
end;
回复

使用道具 举报

 楼主| 发表于 2008-9-5 11:25:44 | 显示全部楼层
人呢?顶顶顶
回复 支持 反对

使用道具 举报

发表于 2008-9-5 11:34:49 | 显示全部楼层
这两个环节是中间环节吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-5 11:43:49 | 显示全部楼层
SendDeptLeaderAudit 是首环节
AssignDutyDept是中间环节
回复 支持 反对

使用道具 举报

发表于 2008-9-5 11:50:59 | 显示全部楼层
把流程图贴出来看看,标示一下具体的功能。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-5 15:01:28 | 显示全部楼层
又可以了。 有个新的问题
流转的时候
  FlowTask1.Executors.Clear;
      FlowTask1.Executors.Add('XMGLB401S','XMGLY','');
      FlowTask1.Executors.Add('XMGLBJSQS','XMGLY','');
      FlowTask1.AllowExecutorInOrgURLs.Add('XMGLB401S','XMGLY','');
      FlowTask1.AllowExecutorInOrgURLs.Add('XMGLBJSQS','XMGLY','');
指定了部门跟岗位。没有指定具体的人。以前用的时候是这个部门跟岗位下的所有人都可以受到,但是现在任务发出去就没了。
回复 支持 反对

使用道具 举报

发表于 2008-9-5 15:20:12 | 显示全部楼层
你怎么看不到呢?贴图看看。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-5 16:01:01 | 显示全部楼层
流转的时候是这样的

11.jpg

101.82 KB, 下载次数: 83

回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-5 16:04:10 | 显示全部楼层
以前按上图流转是可以的升级后发现收不到了。
我在后面加了
      FlowTask1.ReLoadAllowExecutors;
              FlowTask1.ReLoadExecutors;
变成下图的效果就好了

222.jpg

111.22 KB, 下载次数: 82

回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-5 16:13:59 | 显示全部楼层
问题是解决了不知道是不是以后都必须加
      FlowTask1.ReLoadAllowExecutors;
              FlowTask1.ReLoadExecutors;
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-21 16:38 , Processed in 0.038831 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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