起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 650|回复: 30

多人同时执行环节出错

[复制链接]
发表于 2009-12-1 08:45:35 | 显示全部楼层 |阅读模式
s

temppng157.jpg

14.96 KB, 下载次数: 199

回复

使用道具 举报

发表于 2009-12-1 09:10:55 | 显示全部楼层
请楼主详细描述一下出错的时机?是第一个打开任务,还是流转?还是最后一个人打开任务,还是流转?还是。。。?
另外,你是否有代码参与流程的流转,如果有,请先屏蔽看看,如果ok,肯定跟你的代码有关,那就要跟踪代码了?

另外,你说同时执行任务出错,那么顺序执行就ok?还有其他环节同时执行任务出错吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-1 11:35:53 | 显示全部楼层
不是第一个,也不是最后一个打开的,流转时出错

procedure TTXTZDCT.FlowBroker1CreateFlowOutFlowTasks(Sender: TObject; Command: TFlowOutCommand);
var
  lform :TXZFFFWCT;
  lFlowTask:TFlowTask;
  lOrgURL: TOrgURL;
  lStr:string;
  dept,post,per:string;
begin
  if (flowbroker1.FlowControl.CurrentProcUnit.ID = 'TXTZD') and
     (Dsb_Detail.DataSet.IsEmpty) then
  begin
    business.Forms.jsDialogs.ShowError('请选择发放范围!','系统提示');
    lform := TXZFFFWCT.Create(self.Context);
    try
    lform.ShowModal;
    finally
    lform.Free;
    end;
    sysutils.Abort;
  end;
  //审批意见
  if  (flowbroker1.FlowControl.CurrentProcUnit.ID = 'SPTZD') and
      (Dsb_Master.DataSet.FieldByName('FEnxamineMind').IsNull) then
      begin
        Business.Forms.jsDialogs.ShowWarning('请填写审批意见!','系统提示');
        sysutils.Abort;
      end;


  if (flowbroker1.FlowControl.CurrentProcUnit.ID = 'SPTZD') and
     (Dsb_Master.DataSet.FieldByName('FEnxamineMind').AsString = '不同意') then
  begin
    Business.Forms.jsDialogs.ShowError('请选择回退!','系统提示');
    sysutils.Abort;
  end;


begin
   lFlowTask := Command.FlowTasks.FindFlowTask('CKTZD');
   //根据任务环节查找任务
  if lFlowTask <> nil then
  lFlowTask.Executors.Clear;  //删除缺省执行者
  Dsb_Detail.DataSet.Open;
  Dsb_Detail.DataSet.First;
  while not Dsb_Detail.DataSet.Eof do
  begin
    dept := Dsb_Detail.DataSet.FieldByName('FDeptID').AsString;
    post := Dsb_Detail.DataSet.FieldByName('FPostID').AsString;
    per := Dsb_Detail.DataSet.FieldByName('FPerID').AsString;
//lStr:= zxz;
    if lFlowTask <> nil then
    begin
      lOrgURL := TOrgURL.Create(dept,post,per); //部门、岗位、人员创建组织单元
      lFlowTask.Executors.Add(lOrgURL);//添加执行者
    end;
    Dsb_Detail.DataSet.Next;
  end;
end;
  if (flowbroker1.FlowControl.CurrentProcUnit.ID = 'CKTZD') then
  begin
    Dsb_Detail.DataSet.Edit;
    Dsb_Detail.DataSet.FieldByName('FDate').AsDateTime := sysutils.Now;
    Dsb_Detail.DataSet.ApplyUpdates;
  end;

end;
回复 支持 反对

使用道具 举报

发表于 2009-12-1 12:31:59 | 显示全部楼层
请问一下,楼主跟踪过吗?执行到哪句报这个错误?
然后,告知我一下,这段代码是想实现啥需求
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-3 15:53:51 | 显示全部楼层
不是很每 次走流程都出这个错的
回复 支持 反对

使用道具 举报

发表于 2009-12-3 16:09:37 | 显示全部楼层
如果这样,那么楼主需要花时间找找规律了,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-4 16:51:35 | 显示全部楼层
想知道这是什么错误
回复 支持 反对

使用道具 举报

发表于 2009-12-4 17:11:27 | 显示全部楼层
楼主,从1楼图中看不出来什么问题。
最好是能重现出来时跟踪一下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-10 09:02:09 | 显示全部楼层
跟到如图,没有问题,再点确定就报错了

未命名.jpg

11.61 KB, 下载次数: 156

回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-10 09:14:47 | 显示全部楼层
procedure TSTANDARDSTYLEMAINFORM.actFlowOutExecute(Sender: TObject);
begin
  if CurrentFlowControl <> nil then
    CurrentFlowControl.FlowOut(nil);
end;
在这里报错了
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-13 08:01 , Processed in 0.046863 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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