Java 获取LotusDomino文档的创建者和最后一个修改器

Java 获取LotusDomino文档的创建者和最后一个修改器,java,lotus-notes,lotus-domino,lotus,Java,Lotus Notes,Lotus Domino,Lotus,我想获取LotusDomino文档的创建者和最后一个修改器。我怎么能这样做 我找到了,它是一个向量,但文档中没有定义它的顺序。我可以相信第一个元素是创建者,最后一个元素是最后一个修饰符吗?尝试直接使用$UpdatedBy字段。(我认为,Authorsproperty也使用它。)在这个字段中,所有更新程序都是按时间顺序存储的:发起者——第一个,最后一个修改者——最后一个 如果在数据库属性中设置了“限制$UpdatedBy字段中的条目”选项,则会显示错误的数据:当达到限制时,会删除$UpdatedB

我想获取LotusDomino文档的创建者和最后一个修改器。我怎么能这样做


我找到了,它是一个
向量
,但文档中没有定义它的顺序。我可以相信第一个元素是创建者,最后一个元素是最后一个修饰符吗?

尝试直接使用
$UpdatedBy
字段。(我认为,
Authors
property也使用它。)在这个字段中,所有更新程序都是按时间顺序存储的:发起者——第一个,最后一个修改者——最后一个


如果在数据库属性中设置了“限制
$UpdatedBy
字段中的条目”选项,则会显示错误的数据:当达到限制时,会删除
$UpdatedBy
中的第一个条目,因此,您无法了解文档创建者。

最安全的解决方案是在设计上设置一个“合成时计算”类型字段,该字段在创建文档时设置为当前用户,另一个字段将保留最后一个修改器名称(类似于
@SetField(“lastdupdateby”;@UserName)
QuerySave事件中的
). 

在您的情况下,如果您只想从现有应用程序中收集数据,并且没有可以使用的手动添加字段,则需要考虑以下事实:

1.
$UpdatedBy
项和Authors属性相同:使用Lotusscript中的Authors属性将返回从
$UpdatedBy
项收集的数组

2.)无法操纵
$UpdatedBy
项=从这个角度来看,使用它是安全的

3.)假设您已经获得了那里的全部历史*,那么您将获得具有类似lotusscript中的
@Subset($Updatedby;1)
Cstr(updatedbyarray(Lbound(updatedbyarray))
的公式的创建者

4.)通过使用
@Subset($Updatedby;-1)
Cstr(array(Ubound(array))
查看
$Updatedby
数组中的最后一个条目,您将始终获得最后一个修饰符

5*)您的数据库可能对
$Updatedby
条目有限制,因为这些条目可能非常占用空间(数据库级别设置,最后一个选项卡,限制
$Updatedby
字段中的条目)。一旦达到此限制,Notes将在添加新条目时开始删除旧条目,并且查询数组的第一个成员将不再为您提供创建者

6.)由于您可能无法在
$Updatedby
数组中找到创建者,因此您应该使用以下内容保护代码:

If Ubound(var)+1 <> db.LimitUpdatedBy Then 
    'You are safe
Else 
    Msgbox "Ouch!"
End If
如果Ubound(var)+1 db.limitedUpdated,则
“你很安全
其他的
Msgbox“哎哟!”
如果结束
如果安全的话,您可以继续使用
$Updatedby
项进行计算。
顺便说一下,使用我们的(Ytria)scanEZ产品,您将能够为数据库中的所有文档收集这些值,而无需任何编码。只有几个简单的公式,您就可以将完整的报告导出到DXL或CSV

是否只检查现有文档,或将设计更改为跟踪创建者/修改者?@pstr:只检查现有文档。我无法修改数据库(我只有只读访问权限)。是否确定没有已设置为文档创建者的字段值?我认为,如果这关系到谁创建了它,设计师会把它放在一个字段中。@DavidNavarre:我正在从多个数据库收集元数据和统计信息。他们可能在自定义项中有这些信息,但目前发现内部数据库结构超出了范围。我发现使用索引1会在字段中给出第一个:
$updatedby[1]