Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Типы форм: документ (main topic), Ответ(Response), Ответ на ответ (response to).



Типы форм: документ (main topic), Ответ(Response), Ответ на ответ (response to).

Существует 5 типов таблиц:

1)Basic (основные)

2)С вкладками (Tabled)

3)Animated (анимационные)

4)Таблицы заголовков (Caption)

5)Программируемые (Programmed)

 

Создание полей

Виды полей:

1)Редактируемые (Editable) – устанавливается по умолчанию для полей редактируемых пользователями и хранимых в документе.

2)Вычисляемые (Computed) – значение задаётся с помощью формулы, хранится в документе

3)Computed for display – значение задаётся с помощью формулы, не хранится в документе.

4)Computed when composed (вычисляемое при составлении) – значение задаётся с помощью формулы, когда документ создаётся вновь, хранится в документе.

 

Знакомство с секциями (разделами).

Существует 2 типа разделов:

1)STandar (стандартный)

2)Controled Access (управляемый доступ).

 

Создание представлений. Типы представлений.

Типы предсьавлений:

Shared (общая) – это представление, которое все видят одинаково.

Shared,contains documents not in any folder

Shared, contains deleted documents

Shared private on first use

Shared, desktop private on first use – хранится на рабочем столе.

Private – представление доступное только самому пользователю.

 

Свойства преставлений.

Default when database is first opened – объявляет представление первым открываемым при открытии БД.

Show response documents in hieararchy

Отображение информации в колонках представлений.

Объединяем 3 поля Ф, И, О

firstname +” ”;+@If(@Trim(middlename)!=””; middlename+” “;””)+lastname;

@Trim – удаляет лишние пробелы из текста или из каждого элемента текстового списка.

Show twisty when row is expandable

Пока свёртки или развертки для раскрывающейся категории.

Show responses only – опция используется в иерархическом представлении.

Язык формул.

Работа с функциями и командами.

Язык формул содержит 3 основные конструкции.

 

@function, @commands

5 ключевых слов

REM,FIELD,DEFAULT, ENVIRONMENT, SELECT

Примеры команд языка формул.

@command ([FileCloseWindow])

@Command([FileSave])

@Command([EditDocument])

 

SELECT Form=”Main_topic”|@AllDescendants - отображает все документы.

Составленные по форме Main_topic, а так-же все документы типа ответ и ответ на ответ.

SELECT FORM=”Main_topic”&|(dDate1=””&dDate2=””&dDate3=””)

Все документы созданные с помощью формы Main_topic содержащие dDate1, dDate2, dDate3

За исключением тех, где все три поля даты не заполнены.

Применение оператора присвоения и условного оператора.

Основная форма оператора If

@If(условие;оператор истины;оператор лжи)

 

Логические функции.

Функции даты/времени. Работы со строками.



 

Преобразование даты из формата текстовой строки (May 10 2008) в стандартный формат месяц/дата/год.

1)Проведём усечение строки

jcDate:=@Trim(cCreatedDate)

2)Получаем номер месяца

@If(@Containts(jcDate;”Jan”););”01”;…);

@Contains определяет содержит ли строка другую строку.

@Middle(jcDate;” “;”,”);

3)Извлечем день меясца расположенный между пробелом и запятой.

Middle возвращает символы из строки – осуществляет поиск слева направо

4)Получим год.

@RightBack(jcDate;” “); - возвращает крайние правые символы строки осуществляя поиск слева направа.

 

 

Функция @Clienttype – возвращает тип программы клиент используемой пользователем.

@UserName – имя пользователя (возвращает имя текущего пользователя в каноническом формате).

 

Функция @Name([аргумент]; имя_Notes) – извлекает различные части канонического имени.

Наиболее часто используется аргумент [CN] – возвращающий общее имя.

И аргумент [Abbreviate] – который возвращает общее имя, название подразделения и название организации разделенные наклонными чертами.

 

Работа с документами:

Функция @AllChildren – возвращает ответные документы.

Функция @AllDescendants – возвращает ответные документы и документы типа ответ на ответ.

Функция @IsResponceDoc – возвращает True если документ является ответным.

В поле $REF храниться универсальный идентификатор родительского документа, и оно обеспечивает ссылку на документ для обновления значения поля.

 

50.Lotus Script

Lotus Script – это объектно ориентированный язык программирования совместимый с Visual Basic.

 

Объявление переменной

Dim имя_перем As тип

 

 

Def int I-N

Dim i1

Dim N2 as double

Массивы, списки данные типа Variant

Dim A(0 to 20) as double

Dim A(20) as string;

Динамическое выделение памяти для массива.

Dim s(0 to 0) as string;

Dim s() as string;

Redim s(0 to 8) as string;

 

 

Пример:

Redim preserve s (0 to 8) As string; - при переопределении сохраняются внесенные ранее в массив значения.

Список – это массив к которому можно обращаться по именам.

 

Работа с полями в Lotus Script

Все поля трактуются как одномерные массивы с неизвестным числом элементов.

Если необходимо сослаться на содержимое поля, то ссылаются на 0-й элемент массива т.е. поля.

Чтобы сослаться на всё содержимое поля (независимо от того представляет ли оно собой элемент или множество элементов). Можно ссылаться на поле без имени. Для ссылки на определенный элемент поля, содержащего множество элементов. Необходимо указывать индекс элемента.

Функции подпрограммы, объекты, классы и события языка Lotus Script.

Dim Myvar As String

Myvar = “Экзамен”

Print “Значение функции:” &MyF(MyVar)

MySub(MyVar)

Function MyF(s as string) as string

MyF=Ucase(s)

End function

Sub MySub(s as string)

Print “MySub выводит” &s

End Sub

Функция Ucase преобразует все буквы алфавита к верхнему регистру.

Классы Domino разделяются на 2 группы:

1)Классы клиента (front-end)

2)Классы сервера (back-end)

 

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

А термин сервер к чему-то не видимому.

События.

Иерархия классов. Клиентские классы.

Переменная (ссылки на объект, объектные ссылки) создаётся в два этапа

