对于存储在数据库中的文档,我想创建一个人类可读的密钥来唯一标识文档。例如PO20090110-001。我该怎么做呢?
答案 0 :(得分:1)
这不是简单的。
为唯一键创建字段,此键保存onSave(或其他事件),但您必须保护此号码不唯一。
您可以创建代理,在多米诺骨牌服务器上检查号码,如果代理发现冲突,则通知应用程序管理员或其他责任人解决此问题。
或者每个副本生成自己的号码,并在多米诺骨牌上复制后,代理人以正确的格式分配号码。
答案 1 :(得分:1)
我们服务台中使用的一个解决方案是获取当前用户的首字母,并将其添加到视图中最后一个文档中的数字。在数字中加一,并将新文件与ititals和新数字一起存储为关键字。
答案 2 :(得分:1)
保存文档时,您可以使用日期或任何您喜欢的技术(例如“PO”和格式(日期,“YYYYMMDD”)和& confDoc.getitemvalue(“doccounter”)将数字的第一部分组合在一起“))。
对于计数器,我喜欢将其存储在配置文档中,并在保存每个文档时更新它。如果在白天创建了大量文档,您可能会在配置文档上遇到代理冲突,如果是这种情况,您可以让服务器上的代理执行实际分配的编号,这样做的缺点就是您不能保存后立即得到号码。
希望这有帮助。
答案 3 :(得分:1)
只需使用没有参数的@Unique函数,就可以在Domino中创建“近乎”唯一键。这将根据当前用户的名字和姓氏以及当前时钟时间生成一个字符串键。你最终会得到一个字符串:“ESCR-12345678”。
我说“几乎”是唯一的,因为它不像SQL中的标识列 - Domino不保证它只会发出一次特定的字符串。如果你在一次生成许多id的服务器端代理中使用@unique - 例如,在循环中循环并使用@unique的代理,你可能会遇到@unique将返回重复的情况 - 因为你创建了同一秒内的2个文档,因为您的“用户名”始终是服务器的规范名称。但是,在这种情况之外,@ unique通常可以安全使用。
如果您需要通过此ID打开或引用文档,只需创建一个按该ID排序的视图,您就可以使用表单中的URL ./ myView / id?readDocument。