Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие по курсу ИС_итог 04.12.docx
Скачиваний:
47
Добавлен:
11.02.2016
Размер:
5.09 Mб
Скачать

1. Методика выполнения лабораторной работы

1. Для создания нового агента выбирается объект базы данных из группы Shared Code / Agents / Create agent. Открывается окно свойств агента.

2. На первой вкладке вводится:

– имя;

– общедоступность или персональность агента (эта опция не может быть изменена в будущем при редактировании агента);

– способ запуска агента.

  1. Множество документов, на которых запускается агент.

  1. Код агента.

  2. Есть ряд опций, которые отвечают за периодичность запуска, на каком сервере агент пускается, доступен ли он для публичных пользователей, сужает множество документов, на которых пускается агент и т.д. Эти опции регулируются кнопками Options, Schedule, Add Search.

4.2.Множество документов, на которых запускается агент.

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

ТО есть - есть множество документов, которые будут передаваться агенту как «unprocessed» либо через «session.DocumentContext» и которые определяются опцией агента «На каких документах его пускать». Далее агент может работать с этим множеством, а может сам обратиться, например, к представлению и обработать его.

Пример:

Создать агента, который запускается раз в день и работает на «All documents in database». В агенте в его коде, вместо того чтобы брать документы и что-то с ними делать из session.currentDatabase.UnprocessedDocuments сделать так:

Set view = session.CurrentDatabase.GetView("MyView")

Set doc=view.GetFirstDocument

While not doc is nothing

Set doc=view.GetNextDocument(doc)

Wend

В таких случаях надо быть аккуратным - по стандартной логике такой агент берет документ из представления, что-то с ним делает, выставляет флаг, что он этот документ уже обработал и переходит к следующему. Если в представлении стоит в формуле выбор, что документы с флагом - не попадают в представление, но как только документу поставят флаг – он будет выведен из представления. Поэтому метод взятия следующего Set doc=view.GetNextDocument(doc) - выдаст ошибку.

Чтобы этого не было – следующий документ берется ДО того как обрабатывается текущий, и перед переходом на следующий виток цикла текущему документу присваивается следующий. Вот как это можно выполнить:

While not doc is nothing

Set doc1=view.GetNextDocument(doc)

Set doc=doc1 Wend

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

  1. Все документы в базе.

  2. Все новые и модифицированные с момента последнего запуска.

  3. Все непрочитанные в текущем представлении.

  4. Все документы в текущем представлении.

  5. Выбранные пользователем документы.

  6. Run Once - Это когда множество документов определяется самим агентом. Так же для получения доступа к текущему документу (при запуске агента на каком-то открытом документе) – в UnprocessedDocuments будет только текущий.

  7. Есть ряд предопределенных множеств - Pasted document, Newly created и т.д., которые проставляются принудительно для агентов запускающихся по событиям базы или прихода почты.

Для агентов, запускающихся с Web следующие опции недоступны:

  • All unread documents in view.

  • All documents in view.

  • Selected documents.

  • Pasted documents.

Другими словами перечисленные опции можно использовать в агенте. Можно и вызвать агента через Web, но множество будет пустым.

Опция для указания более точно множества документов, подаваемых на вход, называется «Add search». Эта опция позволяет добавить условия на те документы, которые задаются в обычной опции. Например, задать какие-то условия на поля и пр.