1)объявление переменной

2)Создание экземпляра объекта

Dim db as NotesDatabase

Set Doc=New NotesDocument(db)

Переменная Doc будет являться новым документом сервера.

Dim Doc=New NotesDocument(NotesDataBase)

Во втором случае создаётся объектная ссылка типа NotesDocument, но не создаётся сам документ.

Класс NotesDocument.

В языке Lotus Script поля называются элемертами. Поля создаются в форме для ввода данных. Затем посредством интерфейса пользователя с помощью формы создаётся документ. Программа клиент вводит информацию поля формы и эта информация сохраняется в документе. Вместе с данными в документе запоминается информация о самом поле. Эти данные и информация о поле и образуют элемент.
Метод Save имеет 3 аргумента.

Save(Force,CreateResponce,MarkRead)

Аргументы Force и createResponce имеют тип Boolean.

Если Force=true и кто-нибудь сохранил документ в то время, когда вы его модифицировали, то при сохранении вашего документа Notes удаляет сохраненный документ записывая на его место ваш вариант документа. Если Force = false то предпринимаемые действия записываются(определяются) вторым аргументом CreateResponce. Если Force = false, а CreateRespince = true то текущий документ становиться ответом на документ отредактированный и сохраненный предыдущим пользователем. Если Force =false и CreateResponce = False то сохранение нового варианта документа отменяется.

3-й параметр markRead не является обязательным и определяет будет ли сохраненный документ отмечен для чтения текущим пользователем.

Обработка ошибок.

Функции оператора языка LotusScript облегчающие обработку ошибок.

1)Erl – возвращает номер строки, где произошла ошибка.

2)Err – возвращает номер текущей ошибки.

3)Оператор Err – устанавливает номер текущей ошибки.

4)Функция Error(Error$) – возвращает сообщение о текущей ошибке (заранее определенны номер ошибки).

5)Оператор Error – генерирует заранее определенный номер ошибки и сообщение о ней.

6)Оператор On Error – указывает имя подпрограммы обработки ошибок или определяет, как обрабатывать ошибки (все или только какого-то определенного типа).

7)Оператор resume – указывает каким образом будет продолжено выполнение программы после ошибки.

Существуют 5 конструкций операторов которые могут следовать за оператором on Error.

1)goto label

2)resume next - передаёт управление оператору следующему за оператором вызвавшим ошибку.

(продолжить не обращая внимания на ошибку).

3)goto 0 – указывает, что в текущей процедуре ошибка не должна обрабатываться.

4)resume 0 – указывает на то, что оператор вызвавший ошибку должен быть выполнен снова.

5)resume label – передаёт управление оператору следующему за меткой label и используется только в подпрограммах обработки ошибок.

6)Exit Sub – выход из процедуры или функции.

 

On Error ErrFileNotFound goto m1

 

Взаимодействие с пользователем. Функции MessageBox, InputBox, DialogBox.

Формат функции MessageBox(message, [[button+icon+default+mode][boxtitle]])

MessageBox “Продолжить?”, 4387,”Ошибка!”

Message “Продолжить?”,3+32+256+4096,”Ошибка!”

MessageBox “Продолжить?”,MB_YESNOCANCEL+MB_ICONQUESTION+MB_DEFButton2+MB_SYSTEMMODAL,”Ошибка!”

Существует 2 разновидности функции InputBox

1)InputBox – возвращает данные типа Variant

2)InputBox$ - которая возвращает строковые данные

3)InputBox[$](prompt[,[title][,[Default][x pos, y pos]]])

InputBox$(“Введите число”,”число”,”30)

Сценарии LotusScript для форм.

1)LS для события PostOpen.

Определим значение заданное по умолчанию для полей name и date

Sub PostOpen(Source As Notesuidocument)

Dim s As New NotesSession

Dim ws As new NotesUIWorkspace

Dim note As NotesDocument

Dim theday As New NotesDateTime(now)

Set source = ws, CurrentDocument

Set note = Source.Document

If Source.IsNewDocument then

Note.name=s.Username

Set note.date=theDate

Souce.Reload

EndIf

End Sub

Сценарий LS для QueryClose

Узнаем сколько раз пользователь открывал тот или иной документ.

Для этого в программе для события QueryClose проверяется находиться ли документ в режиме редактирования. Если да, то значение специального скрытого поля увеличивается на 1.

Если документ не редактируется то происходит переход в режим редактирования, увеличивается счетчик того, сколько раз читался документ. Затем документ сохраняется и при этом пользователь ничего не замечает.

Sub QueryClose(Source As Notesuidocument, Continue as Variant)

Dim ntr As Long

Dim note NotesDocument

Set Note=Source.Document

If note.IsNewNote Then

Ntr=0

Else ntr=clng(note.NumTimeRead(0))

EndIf

ntr=ntr+1

call note.replaceItemplatevalue(“numtimeRead”,cstr(ntr))

call note.Save(True,True)

End Sub

cLng – возвращает значение преобразованное к типу long.

cstr – приветение к строковому типу.

Сценарии LS для полей.

Событие Entering, Exiting – позволяют выполнять какие-либо действия при установке курсора в поле или после выхода из него.

Пример: если в сценарии события Entering обнаруживается, что поле пустое то на экране появляется окно ввода. Если в поле имеется некоторое значение то в сценарии не выполняется никаких действий.

Sub Entering (Source As Field)

Dim ws As New NotesUIWorkSpace

Dim UIdoc As NotesUIDocument

Set UIdoc = ws.CurrentDocument

If UIdoc.FieldGetText(“Knyazev”)=”” Then

Retcode=InputBox$(“Введите новое значение поля“)

If Isnummeric(retcode) Then

CallUIdoc.FieldSetText(“Knyazev”,retcode)

Else MsgBox ”Введите число”

Call UIdoc.FieldSetText(“Knyazev”,” “)

EndIf

EndIf

End Sub

 

Sub Exiting (Source As Field)

Dim ws As New NotesUIWorkSpace

Dim UIdoc As NotesUIDocument

