Форум продуктов IBM Lotus
Общие вопросы => Разработка приложений => Тема начата: Sergey_st85 от 23 Ноябрь 2009, 12:45:21
-
Что делать? сервак указан как манагер в базе, я - тоже. Вылетает сразу же после попытки удаления. Думал, что на Defaut попадаю - нифига.
Задача - затереть ACL.
Set newACLentry=newACL.GetFirstEntry
Set newACLentry=newACL.GetNextEntry(newACLentry) ' Пропускаем Default.
While Not newACLentry Is Nothing
Set ACLentryToDel=newACLentry
Set newACLentry=newACL.GetNextEntry(newACLentry)
Call ACLentryToDel.Remove
Wend
Call newACL.Save()
-
а подробнее ошибка как звучит?
код вроде рабочий
агент запускается вручную или на сервере?
-
Пускаю из дизайнера, руками.
Как я и писал: в лотусе описания данной ошибки нет. Она может возникать, к примеру, если копирование базы делаем в существующий файл.
ВОт, вывел агентом:
Access control list must contain at least one Manager (wfsAgents2010_mopKPF_kuban.nsf), линия 135, код 4005
Но там ЕСТЬ манагер! Я манагер. Сервак манагер. Админы манагеры...
-
я так понимаю в процессе работы агента удаляются все записи ACL, а default по всей видимости не manager, поэтому сохранить ACL он не может.
-
Да не на сохранении ошибка воникает, а на УДАЛЕНИИ записи. Причем самой первой. И даже если я пропускаю 1-ю - и беру 2-ю -- он и 2-ю не может удалить.
-
тогда удаляемая запись является последним манагером в этой БД,
попробуйте поставить default манагером, если вы оставляете его одного
-
Вфяснил. Все записи записаны в полном формате записи записи, а не в кратком как "Воробьев В. А./Pens" например.
Вот код, который выставит манагером сервак и дефаулт в ноакесс только с репликацией правом.
Set ACL=db.ACL
Set newACL=newdb.ACL
Set newACLentry=newACL.GetFirstEntry
While Not newACLentry Is Nothing
Set ACLentryToDel=newACLentry
Set newACLentry=newACL.GetNextEntry(newACLentry)
If Ucase(ACLentryToDel.Name)<>Ucase("CN=MopSrv01/O=IFDK") Then
If Instr(Ucase(ACLentryToDel.Name),Ucase("DEFAULT"))=0 Then
Call ACLentryToDel.Remove
Else
ACLentryToDel.CanCreateDocuments=False
ACLentryToDel.CanCreateLSOrJavaAgent=False
ACLentryToDel.CanCreatePersonalAgent=False
ACLentryToDel.CanCreatePersonalFolder=False
ACLentryToDel.CanCreateSharedFolder=False
ACLentryToDel.CanDeleteDocuments=False
ACLentryToDel.CanReplicateOrCopyDocuments=True
ACLentryToDel.IsAdminReaderAuthor=False
ACLentryToDel.IsAdminServer=False
ACLentryToDel.IsGroup=False
ACLentryToDel.IsPerson=False
ACLentryToDel.IsPublicReader=False
ACLentryToDel.IsPublicWriter=False
ACLentryToDel.IsServer=False
ACLentryToDel.Level=0
Forall xxx In ACLentryToDel.Roles
If xxx<>"" Then Call ACLentryToDel.EnableRole(xxx)
End Forall
End If
Else
ACLentryToDel.CanCreateDocuments=True
ACLentryToDel.CanCreateLSOrJavaAgent=True
ACLentryToDel.CanCreatePersonalAgent=True
ACLentryToDel.CanCreatePersonalFolder=True
ACLentryToDel.CanCreateSharedFolder=True
ACLentryToDel.CanDeleteDocuments=True
ACLentryToDel.CanReplicateOrCopyDocuments=True
ACLentryToDel.IsAdminReaderAuthor=True
ACLentryToDel.IsAdminServer=True
ACLentryToDel.IsGroup=False
ACLentryToDel.IsPerson=False
ACLentryToDel.IsPublicReader=True
ACLentryToDel.IsPublicWriter=True
ACLentryToDel.IsServer=True
ACLentryToDel.Level=6
Forall xxx In ACLentryToDel.Roles
Call ACLentryToDel.EnableRole(xxx)
End Forall
End If
Wend
Set newACLentry=newACL.CreateACLEntry("Anonymous",0)
newACLentry.CanReplicateOrCopyDocuments=True
Call newACL.Save()
-
И тут же другой вопрос: че за шняга:
newACLentry.EnableRole
newACLentry.DisableRole
дизаблю - в асл не увижу, или что?
-
это функции,
ставят и снимают галочки соответственно с ролей:
call newACLentry.EnableRole("роль")
-
Но ведь нет галочек в ACL, если ее в GUI смотреть. Есть запись. Есть роли. Усё. Нет галочки ДЛЯ ЗАПИСИ...
-
у роли же есть куда галочку поставить
-
ПРОШУ ПРОЩЕНИЯ.
Протупил.
-
:)