Если вы немного влияете на то, как выглядят записи ACL, вы должны иметь возможность достичь хорошего решения. Следующий код собирает все записи в ACL с определенной ролью и принимает только те записи, которые имеют тип Person
или Person 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]")
Убедитесь, что пользователи, которых вы хотите, чтобы отправлять сообщения электронной почты присваиваются типа Person
или Person group
. Вы можете установить тип пользователя в ACL
Что вы имеете в виду под «этой проблемы»? В этом сообщении утверждается, что итерация через записи ACL кажется убийцей производительности, но она не цитирует никаких данных для поддержки этой претензии. Это не должно быть медленным. –
Привет, Ричард. Ну, в основном это моя вина, так как я читал, что до сих пор не имею понятия о notesACL, но я действительно спешу, поэтому задал этот вопрос. Теперь я четко понимаю, как notesACL работает с помощью Кнута. У меня действительно есть длинный путь, чтобы заниматься разработкой учебных новшеств здесь всего лишь 3 недели. Большое спасибо. Бог благословил. –