【问题标题】:All Usernames in a specific Role in Lotus NotesLotus Notes 中特定角色的所有用户名
【发布时间】:2013-07-18 11:48:23
【问题描述】:

我需要获取特定角色的所有用户名,以便能够向具有该角色访问权限的所有用户发送邮件。我怎样才能完成这项任务?

我看到了这个链接,

How do I get all users who have a specified role?

没有其他方法可以获取所有可以在 SendTo 中使用的有效用户名吗?没有这个问题?虽然我没有尝试过 NotesACL。我是 Lotus Notes 开发的新手。

【问题讨论】:

  • “这个问题”是什么意思?该帖子声称遍历 ACL 条目似乎是性能杀手,但它没有引用任何数据来支持该声明。它根本不应该很慢。
  • 嗨,理查德,嗯,基本上这是我的错,因为当我读到我仍然不知道 notesACL 时,但我真的很着急,所以我问了这个问题。现在我清楚地理解了notesACL 是如何在Knut 的帮助下工作的。我在学习笔记开发方面真的有很长的路要走,在这里只呆了 3 周。非常感谢。上帝保佑。

标签: lotusscript


【解决方案1】:

如果您对 ACL 条目的外观有一点影响,那么您应该能够获得一个好的解决方案。以下代码收集 ACL 中具有特定角色的所有条目并且仅接受类型为 PersonPerson group 的条目。

Function GetRoleMembers(roleName As String) As String
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim acl As NotesACL
    Dim entry As NotesACLEntry
    Dim sMembers As String 
    Set db = session.CurrentDatabase
    Set acl = db.ACL
    sMembers = ""
    Set entry = acl.GetFirstEntry
    While Not ( entry Is Nothing )
        If entry.IsRoleEnabled( roleName ) And entry.IsPerson Then
            sMembers = sMembers + entry.Name & ","
        End If
        Set entry = acl.GetNextEntry( entry )
    Wend
    GetRoleMembers = sMembers
End Function

函数返回具有给定角色的所有人员和组的逗号分隔列表。您可以使用

测试此功能
Print GetRoleMembers("[Test]")

确保为您要发送电子邮件的用户分配了类型PersonPerson group。您可以在 ACL 中设置用户的类型

【讨论】:

  • 您好 Knut Herrmann,非常感谢。它奏效了,如果这个问题如此简单,我很抱歉。我想我还需要学习更多,尽管我问这个是因为我没有更多的时间在截止日期前学习。但是因为你,我在开始 Lotus Notes 开发后,清楚地了解了我在过去 3 部作品中从未使用过的 NotesACL。上帝保佑。
  • 不客气。使用 IBM Notes Domino 进行开发是一个不错的决定。自 1992 年以来我一直在这样做。玩得开心!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-06
  • 2020-08-23
  • 1970-01-01
  • 2016-06-18
  • 2012-02-27
  • 1970-01-01
相关资源
最近更新 更多