1

我正在使用 xpages 进行项目。我想创建一个在创建新文档时递增的计数器。我创建了一个表单,其中包含一个初始化为 1 的字段引用。我怎样才能恢复第一行的第一个值,因此为 1 并加 1 以获得一个数字序列。我尝试了 getfirstitem() 但它不起作用。我也希望每个新年计数器从 0 重新开始。

4

2 回答 2

4

一旦您想在多台服务器上或离线运行您的应用程序,序列编号是一个小挑战(只需等待它,它也会发生在您的应用程序上)。话虽如此,多年来采取了多种方法:

  • 使用@Subset(@DbColumn(@DbName,"SomeViewSortedDecendingByNumber",1),1) +1; 问题:如果 2 个用户打开一个文档但尚未保存它
  • 使用一个applicationScope变量,在保存之前增加一个变量(不要忘记该synchronized函数的关键字)。问题:值仅在保存时显示 - 或者如果用户不保存文档,则会出现“漏洞”。
  • 使用仅在一台服务器上运行的代理。这就理清了多服务器和离线使用。问题:数字比文档创建晚得多
  • 使用提供下一个可用号码的 Web 服务(用 Notes 编写)。您面临同样的问题:“何时提供”(打开或保存文档)、“如果用户不保存怎么办,不能离线使用
  • 不存储数字,而是使用视图的编号机制来显示数字

你的用例到底是什么?多说一点!

于 2013-06-24T23:14:00.843 回答
2

顺序编号总是很有趣 (/s) 并且在 Notes/Domino 中经常出现。

有一篇非常详细的 Wiki 文章解释了创建唯一数字背后的理论和用例。

http://www-10.lotus.com/ldd/ddwiki.nsf/dx/sequential-numbering.htm

这篇文章解释了使用唯一编号时的文档锁定。

http://www-10.lotus.com/ldd/ddwiki.nsf/dx/Employ_document_locking_to_assure_number_uniqueness

于 2013-06-25T07:09:16.953 回答