【问题标题】:Sequence numbering with xpages使用 xpages 进行序列编号
【发布时间】:2013-06-24 22:27:58
【问题描述】:

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

【问题讨论】:

    标签: javascript forms xpages sequence counter


    【解决方案1】:

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

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

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

    【讨论】:

    • 我的目标是为每张新票创建具有单个票号的客户票,值增加 1 个示例 Ticket0001/2013->票 0002/2013。在年份变化期间,该值返回 0001 例如 Ticket000211/2013 -> Ticket00001/2014
    • 您实际上会向用户披露出票频率。我会使用@unique。但是选择上面的任何方法
    • 同意这里。当用户要求提供序列号时,他们通常意味着他们想要一些并非不可能引用的独特的东西。人们想说“你看到 83 号票了吗?”参考票 12499304083 时。如果 @Unique 对您来说太随机了,您始终可以使用小到毫秒的时间戳,并附加用户的姓名首字母。
    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多