数字序列问题

时间:2014-03-10 14:51:54

标签: session axapta dynamics-ax-2009

我们有一个问题,比我想要的更频繁,工作或客户端会话是否崩溃以及这些会话是否正在使用数字序列来创建新记录,但他们最终会按字面意思阻止该数字序列任何试图使用相同序列创建记录的人都将冻结其客户端。

发生这种情况时,我通常会进入NUMBERSEQUENCELIST表,找到正确的DataAreadId和用户,并删除Status = 1的行。

但是这种烦人真的很烦人。当客户端/工作人员崩溃时,有什么方法可以配置AOS服务器来释放号码序列吗?

对于工作者会话,我想我们可以很好地调整在其中运行的代码,但是对于客户端会话崩溃,我们无能为力......

有什么想法吗?

谢谢!

编辑:原来在这种情况下,重新启动AOS服务器后,您可以在数字序列菜单中进入列表,然后进行清理。在重新启动之前,我的客户端会冻结尝试这样做。所以不需要直接通过SQL来完成。

1 个答案:

答案 0 :(得分:1)

NumberSequenceList中的连续数字每24小时自动清除一次(或按照数字顺序设置)。如果存在许多“死”数(数百或数千),则清理过程非常缓慢。这可能被视为悬挂,但不是。

需要考虑的事项:

  • 是否需要连续的数字序列?
  • 更频繁地进行清理(比如说每半小时而不是默认的24小时)
  • 将清理过程设置为批处理
  • 使用数字序列
  • 修复客户端代码中的错误

同时避免保留号码,只需使用它即可。而不是反模式:

NumberSeq idSequence = NumberSeq::newGetNum(IntrastatParameters::numRefIntrastatArchiveID(), true);
this.IntrastatArchiveID = idSequence.num();
idSequence.used();

只需使用数字:

this.IntrastatArchiveID = NumberSeq::newGetNum(IntrastatParameters::numRefIntrastatArchiveID()).num();

makeDecisionLater参数只应在表单中使用,用户可以决定不使用该号码(通过删除或转义)。在这种情况下,无论如何NumberSeqFormHandlershould be used