Set UIdoc = ws.CurrentDocument

Temp=uidoc.FieldGetText(“Nom_koop”)

If temp<>”” Then

If clng(temp)>1000 Then

 

MsgBox ”Значение поля не должно превышать 1000”

Call UIdoc.FieldSetText(“Nom_koop”,” “)

EndIf

EndIf

End Sub

 

Созданием программ агентов в LS.

Программа агент для отправки по почте напоминаний написанная на языке LS.

Нижеописанная программа агент выполняется ежедневно по расписанию в БД содержащей Form REQ. В этих формах существует поле Duedate с датой выполнения задания, поле Status отображающее статус документа, поле PersonAssigned которая указывает, кто отвечает за выполнение задания. Программа агент выполняется каждый день просматривая все документы в БД. Если срок исполнения документа уже прошел, то исполнитель получает почтовое напоминание, со ссылкой на незавершенный документ.

Sub Initialize

Dim s As New NotesSession

Dim db As NotesDataBase

Dim col As NotesCollection

Dim note,memo As NotesDocument

Dim item As NotesItem

Dim rtitem As NotesRichTextItem

Dim cutoff As New NotesDateTime(Today)

Dim dueDate As NotesDateTime

Set dt=s.CurrentDatabase

Set col=db.AllDocuments

Set note=col.GetFirstDocument

Do until note is nothing

If note.Form(o)=”REQ” Then

Set item=note.GetFirstItem(“duedate”)

Set duedate=item.DateTime-value

If (note.status(o)=”Open” and (cuteoff.Timedifference(duedate)>0) Then

Set memo=New NotesDocument(db)

Memo.Form(o)=”Memo”

Memo.SendTo=note.PersonAssigned(o);

memo.subject=”Невыполненное задание”

Set rtitem=New NotesRichTextItem(memo,”Body”)

Call rtitem.AppendText(“Напоминаем, что у вас есть невыполненное задание”)

Call rtitem.AddNewLine(2)

Call rtitem.AppendText(“Щелкните на ссылке, чтобы увидеть незавершенный документ”)

Call rtitem.AppendDocLinc(note,”Нажмите для просмотра задания”)

Call memo.Send(false) ‘Отправка без формы

EndIf

EndIf

Set note=col.GetNextDocument(note)

Loop

End Sub

 

После объявления всех переменных и обектных ссылок, создаются объекты db,col,note после чего идет цикл do until на основе условия указывает ли note на какой либо документ.

Сначала внутри цикла проверяется создан ли документ на основе формы REQ. Если это не так, то переходим к следующему документу, если документ создан на основе формы REQ то проверяются остальные условия: Документ не завершен и срок его исполнения уже истек. Если любое из этих условий не выполняется, то переходим к следующему документу. Если же оба условия выполняются, то мы должны отправить сообщение по электронной почте. Для этого создаем новый объект memo класса notesDocument и в нем создаем поля Form, SendTo,Subject.

В основной части письма будут находиться краткое сообщение напоминающее пользователю, о незавершенном задании и ссылки на незавершенный документ.

В данной программе для форматирования поля Body используются методы класса NotesRichTextItem. Позволяющее легко производить различные действия над форматированным текстом. Сначала используя метод AppendText добавляем в поле Body текст, затем используя метод AppendNewLine добавляем две пустые строки. Далее с помощью метода AppendText снова добавляем текст, применяем метод AppendDocLink. Отображаем ссылку на незавершенный документ.

У метода AppendDocLink существует один обязательный параметр – документ на который указывает ссылка и один необязательный представляющий собой строковые выражения, которые отображаются в строке состояния окна клиента, когда курсор устанавливается на ссылке. После создания объекта memo отправляем его (метод Send), переходим к следующему документу и повторяем весь процесс.

Для действий над форматированным текстом можно применять и другие методы класса NotesRichTextItem например метод AppendRTFile позволяет присоединять файлы, а метод EmbdedObject – создавать встроенные объекты такие как электронные таблицы и презентации.

Метод timedifference возвращает разницу между cutoff и duedate в секундах. Свойства DateTimeValues возвращает значение времени в элементе. Этот метод применим только к элементам даты времени.

Работа с программами агентами.

Управляющими средствами программ агентов являются события. Программы агенты можно запускать по рассписанию, они могут выполняться, как следствие изменения или дополнения документа. Пользователь может запустить программу агент, она может быть так-же, запущена в результате получения почтового сообщения.

Все действия отображаемые в меню Actions – программы агент, они также используются повсеместно в почтовой базе mail, и в элементах календаря. Если в меню Design выбрать программы агенты, то список всех доступных программ агентов бд будет показан в представлении, столбцы которого описываю различные свойства. Программ агентов:

1)Name/comment - имя программы агента и сопроводительные документы

2)Alias – псевдоним имени программы агента

3)Trigger – значение поля when should This Agent Run

4)Owner – хозяин или владелец – Shared, если это общая программа агент или имя пользователя.

5)Notes – если отмечено, то программа агент запускается в клиенте.

6)Web – если отмечено, то программа агент запускается в web.

Программа Archive переносит документы в архив почтовой бд.

В типичном приложении например в приложении рабочего потока программы агенты могут отсылать уведомления о том, что время просмотра истекло. Другая программа агент может добавить или изменить вновь созданный документ. Дискуссионые базы содержат вновь созданные базы отправляющие сообщения участникам дискуссии. После изменения документа или создания нового в БД.

Более сложные программы агент могу управлять перемещением данных из внешних БД в БД сервера домино. Для выполнения сложного многоэтажного процесса программы агенты могут подключать другие программы. Очень большое количество программ агентов можно создать для работы непосредственно в WEB приложениях. Их можно создавать с помощью Java и затем расширить их возможности для применения в WEB браузерах.

Работа с идентификаторами документов в языке формул.

@DocumentUniqueID

Область применения: нельзя использовать в формулах навигаторах. В формулах полей создает ссылку на текущий документ.

Возвращает т.н. универсальный идентификатор документа (UNID) – 32-х символьную комбинацию букв и цифр. Уникальную идентифицирующую текущий документ во всех репликах распределенной базы.

