起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 621|回复: 11

【搞定】流程2人以上并发必定报错,100%重现,求绕过方法**

[复制链接]
发表于 2007-3-8 15:55:34 | 显示全部楼层 |阅读模式
重现方法:流程A-B-C,B环节只是浏览,执行规则是人员1和人员2同时处理。
人员1先打开B环节,人员2后打开B环节,人员2先流转,人员1后流转,人员1报错:Record not found or .....一个很熟悉得错误稳定重现
急求Bug绕过方法,谢谢
回复

使用道具 举报

 楼主| 发表于 2007-3-8 18:07:00 | 显示全部楼层
顶一下,比较急
回复 支持 反对

使用道具 举报

发表于 2007-3-9 09:42:22 | 显示全部楼层
正在处理有结果马上跟贴告知
回复 支持 反对

使用道具 举报

发表于 2007-3-9 10:35:28 | 显示全部楼层
你的问题已经再现了,因为实现的时候考虑到任务的抢占,所以是所有字段来匹配的,因为一个人处理了,肯定有字段发生变化了,所以后面的人如果已经打开了,那么只能关闭任务再次打开,然后再执行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-9 10:41:57 | 显示全部楼层
谢谢,原理我基本能根据现象和重现步骤推测出来,现在很需要一个绕过的方法,否则这个错误重现得概率太高了,帮忙给出个临时方案吧,谢谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-9 14:49:08 | 显示全部楼层
进展如何
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-9 15:11:53 | 显示全部楼层
搞定,谢谢alang&atiger,try一下就搞定了:)结贴
回复 支持 反对

使用道具 举报

发表于 2007-3-9 16:32:28 | 显示全部楼层
ok,是因为流程中的任务是需要严格检查的,当两个同时打开,一个处理了,另一个就需要关闭重新打开才行,

目前只能让提示更便于理解,就是7楼说的方法
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-9 16:58:27 | 显示全部楼层

请看这么写严谨否^_^

static procedure TLIB_GC.SafeFlowOut(Afb: TFlowBroker);
const
  cErrorMsg = 'Record not found or changed by another user';
begin
  try
    Afb.FlowControl.FlowOut(nil);
  except
    on e: Exception do
      if SameText(e.Message, cErrorMsg) then
        ShowMsg('在您浏览数据期间记录已被别人修改,请退出后再次提交', '');
  else
    ShowMsg('网络忙,请退出稍后提交', '');
  end;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-12 10:07:25 | 显示全部楼层
9楼:)
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-12-26 20:55 , Processed in 0.044445 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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