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