Универсальный идентификатор документа можно просмотреть окне свойств документа на последней закладке в первой метке после ID отбросив символы OF в начале и ON в середине:

049C1EB4:D8C5C4F8

C22574E8:005B4B9B

Домино генерирует универсальный идентификатор при создании документа. Первые его 16 символов (8 байт) представляют собой дату, время создания документа (с точностью до тиков), а вторые 16 символов случайное число. Домино проверяет, не оказалось ли текущие реплики базы документа с таким же идентификатором, и если это так, то снова случайно генерирует вторые 16 символов. После сохранения документа в БД их универсальные идентификаторы не изменяются. Исключения составляют случаи, когда документ копируется в базу, через буфер обмена или пересылается почтой – перед помещением документа в базу, проверяется не существует ли в ней уже документ с таким же идентификатором и если это так, то для добавляемого в базу документа генерируется новые универсальные идентификатор. С помощью LS программист может самостоятельно изменить UNID документа (в этом случае необходимо самостоятельно заботиться об уникальности UNID).

Многие понятия и алгоритмы домины, прежде всего дерево объектов базируется на UNID. Так документ ответ всегда содержит предопределенное поле с именем $REF в котором хранится UNID документа родителя для данного документа ответа.

В 7-й версии домино в поле $REF отображается на 2 символа больше (всего 34): добавляются символы FN из слов OF и ON соответственно.

Формула столбца представления выводит в этом столбце для некоторого документа его UNID.

@Text(@DocumentUniqueID)

Функция @InheritedDocumentUniqueID

Область применения: нельзя использовать в формулах навигатора. Предназначена для работы с документами созданными по форме с включенной опцией наследования полей. Если опция не включена, то возвращает такое же значение, что то и предыдущая функция.

В формулах полей создает ссылку на указанный документ.

Возвращает UNID документа, который был текущим в момент создания документа в котором используется эта функция.

@NoteID

Область применения – нельзя использовать в формулах формы? и навигатора.

Возвращает 8-ми символьный идентификатор документа в БД – строку с префиксом NT (последняя строка последней закладки окна свойств документа.

@NoteID уникально идентифицирует документ только в текущей БД.

@GetDocField(UNID,”имя_поля”)

Область применения: нельзя использовать в формулах отбора, колонок всплывающих окон и навигатора.

Для текущей БД возвращает значение поля с именем имя поля из документа имеющего универсальный идентификатор UNID. Параметр имя_поля – строка. Возвращаемое значение зависит от типа поля. Строка или список строк, число или список чисел, время, дата или временной диапазон. Если задан несуществующий UNID или поле, то возвращается пустая строка. Пример: вычисляемое поле в документе ответе на главный документ всегда будет содержать значение поля Subject из главного документа. Когда создается новый документ-ответ, то значение в вычисляемом поле наследуется из главного документа.

@If(@IsNewDoc;Subject;@GetDocField($REF;”Subject”))

Формула выполняемого по расписанию агента меняет в документах-ответах значение поля Project на значение одноименного поля из главного документа.

Field Project=@GetDocField($REF;”Project”)

@SetDocField(UNID;имя_поля; новое_значение)

Область применения: такая же как и у предыдущей функции.

Для текущей БД присваивает новое значение полю с именем имя поля в документе с универсальным идентификатором UNID. Параметр имя_поля строка, параметр новое_значение должен соответствовать типу поля.

Функция SetDocField наиболее часто используется в формулах полей кнопок и агентов.

Формула кнопки в документе ответе изменяет значение поля Subject в главном документе.

@SetDocField($REF;”Subject”;”Новое значени”)

Организация безопасности в Notes.

Безопасность программных продуктов Notes основана на основе технологии шифрования RSA CryptoSystem, в которой используются двойные ключи (RSA компания созданная 3 математиками: Риверсон, Шамира, Адельман). Когда с помощью системы RSA создается ID файл, то устанавливаются секретный и защитные ключи. Они хранятся в ID файле, а открытый ключ так-же храниться в каталоге domino. Между этими 2 ключами существует математическое соответствие, которое используется в т.н. процессе аутентификации.

Но система безопасности – это не только шифрование. Существуют следующие уровни безопасности серверов Domino:

1)Физический

2)Сервер

3)БД

4)Программа агент

5)Форма

6)Представление

7)Документ

8)Поле

Установка доступа к серверу.

Доступ к серверу возможен из интернета или из удаленного места по телефонному модему. Сервер может быть связан с другими серверами, пользователи могут обмениваться информацией с этими серверами. Серверы никогда не инициируют связь с пользователями. Но пользователь никогда не может инициировать диалог с другим пользователем, связь происходит с помощью сервера. Разрешит ли сервер Domino взаимодействие с пользователем зависит в первую очередь от того включен ли конкретный пользователь в список тех кому разрешен доступ к серверу. Всё это происходит еще до начала процесса аутентификации. Существует 5 способов получения доступа к серверу:

1)ID клиента или сервера Notes

2)Анонимный

3)Имя пользователя и пароль интернет

4)Сертификат X509

5)Анонимный клиент или сервер Notes

Анонимным пользователем становится любой, кто подключился к серверу с помощью браузера и не назвал себя ни одним из имен перечисленных в списке. Но быть анонимным не означает, что доступ будет получен автоматически. Анонимный доступ к серверу из интернета возможен если на сервере установлена возможность доступа из интернета и администратор разрешил анонимный доступ.

ID файл играет важнейшую роль при контроле доступа к серверу и надежно защищен от возможных взломов.

Распознание типов идентификаторов используемых в Notes.

Существует 3 основных типа ID файлов.

ID сервера, ID клиента, ID сертификатора.

ID сертификатора используется для создания остальных идентификаторов и сертификаторов.

Первым для любой огранизации создается ID сертификатора Organization этот сертификатор создает идентификаторы отделов небольших компаниях. Этот файл непосредственно создает ID пользователей и ID серверов. ID сертефикатора организации обычно создается вместе с первым сервером, ID сервера и ID администратора.

