Компания IBM
Опубликован: 04.07.2008 | Доступ: свободный | Студентов: 456 / 58 | Оценка: 4.48 / 3.95 | Длительность: 13:58:00
Дополнительный материал 4:

Устранение неполадок, связанных с политиками

Профили политик и документы в представлении $Policies

DCC записывает на клиентскую машину сначала профиль политик, а затем набор из одного или нескольких документов представления $Policies (зависящий от количества параметров, содержащихся в применяемой политике).

Что касается профилей политик, то это документы, которые служат отметками даты и времени, и указывают, когда была применена конкретная политика. Этим способом инструмент DCC узнает, проводилось ли обновление конкретной политики и нужно ли снова применять к клиенту Notes содержимое политики (и связанные с нею параметры политики).

Поскольку документы профилей по определению не отображаются ни в одном представлении (поэтому к ним сложно обращаться иначе, как программно), лучшим инструментом для доступа к профилям политик является NotesPeek. Бесплатную ко- пию этого инструмента можно скачать с сайта Lotus Sandbox по адресу http://www.lotus.com/ldd/sandbox.nsf/0/2791869f4e1d3fa385256f2c00432973?OpenDocument

При помощи NotesPeek можно открыть локальную книгу имен и адресов пользователя (т. е. локальную базу данных NAMES.NSF) и можно обращаться ко всем документам профилей. Эти документы удобно сгруппированы в категорию Profiles (Профили) (рис. D.1), в которой находятся не только профили политик (которые обозначаются как $policyprofile), но и другие документы профилей.

Чтобы очистить профили политик, используйте код, приведенный в примере D.1, связав его с простой кнопкой, кнопкой действия или с агентом.

Sub Initialize
  '--- Объявление переменных классов
  Dim s As New NotesSession
  Dim db As NotesDatabase
  Dim doc As NotesDocument
  '--- Инициализация переменных классов
  Set db = s.currentdatabase
  Set col = db.GetProfileDocCollection("$policyprofile")
  '--- Удаление всех профилей политик
  Call col.Removeall(True)
End Sub
Пример D.1. Код, очищающий профили политик
Пример коллекции накопленных профилей политик

увеличить изображение
Рис. D.1. Пример коллекции накопленных профилей политик
Пример коллекции профилей политик после очистки

Рис. D.2. Пример коллекции профилей политик после очистки
Пример коллекции после применения политики

Рис. D.3. Пример коллекции после применения политики

Данный код удаляет все профили политик (но не другие профили, и именно поэтому лучше всего использовать этот код) в локальной пользовательской книге имен . и адресов. На рис. D.2 показан результат использования данного кода.

Теперь, когда пользователь снова обратится к серверу, содержащему политику (либо политику организации, к иерархии которой принадлежит пользователь, либо явную политику, назначенную пользователю), DCC передаст параметры политик клиенту Notes и запишет операцию в профиль политик, как показано на рис. D.3.

Документы политик

Еще одно место, в которое DCC записывает информацию, – это представление $Policies локальной пользовательской книги имен и адресов. Это скрытое представление, поэтому для доступа к нему нужно использовать одну хитрость. Перейдите в рабочее пространство Notes (страница со ссылками на все базы данных). Нажмите клавиши Ctrl+Shift (и удерживайте их), щелкните правой кнопкой мыши по базе данных Name and Address book и выберите пункт меню Database (База данных) \to Go To (Перейти). Откроется список представлений, имеющихся в базе данных, включая скрытые представления. Выберите представление $Policies. Откроется представление, сходное с показанным на рис. D.4.

Представление $Policies с коллекцией документов

увеличить изображение
Рис. D.4. Представление $Policies с коллекцией документов

Это еще одно место, где могут возникать проблемы, и, как и в случае с профилями политик, лучше всего использовать код, приведенный в примере D.2, связав его с простой кнопкой, кнопкой действия или агентом.

Этот код удаляет все документы в представлении $Policies локальной книги имен и адресов пользователя. После повторного соединения пользователя с сервером, действующая для данного пользователя политика (политика организации или явная политика) передается клиенту и данные записываются в локальную пользовательскую книгу имен и адресов. На рис. D.5 приведен результат использования этого кода и записи новой информации о политиках.

Sub Initialize
  '--- Объявление переменных классов

  Dim s As New NotesSession
  Dim db As NotesDatabase
  Dim view As NotesView
  Dim doc As NotesDocument
  Dim collection As NotesViewEntryCollection
  Dim entry As NotesViewEntry

  '--- Инициализация переменных классов

  Set db = s.GetDatabase("", "names")
  Set view = db.GetView( "($Policies)" )
  Set collection = view.AllEntries
  Set entry = collection.GetFirstEntry()

  '--- Обработка всех документов в представлении ($Policies)

  While Not(entry Is Nothing)
    Set doc = entry.Document
    doc.Remove(True)
    Set entry = collection.GetNextEntry(entry)
  Wend
End Sub
Пример D.2. Код для удаления всех документов в представлении $Policies

На рис. D.5 для пользователя была определена явная политика, содержащая документ настроек рабочего стола. При передаче параметров этой политики было переписано 4 документа, один из которых является собственно политикой, а 3 других относятся к параметрам рабочего стола.

Представление $Policies после очистки и применения политики

увеличить изображение
Рис. D.5. Представление $Policies после очистки и применения политики

Процедура очистки

Мы рассказали об инструменте Dynamic Client Configuration (DCC), о профилях политик и о документах в представлении $Policies. Мы также рассказали о методе очистки профилей политик и документов в представлении $Policies. Теперь мы опишем процедуру очистки, применяемую, если проблемы связаны с одним пользователем.

Если предположить, что DCC работает как ожидается (в DCC очень редко возникают проблемы, если возникают вообще), то способом устранения проблем, связанных с применением политики к пользователю, является очистка и профилей политик, и документов в представлении $Policies, которые находятся в локальной книге имен и адресов пользователя.

Чтобы сэкономить время и силы (и уменьшить вероятность ошибок) используйте приведенный в примере D.3 код для очистки профилей политик и документов в представлении $Policies.

Sub Initialize
  '--- Объявление переменных классов
  
  Dim s As New NotesSession
  Dim db As NotesDatabase
  Dim view As NotesView
  Dim doc As NotesDocument
  Dim collection As NotesViewEntryCollection
  Dim entry As NotesViewEntry
  
  '--- Инициализация переменных классов
  
  Set db = s.GetDatabase("", "names")
  Set view = db.GetView( "($Policies)" )
  Set collection = view.AllEntries
  Set entry = collection.GetFirstEntry()
  Set col = db.GetProfileDocCollection("$policyprofile")
  
  '--- Обработка всех документов в представлении ($Policies)
  
  While Not(entry Is Nothing)
    Set doc = entry.Document
    doc.Remove(True)
    Set entry = collection.GetNextEntry(entry)
  Wend
  
  '--- удаление всех профилей политик
  Call col.Removeall(True)
End Sub
Пример D.3. Очистка профилей политик и документов в представлении $Policies

Этот код удаляет все профили политик и документы в представлении $Policies локальной пользовательской книги имен и адресов. При повторном соединении пользователя с сервером политика, действующая в отношении этого пользователя (организационная или явная), передается клиенту и данные записываются в локальную книгу имен и адресов.

Теперь политики должны работать правильно и проблема должна разрешиться.