ID сертификатора в котором создан ID другого сертификатора называют родительским сертификатором (ancestral certifier). Каждый ID содержит удостоверение всех сертификаторов своей ветки. В именах файлов ID серверов и пользователей. Перечисляются имена всех предшествующих ID сертификаторов. Верхнее удостоверение указывается последним.

Следуя такой схеме можно легко определить, где находиться пользователь (в каком отделе и т.д.),

А для больших компаний с помощью такой компании можно распределить пользователей по группам.

Понятие об аутентификации.

Перед подключением к серверу осуществляется процесс взаимной аутентификации двух сертифицированных объектов. Это справедливо для удостоверений ID клиентов и удостоверений X.509. Аутентификация осуществляется с помощью протокола запрос/ответ. Один из сертифицированных объектов назовем клиентом A, а сервер устанавливающим связь с объектом – сервером B. Сервер посылает список своих удостоверений клиенту A и требует от него сравнить этот список со списком для A и подтвердить, что он является для них общим. Клиент A отправляет в ответ сообщение в котором содержится удостоверение, которые являются общими. B затем отсылает A зашифрованное сообщение используя общее удостоверение позволяющее создавать сообщение. Потом A дешифрует сообщение и отсылает его обратно. Затем B проверяет проверяет расшифрованное сообщение и в случае правильного результата отвечает, но теперь A должен проверить, что B тот за кого, он себя выдает. A повторяет со своей стороны такой же процесс. И только после того, как каждая сторона подтвердила свою “личность”. Процесс аутентификации успешно завершается.

Существует второй способ аутентификация с помощью пароля. В этом случае пароль пользователя сравнивается с паролем хранящемся в персональном документе в каталоге Domino.

При аутентификацией между интернет пользователем и сервером Domino у пользователя запрашиваются имя и пароль и если они совпадают с именем и паролем хранящемся в персональном документе в каталоге Domino, то пользователь получает доступ к серверу. Но интернет клиент может быть аутентифицирован с помощью клиентского удостоверения X.509. Процесс аутентификации по данной схеме напоминает процесс аутентификации клиента Notes. При клиентской аутентификации клиент владеет удостоверением X.509, которое содержит секретный и открытый ключи, для пользователя должен так-же существовать персональный документ содержащий такой же открытый ключ.

После того, как доступ к серверу получен, сервер проверяет настройки ограничений (Restriction) в поля Access Server и not Access Server документа Server.

Если пользователь и сервер разрешили доступ, то процесс переходит на новый уровень безопасности. Уровень базы данных. В каждой БД существует список управлений доступом ACL. Если пользователь не указан в ACL конкретной БД, то ему будет отказано в доступе к ней или разрешен доступ на стандартном уровне Default. Составление ACL – обязанность менеджера. Задача разработчика БД понимать это и работать с ACL. Чтобы выполнить это профессионально разработчик должен понимать как ACL, уровня безопасности приложения Notes, средства безопасности на уровне представлений, форм, полей, система шифрования взаимодействуют друг с другом обеспечивая сохранность информации. Установка уровней безопасности в Notes. Ответственный за работу с владельцами и пользователями приложений лежит на разработчике БД, именно он определяет права доступа пользователей в приложении. Владелец – человек или группа лиц наделенных полномочиями позволяющими им изменять дизайн приложения. Владельцы дизайна решают методы и пути разработки. Пользователи – это не только те, кто вводит данные, но и те кто пользуется информацией из данного приложения. Существуют так-же многочисленные типы пользователей с различными потребностями доступа. Типы доступа в приложении могу варьироваться от очень простого до очень сложно и строго контролируемого.

Для БД существует 7 уровней доступа. Привилегии доступа предоставляются отдельным лицам или группам в ACL БД.

Уровни безопастности Domino используемые в БД

Уровень

Привилегии доступа

No access

Нет

Depositor

Позволяет создавать и сохранять документы, но не позволяет изменять или читать документы (даже собственные)

Reader

Позволяет читать документы, но не позволяет создавать или изменять их

Author

Позволяет создавать или изменять свои собственные. Можно также читать другие документы, удалять свои собственные документы.

Editor

Может создавать новые документы, редактировать свои и чужие документы. Можно так-же удалять документы.

Designer

Editor+возможность изменять проект БД

Manager

Disigner+права изменять ACL

 

Дополнительная степень детализации уровней доступа может быть установлена с помощью ролей и специальных полей.

Если приложение содержит несколько БД, то необходимо продумать ACL для каждой из них.

Уровней бывает достаточно не всегда. Например автор не может изменять свой документ, пока форма не содержит поля типа авторских данных и имя этого автора. Никто на любом уровне ACL не может удалять документы из БД. Если не установлен флажок Delete Documents. Права доступа читателя можно уточнить с помощью поля Reader Names. Если документ содержит это поле и в нем нет имени пользователя или группы. В которой данный пользователь состоит, то пользователь не сможет прочитать документы. На самом деле пользователь даже не будет знать о существовании документа. (В75)

В полях имен авторов можно ограничить право создавать и редактировать документы уточнив список пользователей или групп, которые могут редактировать документы.

Ограничение использования форм и представлений с помощью ролей.

Роли используют для того, чтобы более точно настроить ограничения на доступ к БД. Роли создаются в ACL и используются точно таким же образом, как и имена пользователей в формах и представлениях.

Пользователи распределяются по ролям точно так-же как и по группам. Отличительной чертой в данном случае является то, что в группе так-же можно назначить роль. На самом деле роль можно определить для любого субъекта из перечисленных. Но это так-же является и недостатком ролей. Поэтому если определенную роль необходимо назначить только некоторым пользователям из группы то приходиться их имена указывать в ACL явно, а не в составе группы.

Роли появились в 4-й версии Lotus Notes. Диалоговое окно ACL имеет 4 вкладки в левой части окна: Basic (основные сведения), Roles, log, Advanced.

Чтобы создать новую роль в БД необходимо:

1)Открыть окно ACL БД

File->Database->Access Control

2)Щелкнуть на кнопке Roles

3)Щелкнуть на кнопке Add

4)Ввести имя новой роли и щелкнуть кнопку ОК

5)Щелкнуть на кнопке ОК, чтобы закрыть окно ACL

Роли заключенные в квадратные скобки отображаются в окне Roles и в нижнем правом окне Roles на вкладке Basic. В БД можно добавить до 75 ролей. Имена ролей могут состоять из букв и чисел. Когда роль добавлена в БД её можно использовать для ограничения доступа и возможности изменения проекта БД. Как формы, так и представления в окне Properties во вкладке Security. Могут содержать роли. Вкладка Security полезна если в БД есть набор документов в которых хранятся значения обновляемые небольшой группой пользователей (список используемый в ключевом поле). Можно ограничить право доступа создания в форме в которой хранятся списки, и права доступа чтения представлению которая показывает данную форму для группы пользователей. Значения из форм можно получить с помощью команд @Column и @LookUp заданных для скрытых представлений, чтобы ограничить доступ к форме. С помощью ролей необходимо выполнить следующее:

1)Открыть форму в режиме проекта

2)Открыть окно свойств формы и щелкнуть на вкладке Security (с ключом)

3)Отмени отменить отметку в поле All authors and above

4)В разделе Who can create documents окна Properties

5)Щелкнуть на роли списка

Таким же образом права доступа чтения к документам созданным с помощью данной формы можно ограничить отменив установку флажка All reader and above.

В верхней части окна Properties в разделе Default read access for documents created with this form.

Для назначения роли пользователю или группе необходимо на вкладке Basic окна ACL отметить группу или отдельного пользователя в ACL и щелкнуть на соответствующей роли в поле списка Roles. Возле этой роли появится отметка. В системе безопасности на уровне представлений. Роли используются точно так-же. Чтобы ограничить доступ к представлению с помощью ролей необходимо:

1)Открыть представление в режиме проекта

2)Открыть вкладку Security окна View Properties

3)Отменить установку флажка All reader and above в разделе Made be used by

4)Щелкнуть на роли и сохранить представление

 

Роли – это не единственное средство ограничения доступа к формам и представлениям. Таким же образом можно разрешить доступ к группе или отдельному пользователю. Использование ролей не отменяет область действия ACL. Если пользователь имеет в БД право доступа Reader то он может только читать документы. Даже если для данного пользователя добавить право доступа создания для формы то он все равно не сможет создавать документы с помощью этой формы.

С помощью ролей можно так-же ограничить права доступа и редактирования к личным документам. Для этого следует добавить роль в поле типа данных Readers или Authors. Имя роли следует заключать в кавычки и квадратные скобки: “[Creator]”

 

Обеспечение безопасности на уровне представлений и форм.

Безопасность на уровне представлений.

Для обеспечения безопасности используется раздел May be used by вкладки Security окна View Properties, убираем флажок All readers and above и выбираем тех пользователей группы или роли которые будут пользоваться представлением. Используя пиктограмму можно выбрать пользователя из каталога Domino. Флажок Available to public access users (доступен для пользователей с правами общего доступа) делает представления доступным для пользователей с правами доступа Public Access.

Безопасность на уровне форм.

1)Списки прав доступа создания и чтения вкладки Security окна свойств формы.

2)Опция Available access public users (её устанавливаем)

Создаем поле с именем $PublicAccess тип данных поля текстовый, тип поля Computed в поле формулы ставим 1.

Поле $PublicAccess на форме контролирует разрешено ли создание документов. Далее с данным полем можно работать с помощью логических функций языка формул.

 

Скрытин кнопок и других объектов. Зависимости от роли.

Для работы с уровнями доступа используются функции: @userAccess, @UserRoles, @IsMember, @IsNotMember.

@UserRoles область применения: нельзя использовать в формулах отбора колонок и фоновых агентов. Предназначено для использования в БД расположенных на сервере или для локальных БД с установленным свойством.

Across all replicas Использовать единый ACL для всех реплик – это свойство находится на вкладке Advanced

Для локальных БД без этого свойства всегда возвращает пустую строку.

Функция возвращает текстовый список имен ролей на которые в ACL текущей БД назначен текущий пользователь. Имена ролей заключаются в квадратные скобки. Все данные 4 функции можно использовать на закладке hidewhen для написания формулы в окне формулы с установленным флажком hide… if formula is true

@IsMember(строка;список_строк)

@IsMember(список_строк1;список_строк2)

Область применения без ограничений.

Возвращает 1 (true) если строка является элементом списка строк; возвращает 0 (false) в противном случае. Если оба параметра являются списками – возвращает 1 (true), если все элементы списка строк 1 содержаться в списке строк 2. Функция учитывает регистр.

@IsMember(“экзамен”;”зачет”:”’экзамен”:”курсовая”)=1

@IsMember(“Назар”: “Спит”:”Назар”:”учится”:”работает”)=0

//Not @IsMember!=@IsNotMember

@IsNotMember – область применения без ограничений.

Возвращает 1 (true) – если строка не является элементом списка строк, возвращает 0 (false) в противном случае. Если оба параметра являются списками – возвращает 1 (true) если ни один из элементов списка строк 1 не содержится в списке строк 2.

Функция учитывает регистр.

@IsNotMember(“экзамен”;”зачет”:”’экзамен”:”курсовая”)=0

Удалять документы из представления может только администратор (роль). В окне формулы на закладке hidewhen для кнопки действия (hide action is formula true установлен).

@UserAccess(сервер:база_данных;флаги)

Область применения: нельзя использовать в формулах отбора колонок фоновых агентов и всплывающих окон. Для локальных БД в формате синтаксиса без второго параметра.

Enforce a consistent Access Control List across all replicas

Всегда возвращает значение 6:1:1:1:1:1:1:1:1

Если пользователь не имеет доступа к БД то он получает сообщение.

You are not authorized to perform that opration.

Возвращает числовой список элементы которого позволяют определить уровень доступа текущего пользователя к указанной БД. Пустая строка в качестве параметра сервер означает, что БД расположена локально.

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

Параметр флаги может представлять собой список состоящий из следующих значений:

1)[Accesslevel] – возвращает число от единицы до шести определяющая уровень доступа пользователя к БД. Единица соответствует уровню доступа депозитора, 2 – читателя, 3 автора, 4 редактора, 5 дизайнера, 6 менагера

2)[createddocuments] - возвращает 1 (true) если пользватель может создавать документы или 0 false в противном случае.

3)[deletedocuments] – возвращает 1 если пользователь может удалять документы

4)[createpersonalagents] - вовзращает 1 если пользователь может создавать личные агенты или -//-

5)[createpersonalfoldersandviews] - возвращает 1 если пользователь может создавать личные представления и папки -//-

6)[createsharedfoldersandviews] - возвращает 1 если пользователь может создавать только общие представления и папки

7)[createlotusscriptjavaagents] – возвращает 1 если пользователь может создавать агентов на языках lotusscript и java

8)[readpublicdocuments] – возвращает 1 если пользователь может читать общие документы или -//-

9)[writepublicdocuments] - возвращает 1 если пользователь может создавать общие документы или -//-

 

10)[replicateorcopydocuments] - возвращает 1 если пользователь может копировать или реплицировать документы или -//-

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

1):2):3):4):5):6):7):8):9)

В локальной БД для текущего пользователя в ACL установлена опция editor, флаг Replicate or copy documents опущен или сброшен, а флаг enforce… поднят. Тогда формула поля @UserAccess(@Dbname;[replicateorcopydocuments]:[accesslevel]) возвратит 0:4

Обеспечение безопасности на уровне документов и полей.

Для обеспечения безопасности на уровне документов используются поля типов данных Authors (позволяет редактировать документы каждому, кто указан в данном поле и имеет уровень доступа Author and above) и readers (ограничивает доступ чтения к документу.

Если пользователь, группа или сервер не указаны в поле Readers то для этих объектов документ как-бы не существует (они его даже не увидят). Документ не будет реплицироваться при создании копии даже с сервера на другой сервер.

Конечный пользователь получивший доступ на сервер как клиент notes может применять ограничения читателя самостоятельно. Для этого необходимо выделить документ в представлении, щелкнуть на нем правой кнопкой мыши и выбрать document properties, выбрать вкладку security, отменить на ней установку флажка all readers and above, указать необходимые имена или группы в разделе who can read this documents. После чего в документе появится новое поле $readers в котором будут стоять пользователи, группы и роли указанные (нами). Т.е. конечный пользователь может ограничить доступ разработчика к конкретному документу. Как с этим бороться? Если документ храниться на сервере то можно запустить программу агент удаляющую поля $readers. Т.к. сервер имеет локальный доступ к документу то у него должна быть такая возможность. Если же документ находиться в локальной БД то эту же программу агент можно запустить на компьютере пользователя, предварительно убедившись, что у данной программы агента достаточно прав доступа для выполнения этой задачи.

Поле типа данных Authors должно появляться в каждой созданной форме. Поля типов данных Authors and readers лучше сделать вычисляемыми.

Обеспечение безопасности на уровне полей.

Параметры безопасности на уровне полей находятся в раскрывающемся списке security options на вкладке advanced окна свойств поля. Три поля безопасности доступные для полей:

1)Sign If Mailed or Saved in Section – подписать если отправлен по почте или сохранен в разделе.

2)enable encryption for this field – включить шифрование для данного поля

3)Must have at least editor access to use – по крайней мере у пользователя должен быть уровень доступа редактора.

Когда документ подписан Domino создает уникальную электронную подпись используя секретный ключ пользователя. Открытый список пользователя и список удостоверений так-же хранятся в поле $signature, если документ отправлен по почте, и в поле sig_sectionname, где sectionname имя поля раздела если поле находиться в разделе

При шифровании поля используются двойные ключи. Зашифрованные поля отличаются от других отображающимися красными скобками. Чтобы система шифрования начала работать, пользователь должен снабдить свой ID файл необходимыми ключами. Без них поля останутся незашифрованными. Т.е. ID файл должен быть зашифрован. Стандартный ключ шифрования можно поставить в соответствие форме во вкладке security окна свойств формы. Чтобы назначит форме ключ шифрования необходимо сначала указать ключ в ID файле пользователя. Чтобы сохранить документ с зашифрованным полем пользователь должен обладать этим ключом. Ключ шифрования можно создать или вывести на основании ID пользователя. Чтобы создать новый ключ шифрования необходимо выполнить следующие действия:

1)Выбрать в меню комманду File->Security->User Security (для 7-й) и ввести пароль в поле приглашение.

2)Выбрать вкладку Notes Data окна User Security, в ней выбрать раздел Documents.

3)Щелкнуть на кнопке New Secret Key

4)Выбрать тип ключа, добавить имя и комментарий.

После того, как созданы ключи необходимо распространить их на пользователей которым придется вводить данные в зашифрованные поля. Для этого можно воспользоваться кнопкой Mail или вывести ключи в отдельные файлы. После этого ключи можно пересылать по почте или передавать на сменных носителях. Получатель ключей сможет присоединить или ввести ключи в свой ID. После шифрования поля те, кто не обладает ключом всё равно смогут прочитать документ, просто зашифрованные поля будут пустыми. Пользователи знающие ключ смогут просматривать эти поля, вводить данные и изменять их.

Третий параметр безопасности используется редко т.к. этого можно добиться другими средствами, редко редактор наделяется более широкими правами, чем автор, когда автор создает документ то подразумевается, что он имеет доступ к полям, т.к. в этом случае он наделен так-же и правами редактора (относительно отдельного поля).

Особенности работы с программами агентами.

Все программы агенты можно разделить на 2 основные категории: персональные и общие. Персональным агентом может пользоваться только его создатель, при создании и сохранении программы агента подпись текущего User ID сохраняется вместе с программой агентом, благодаря чему можно определить может ли данный пользователь запустить программу агент. Настройка прав создания программ агентов (Simple Actions, язык формул, Lotus Script и Java) осуществляется в ACL. Для запуска персональных программ агентов хранящихся на сервере, пользователь должен быть внесен в поле Run- Personal Agent в разделе Agent Manager документа Server. Если пользователя нет в этом списке то он не сможет хранить персональные программы агенты в общей БД в независимости от настроек ACL.

Общей программой агентом может пользоваться любой, кто имеет доступ к БД право доступа Reader. Для создания общей программы агента необходимо иметь к БД право доступа Designer.

В документе Server так-же существуют поля Run Restricted LotusScript| Java Agents (запускать ограниченные программы агенты на след языках). Run Un Restricted LotusScript| Java Agents.

Ограничения на запуск программ агентов может накладывать администратор, например он может ограничить время работы программ агентов. Перед этим её необходимо протестировать.

Программы агенты можно запускать:

По расписанию с сервера или клиента

Вручную по горячей ссылке в форме или действию представления из меню Action или из списка Agent

На основании действий таких как создание нового документа, изменение документа, отправка в БД и т.д.

Для создания программы агента можно выбрать команду меню Create->Design->Agent (или нажать на пиктограмму Create Agent (лямпочка)).

Если программа агент должна запускаться пользователем вручную то она будет ограничена правами пользователя указанными в ACL.

Первые два флажка (Store search in search barmenu, Store hightlights in documents) предназначены для поисковых программ агентов (их можно хранить и использовать с помощью панели SearchBar). Свойства агентов в разделе RunTime можно выбрать способ запуска агента: По событию или расписанию. Для запуска по событию можно выбрать:

Action menu selection, Agent List Selection (вручную из списка программ агентов), Before new mail arrives (до прибытия новой почты), After new mail has arrived (после прибытия новой почты), After documents are created or modified (если документы были созданы или изменены), when documents are pasted (если документы были вставлены).

Для запуска по расписанию можно выбрать:

1)More than once a day

2)Daily

3)Weekly

4)Monthly

5)Never

Щелкнув на кнопке Shedulde (планирование или расписание разработчик может настроить время и дату запуска программы агента в зависимости от выбранных настроек 1-5). Сервер на котором запускается программа агент (нижняя часть окна), в средней части окна Agent Shedulde расположено 3 переключателя: Start running Agent on this date (запустить программу агент в указанную дату), Stop -\\- (остановить --//-), Don’t run agent in weekends. Если в нижней части окна установить флажок Choose when agent is enabled, то сервер на стадии создания программы агента можно не выбирать.

Опция On Shedulde Never может использоваться для программ агентов запускаемых другими программами агентами. После того как установлено, когда программы агенты должны запускаться необходимо определить с какими документами они будут работать (поле target в разделе Runtime). В поле Target возможны следующие значения:

1)All documents in database

2)All new & modified documents

3)All unread documents in view

4)All documents in view

5)All selected documents

6)None

7)each incoming mail document

8)newly received mail documents

9)pasted documents

Для первых двух пунктов из Triger доступны первые 6 пунктов, для 3 пункта из Triger только 7-й пункт, для четвертого пункта из Triger только 8-й пункт, для последнего пукта только 9-й.

Создание программ агентов запускаемых на выделенном наборе документов позволяет пользователям изменять поля в большом количестве документов.

77)Включение программ агентов в работу.

Программы агенты могут выполнять команды simple actions, формулы lotus script, java, формулы языка формул. Большинство стандартных заданий можно организовать с помощью Simple Actions, их можно комбинировать с функциями языка формул. С помощью языка формул можно выполнить более сложные программы агенты. Преимущество языка Lotus Script при написании программ агентов – то, что он многократно обрабатывает документы, а Simple Actions и язык формул обрабатывают документы только один раз. Программы агенты созданные с помощью Java можно легко перенести в Web браузеры.

Simple Actions это опция которую можно установить, чтобы определенный набор команд выполнялся автоматически. Имя действия определяет задание, которое будет выполнятся при запуске программы агента.

Список Simple Actions

Copy to database

Copy to folder

Delete from database

Mark documents read

-//- unread

Modified field

Modify field

Modify fields by form изменить поля по форме

Move to folder

Remove from folder

Reply to sender

Run agent

Send document

Send mail message

Send newsletter summary послать краткий информационный бюллетень

@Functions formula

Можно добавить несколько действий, действия delete from database всегда выполняется последним независимо от его расположения, с помощью программ агентов использующих Simple Actions можно так-же связать вместе 2 и более программ агента, применив действие Run Agent.

Использование формул в программах агентах.

Для создания программы агента написанной на языке формул в поле со список Action выберем 15. Далее существует 3 возможности:

1)update existing document when run

2)create new documents when run

3)select documents when run

Чтобы создать программу агента основанную на формулах необходимо использовать оператор Select. Если оператор Select пропущен то он будет автоматически вставлен в конце формулы: Select @All. Если программа агент содержит оператор select, задающий условие выбора отличное от выбора всех документов, то необходимо проверить его работу с помощью select documents when run, чтобы перед тем как изменить документы убедиться, что программа агент выделяет нужные наборы данных.

Работать с полями можно используя ключевое поле field или функцию @SetField. Можно создавать и удалять поля в документах, можно присваивать значения переменным. Если документы уже находятся в БД то новые имена полей не будут автоматически обновляться в существующих документах.

Перемещение данных из старых полей в новые существующих документов.

SELECT FROM=”Main_form”

FIELD NewField:=OldField

FIELD OldField:=@DeleteField

Пересчет полей в документе

@Command([ToolsRefreshAllDocs])

 


Дата добавления: 2015-09-29; просмотров: 34 | Нарушение авторских прав




<== предыдущая лекция | следующая лекция ==>
1. История развития методов преодоления открытой органической ринолалии.1.Первые работы по рино принадлежат врачам. Усилия врачей были направлены на полное оперативное восстановление небного | Шоколадные коржики с кремом и клубникой

mybiblioteka.su - 2015-2024 год. (0.127 сек.)