Реализация сценария бизнес-процесса

Разработка модели процесса размещения заказа путем запроса. Пошаговая настройка процесса, создание форм, настройка подпроцессов и мультидействий. Настройка узлов ожидания, ветвлений и обработчиков. Загрузка процессов на сервер и их тестирование.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 16.01.2018
Размер файла 1,8 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Рисунок 39 - Свойства обработчика

В первом обработчике нам нужно определить две переменные - От и ПредметКонтракта. «От» будет выводиться на каждой последующей форме. Она будет показывать дату и время, когда секретарь ЦЗО отправил уведомление. А предмет контракта обычно указывается, как и наименование запроса котировок. Эта переменная будет использоваться для генерации извещения.

Выберем класс обработчика, нажав кнопку с троеточием. Появится окно выбора класса обработчика (рисунок 40).

Рисунок 40 - Окно выбора класса обработчика

Нам требуется обработчик ExecuteFormulaActionHandler (вычисление формулы). Выбираем его, нажимаем «ОК».

Теперь нажмем кнопку с троеточием напротив свойства обработчика «Конфигурация». Открылось окно, показанное на рисунке 41.

Рисунок 41 - Окно построения формулы

Здесь можно выбрать нужную переменную и функцию к ней. В нашем случае необходимо ввести следующий код:

ПредметКонтракта = НаимЗК;

От = current_date_time();

Функция current_date_time() выбрана в библиотеке функций, открывающейся при нажатии в конфигураторе «Вставить функцию». Она возвращает текущую дату и время.

Таким образом, при подтверждении секретарем ЦЗО выполнения задания «Уведомить о проведении запроса котировок» переменные ПредметКонтракта и От будут автоматически определены.

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

ДатаОпубликования = date(ДатаНачалаПодачиЗаявок);

Функция date выделяет из переменной с типом дата-время только дату. Переменная ДатаОпубликования используется для генерации извещения о проведении запроса котировок. А так как дата начала подачи заявок обычно совпадает с датой опубликования извещения на официальном сайте, то присваиваем значение даты начала подачи дате опубликования.

4.5.3 Настройка мультидействия «Получить уведомление о проведении запроса котировок»

После выполнения секретарем ЦЗО первого действия, точка управления попадает в такой узел как мультидействие. Он называется «Получить уведомление о проведении запроса котировок».

1. Построение модели подпроцесса «Получить уведомление о проведении запроса котировок».

Создадим новый процесс проекта - «Получение уведомления о проведении запроса котировок (мульти)». Открываем его рабочую область, щелкая по его названию двойным щелчком (в проводнике).

На вкладке граф построим следующую модель (рисунок 42).

Рисунок 42 - Граф подпроцесса «Получение уведомления о запросе котировок (мульти)»

Использование объекта «Отправить сообщение» будет объяснено позже.

Созданная роль «КК» обозначает смысл того, что этот процесс будет запускаться одновременно для всех членов котировочной комиссии. Она создана без инициализатора, так как инициализация происходит в начальном узле. На рисунке 43 показан список ролей процесса.

Рисунок 43 - Вкладка «Роли» подпроцесса «Получение уведомления о запросе котировок (мульти)»

На рисунке 44 показаны переменные подпроцесса.

Рисунок 44 - Переменные подпроцесса «Получение уведомления о запросе котировок (мульти)»

Все переменные этого процесса имеют аналог в главном процессе «Проведение запроса котировок» кроме трех переменных:

· ФИО - переменная строкового типа. Хранит ФИО одного исполнителя. Она будет отдельная для каждого экземпляра процесса (для каждого члена комиссии);

· Должность - переменная строкового типа. Хранит должность одного исполнителя. Она также будет отдельная для каждого экземпляра процесса (для каждого члена комиссии);

· Вопрос - переменная строкового типа. Будет хранить вопрос каждого из членов комиссии (у каждого своя переменная).

2. Собственно настройка мультидействия «Получение уведомления о запросе котировок».

Теперь перейдем на главный процесс «Проведение запроса котировок». Для настройки мультидействия «Получить уведомление о проведении запроса котировок», щелкаем по нему правой кнопкой мыши и выбираем «Мультидействие». Открывшееся окно показано на рисунке 45.

Рисунок 45 - Окно настройки мультидействия

На рисунке 45 видно, что мы находимся на вкладке тип мультидействия «По группе». Именно этот тип на данный момент нам нужен, так как экземпляр подпроцесса «Получение уведомления о запросе котировок (мульти)» должен запускаться для каждого члена КК, потому что каждый член КК должен ознакомиться с поступившей информацией.

В выпадающем списке «Название подпроцесса» необходимо выбрать соответствующий подпроцесс. Далее в выпадающем списке «Название группы» выберем переменную «Группа1». Она хранит значение по умолчанию «Котировочная комиссия», а именно такая группа создана администратором на сервере, и она включает в себя членов комиссии.

В выпадающем списке «Имя переменной в подпроцессе» выберем роль подпроцесса «КК».

Теперь необходимо связать переменные главного процесса и подпроцесса. Нажимаем на кнопку «Добавить». На рисунке 46 показано окно для добавления связи переменных.

Рисунок 46 - Окно создания связи между переменными

Выбирается имя переменной в процессе и затем соответствующее имя в подпроцессе. Если установлена только галочка «чтение», то это означает, что настраиваемая переменная будет читаться из процесса в подпроцесс. А если установлены две галочки и «запись» и «чтение», то настраиваемая переменная после выхода из подпроцесса будет записывать новое значение в переменную главного процесса.

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

Рисунок 47 - Окно настройки мультидействия «Получение уведомления о запросе котировок (мульти)»

Из рисунка 47 видно, что переменным-массивам ФИОМассив, ДолжностьМассив и ВопросыМассив поставлены в соответствие строковые переменные подпроцесса ФИО, Должность и Вопросы соответственно. Также этим парам установлена запись из подпроцесса. Это означает, что, например, каждый экземпляр переменной ФИО будет записываться в массив главного процесса ФИОМассив по порядку. То есть, кто первый выполнит задание (ознакомится с предоставленной информацией, задаст вопросы), ФИО того и будет первым в массиве и т.д.

3. Создание формы для узла-действия подпроцесса «Получение уведомления о запросе котировок (мульти)».

Теперь главный процесс и подпроцесс связаны. Перейдем к созданию формы для подпроцесса «Получение уведомления о запросе котировок (мульти)».

Добавим файл проверки переменных формы и затем создадим форму (рисунок 48) (как это сделано в разделе 4.5.1).

Рисунок 48 - Форма задания «Получить уведомление о проведении запроса котировок»

На этой форме будет выведено все то, что было введено Секретарем ЦЗО в начале процесса.

Для вывода переменных НаимЗК, всех дат и комментария выберем на панели объектов правый из двух одинаковых значков «Вывод переменной». В появившемся окне (рисунок 49) выберем название соответствующей переменной и формат её вывода.

Рисунок 49 - Настройка вывода переменных

На рисунке 49 показана настройка вывода переменных НаимЗК и Дата1.

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

Выберем левый значок из двух одинаковых «Freemarker тег». Настроим тег так, как показано на рисунке 50.

Рисунок 50 - Настройка возможности скачивания файла

То есть выбираем в выпадающем списке «Скачать файл» и затем выбираем переменную с этим файлом.

Стоит отметить, что на форму была добавлена горизонтальная линия с помощью инструмента на панели «Вставить горизонтальную линию» для визуального разделения части с информацией для членов комиссии и части, где они должны ввести свой вопрос.

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

Также на форму добавлен вывод даты и времени отправки секретарем ЦЗО уведомления (в углу формы). Это сделано во избежание путаницы, если уведомлений будет несколько.

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

4. Настройка обработчиков подпроцесса «Получить уведомление о проведении запроса котировок (мульти)».

Настроим обработчики подпроцесса.

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

Вопрос = "-";

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

Два других обработчика прикреплены к узлу-действию. Они имеют другой класс - ActorNameActionHandler (имя исполнителя). Этот обработчик предназначен для возвращения информации об исполнителе.

Конфигурация первого обработчика представлена на рисунке 51, второго - на рисунке 52.

Рисунок 51 - Настройка конфигурации для возвращения имени исполнителя

В коде сотрудника указывается используемая в процессе роль. В поле «Формат» выбирается требуемая информация об исполнителе. В поле «Переменная» выбирается переменная, которая будет хранить поступившую информацию.

В симуляторе при создании исполнителей в поле name (Имя) мы вводили фамилию и инициалы исполнителя, а в поле description (Описание) - уточняли должность (назначение) исполнителя.

Рисунок 52 - Настройка конфигурации для возвращения должности исполнителя

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

Также для этих двух обработчиков необходимо уточнить, при каком событии они будут выполняться. В свойстве обработчиков «Событие» выберем «При создании задачи» (рисунок 53).

Рисунок 53 - Свойства обработчика

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

4.5.4 Настройка подпроцесса «Организовать заседания»

Перейдем снова на главный процесс «Проведение запроса котировок». После того, как все члены КК ознакомились с информацией о будущем запросе котировок, председателем КК организовываются заседания комиссии.

1. Построение модели подпроцесса «Организовать заседания (подпроцесс)».

Для сокращения размера главного процесса был создан подпроцесс «Организовать заседания (подпроцесс)». Щелкаем на нем два раза в проводнике. На вкладке «Граф» необходимо нарисовать граф подпроцесса, как показано на рисунке 54.

Рисунок 54 - Граф подпроцесса «Организовать заседания (подпроцесс)»

На рисунке 55 показана созданная роль подпроцесса инициализированная с исполнителем Ивановым (он является председателем КК).

Рисунок 55 - Роль подпроцесса «Организовать заседания (подпроцесс)»

На рисунке 56 показаны переменные подпроцесса.

Рисунок 56 - Переменные подпроцесса «Организовать заседания (подпроцесс)»

В таблице 4 приведем описание некоторых незнакомых переменных подпроцесса.

Таблица 4 - Переменные подпроцесса «Организовать заседания (подпроцесс)»

Название

Тип

Описание

ВопросыТекст

Строковый

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

Уточнение

Строковый

Хранит строку, которая содержит сведения о том, будет ли проводиться предварительное заседание или нет.

ДатаНачалаРаботыКомиссии

Дата-время

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

ЯвкаМассив

Список (массив)

Хранит информацию о том, придет или не придет исполнитель в назначенное время на заседание.

ПричинаМассив

Список (массив)

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

ИсполнительМассив

Список (массив)

Хранит имена исполнителей (для таблицы отчета явки/неявки исполнителей на заседания).

ДолжностьМассив2

Список (массив)

Записывает информацию из главного процесса, для таблицы вывода вопросов исполнителей (данные из подпроцесса «Получить уведомление о проведении запроса котировок (мульти)»)

ДолжностьМассив

Хранит информацию о должностях исполнителей (для таблицы отчета явки/неявки исполнителей на заседания).

2. Непосредственно настройка подпроцесса на главном процессе «Проведение запроса котировок».

Перейдем на главный процесс и настроим подпроцесс «Организовать заседания». Для этого нужно щелкнуть правой кнопкой мыши на подпроцессе и в появившемся контекстном меню выбрать «Подпроцесс».

На рисунке 57 показано окно с уже произведенными настройками подпроцесса.

Рисунок 57 - Окно настройки подпроцесса «Организовать заседания»

Здесь, как и при настройке мультидействия, необходимо выбрать подчиненный процесс в выпадающем списке «Название подпроцесса», но тип соединения не устанавливается, только связываются переменные главного и подчинённого процессов.

Переменные-массивы передают свои значения списков переменным подпроцесса (список вопросов членов комиссии). Все даты: дата начала подачи заявок, дата окончания подачи заявок, дата предварительного заседания, которые устанавливаются председателем КК, и переменная ПредварительноеЗаседание (указывающая будет ли проводиться заседание) записываются из подпроцесса в главный процесс.

3. Создание формы для узла-действия «Утвердить вопросы для обсуждения и назначить дату и время встреч».

Перейдем обратно в подпроцесс «Организовать заседания (подпроцесс)». Создадим форму и файл проверки переменных формы для узла-действия процесса «Утвердить вопросы для обсуждения и назначить дату и время встреч». Созданная форма показана на рисунке 58.

Рисунок 58 - Форма для задания «Утвердить вопросы для обсуждения и назначить дату и время встреч»

Ввод необходимых дат настраивался с помощью «Freemarkerтега» (как в разделе 4.5.1). Вывод списка с вопросами членов комиссии можно настроить,также используя «Freemarkerтег» (рисунок 59).

Рисунок 59 - Настройка вывода списка

Для этого необходимо в свойствах тэга выбрать «Отобразить связанные списки». Надо отметить, что полную настройку связанного списка произвести на вкладке «Дизайн» html-редактора невозможно, так как здесь в свойствах тега можно выбрать только одну переменную, а нам необходимо вывести три переменные: ФИОМассив, ДолжностьМассив2 и Вопросы Массив. Поэтому перейдем на вкладку «Код».

Конечный код созданной формы выглядит следующим образом:

<P><STYLE type="text/css">

.form1 {

margin: 0px;

padding: 10px;

font: large Arial,Helvetica,sans-serif;

}

.form1 textarea {

margin-left: 50px;

width: 500px;

height: 200px;

overflow: auto;

}

.form2 textarea {

width: 300px;

height: 50px;

overflow: auto;

text-align: right;

font: small Arial,Helvetica,sans-serif;

} </STYLE></P>

<DIV style="float: right; margin: 0px; font: small Arial,Helvetica,sans-serif; color: #bcbcbc; text-align: right">Запроскотировок:

<P class="form2"><TEXTAREA name="НаимЗК" style="border-top-style: none; border-right-style: none; border-left-style: none; background-color: #fff; border-bottom-style: none"/></P>

<P>от ${От?datetime}</P>

</DIV>

<DIV class="form1">

<P><STRONG>Установите дату и время начала и окончания подачи котировочных заявок:</STRONG></P>

<P style="margin-left: 50px">Дата и время начала подачи заявок: ${InputDateTime("ДатаНачалаПодачиЗаявок", "datetime")}</P>

<P style="margin-left: 50px">Дата и время окончания подачи заявок: ${InputDateTime("ДатаОкончанияПодачиЗаявок", "datetime")}</P>

<P style="margin-left: 50px">Дата и время начала работы комиссии: ${InputDateTime("ДатаНачалаРаботыКомиссии", "datetime")}</P>

<P><STRONG>Ознакомьтесь с вопросами, выдвинутыми на обсуждение членами комиссии:</STRONG></P>

<P style="margin-left: 50px">${DisplayLinkedListsInTable("ФИОМассив", "ДолжностьМассив2", "ВопросыМассив")}</P>

<P><STRONG>Вы можете внести свои поправки и комментарии в следующем поле:</STRONG></P>

<P><TEXTAREA name="ВопросыТекст"/></P>

<P><STRONG>Требуется ли предварительное заседание (до начала работы комисии) для обсуждения представленных вопросов?</STRONG></P>

<P style="margin-left: 50px"> <INPUT checked="checked" name="ПредварительноеЗаседание" type="radio" value="true"/>Да <INPUT name="ПредварительноеЗаседание" type="radio" value="false"/>Нет</P>

<P style="margin-left: 50px">Дата и время проведения предварительного заседания: ${InputDateTime("ДатаПроведенияЗаседания", "datetime")}</P>

</DIV>

Жирным текстом выделен код, который производит нужную настройку списков.

Ещё один новый объект, который был использован на этой форме это «Кнопка выбора» . Обе используемые кнопки выбора необходимо связать с переменной логического типа ПредварительноеЗаседание (рисунок 60).

Рисунок 60 - Настройка кнопок выбора

Одна из них будет иметь значение True (если будет проводиться предварительное заседание), вторая - False (если не будет проводиться предварительное заседание).

На этой и на последующих формах добавлен вывод переменной НаимЗК (рисунок 61), чтобы каждый исполнитель не путался при работе с разными запросами котировок.

Рисунок 61 - Заметка на форме

Итак, получив данное задание, председатель КК устанавливает все необходимые даты, рассматривает вопросы членов комиссии, добавляет поправки и комментарии. Затем он решает, нужно ли проводить предварительное заседание. Если - да, то устанавливает его дату и время.

4. Настройка ветвления в подпроцессе «Организовать заседания (подпроцесс)».

После узла-действия «Утвердить вопросы для обсуждения и назначить дату и время встреч» переход попадает на ветвление. Дальнейший путь точки управления здесь будет зависеть от переменной ПредварительноеЗаседание. Нажмем правой кнопкой мыши на ветвлении и выберем «Изменить». В появившемся окне произведем настройки, как показано на рисунке 62.

Рисунок 62 - Настройка ветвления

На рисунке 62 видно название двух стрелок, выходящих из ветвления. Управление будет проходить по стрелке «с предварительным заседанием», если переменная ПредварительноеЗаседание будет равна значению true, или по стрелке «без предварительного заседания», если переменная ПредварительноеЗаседание будет равна значению false.

Нажимаем ОК.

Теперь, если управление будет идти по стрелке «с предварительным заседанием», в прикрепленном к ней обработчике (ExecuteFormulaActionHandler) переменной Уточнение будет присваиваться пустое значение:

Уточнение = "";

Если управление будет идти по стрелке «без предварительного заседания», в её прикрепленном обработчике (также ExecuteFormulaActionHandler) переменной Уточнение будет присваиваться значение "Предварительное заседание проводиться не будет", а не нужной в данном случае дате проведения этого заседания будет присваиваться просто текущая дата и время:

ДатаПроведенияЗаседания = current_date_time();

Уточнение = "Предварительное заседание проводиться не будет";

5. Настройка мультидействия «Ознакомиться с информацией по организации заседаний» подпроцесса «Организовать заседания».

С информацией о заседаниях, введенной председателем КК должны ознакомиться все остальные члены комиссии. Для этого настроим мультдействие «Ознакомиться с информацией по организации заседаний». Оно будет связано с одноимённым созданным подпроцессом, граф которого показан на рисунке 63.

Рисунок 63 - Граф процесса «Ознакомиться с информацией по организации заседаний (мульти)»

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

Переменные процесса показаны на рисунке 64.

Рисунок 64 - Переменные подпроцесса «Ознакомиться с информацией по организации заседаний (мульти)»

Настроим мультидействие. Тип настройки в этот раз будет не «по группе» (как в пункте 2раздела 4.5.3), а по отношению. Для начала необходимо создать это отношение в симуляторе под логином Administrator.

Для этого в меню выберем пункт «Отношения» и щелкнем по нему (рисунок 65).

Рисунок 65 - Пункт меню «Отношения»

Нажимаем «Создать отношение». Вводим имя и описание отношения (рисунок 66).

Рисунок 66 - Создание отношения

Нажимаем кнопку «Создать». В списке отношений появилось новое. Щелкаем по его названию, а затем в появившемся окне щелкаем «Создать пару». На рисунке 67 показано окно создания пары.

Рисунок 67 - Окно создания пары в отношении

Для левой части выбираем действующее лицо отношения, а для правой выбираем, к чему или к кому оно относится. В нашем случае будет всего 4 пары в отношении (рисунок 68).

Рисунок 68 - Список пар отношения КК

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

Созданное отношение КК отражает всех членов котировочной комиссии кроме председателя.

Возвратимся к настройке мультдействия «Ознакомиться с информацией по организации заседаний» в редакторе бизнес-процесса. Щелкнем правой кнопкой мыши по этому мультидействию (граф процесса «Организовать заседания (подпроцесс)»), выберем «Мультдействие». Окно его настройки показано на рисунке 69.

Рисунок 69 - Окно настройки мультидействия «Ознакомиться с информацией по организации заседаний»

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

Теперь создадим форму для узла-действия «Ознакомиться с информацией по организации заседаний» одноименного подпроцесса. Она будет выглядеть следующим образом (рисунок 70):

Рисунок 70 - Форма задания «Ознакомиться с информацией по организации заседаний

На этой форме члены комиссии изучает информацию, переданную председателем КК. Затем каждый из них должен уточнить, придет ли он на заседания и, если - нет, указывается причина.

Переменная ЯвкаНаЗаседание связана с объектами «Кнопки выбора». Переменная Причина связана с текстовой областью, расположенной внизу формы. Переменная Уточнение выводится на следующей строчке после даты предварительного заседания.

Обработчики, прикрепленные к узлу-действию подпроцесса «Ознакомиться с информацией по организации заседаний (мульти)» имеют такой же смысл, как было описано в пункте 4 раздела 4.5.3 (ActorNameActionHandler). Они возвращают переменным Исполнитель и Должность соответственно имя и должность пользователя, который открыл свое задание.

6. Создание формы и описание узла-действия «Получить отчет о явке членов комиссии на заседания».

После того, как члены КК ознакомились с информацией по заседаниям, председателю приходит отчет об их явке (соответствующий узел-действие на рисунке 71). Здесь можно увидеть неявное ветвление - две стрелки с разными именами выходят из узла-действия. На форме задания это будет отражаться как две кнопки с названиями собственно «Назначить другое время для заседаний» и «Продолжить».

Председатель, исходя из полученного отчета, может решить либо продолжить процесс, либо назначить другое время заседаний.

Рисунок 71 - Узел-действие «Получить отчет о явке членов комиссии на заседания»

Созданная форма (рисунок 72) будет содержать только связанные списки, то есть отчет: имя исполнителя, должность, придет/не придет, и причину (данные по каждому исполнителю), и заметку в углу формы (наименование текущего запроса котировок и дата начала процесса). Связанные списки в html-коде будут отображаться следующим образом:

<DIV>${DisplayLinkedListsInTable("ИсполнительМассив", "ДолжностьМассив", "ЯвкаМассив", "ПричинаМассив")}</DIV>

Рисунок 72 - Форма узла-действия «Получить отчет о явке членов комиссии на заседания»

Стоит также отметить, что если управление пойдет по пути «Назначить другое время для заседаний», то в имеющемся на этом переходе обработчике обнулятся переменные-списки (ИсполнительМассив, ДолжностьМассив, ЯвкаМассив, ПричинаМассив). Этот обработчик имеет класс BSHActionHandler. Он предназначен для пересчета переменных. Его конфигурация будет иметь вид:

ЯвкаМассив = null;

ПричинаМассив = null;

ИсполнительМассив = null;

ДолжностьМассив = null;

Перейдем на главный процесс «Проведение запроса котировок». После завершения подпроцесса «Организовать заседания» управление попадает в ветвление. Это ветвление идентично ветвлению, описанному в пункте 4 раздела 4.5.4. Оно также зависит от переменной ПредварительноеЗаседание, поэтому приводить описание его настройки не будем.

Таким образом, переменная ПредварительноеЗаседание определяет два пути бизнес-процесса. Первый путь (когда предварительное заседание будет проводиться) является более длинным. Здесь возникают такие дополнительные действия, как «Разобраться с нерешенными вопросами», «Ответить на вопросы котировочной комиссии», «Получить ответ от ЦЗО». По второму пути переходят сразу к действиям с документами. Председатель выберет этот путь, если у членов КК и у него самого не возникло никаких важных вопросов, и предварительное заседание не требуется, и, следовательно, можно перейти к последним приготовлениям для размещения заказа путем запроса котировок.

4.5.5 Настройка узла-ожидания

Момент появления у секретаря КК задания «Разобраться с нерешенными вопросами» зависит от узла-ожидания, расположенного перед этим узлом-действием (рисунок 73).

Рисунок 73 - Узел-ожидание перед узлом-действием «Разобраться с нерешенными вопросами»

На рисунке 73 видно, что на переходе указано «0 минут». Это означает, что точка управления не будет задерживаться в узле-ожидании.

Нам необходимо, чтобы задание «Разобраться с нерешенными вопросами» приходило после того, как наступит время проведения заседания, и когда секретарь уже будет примерно знать, есть или нет вопросы, которые необходимо задать заказчику.

Для настройки узел-ожидание выделим и посмотрим его свойства (рисунок 74).

Рисунок 74 - Свойства узла-ожидания

Здесь можно ввести ему название, а для настройки времени задержки нажмем кнопку с троеточием напротив свойства «Задержка». Откроется окно, показанное на рисунке 75.

Рисунок 75 - Окно установки задержки узла-ожидания

Сейчас в поле базовой даты установлена «Дата прихода управления в состояние». Это означает, что отсчет времени задержки (установленной в полях ниже) ведется с того момента, когда точка управления оказывается в этом узле-ожидании. Нам же в качестве базовой даты требуется установить дату проведения заседания. Для этого нажмем на кнопку с троеточием всвойств «Базовая дата» и выберем нужную переменную (рисунок 76).

Рисунок 76 - Выбор переменной

Затем в поле «Задержка таймера относительно базовой даты», нажав кнопку с троеточием, введем «10». В поле «Единица измерения» выберем «минуты». Нажмем «ОК».

На рисунке 77 показано, как теперь будет выглядеть узел-ожидание на графе.

Рисунок 77 - Настроенный узел-ожидание

Теперь задание «Разобраться с нерешенными вопросами» будет приходить секретарю через 10 минут после начала заседания.

4.5.6 Создание формы и описание узла-действия «Разобраться с нерешенными вопросами»

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

Рисунок 78 - Форма задания «Разобраться с нерешенными вопросами»

Текстовая область на форме связана с переменной НерешенныеВопросы.

При выполнении этого задания секретарь КК будет видеть на форме две кнопки с названиями «Таких вопросов нет» и «Направить имеющиеся вопросы», так как узел-действие «Разобраться с нерешенными вопросами» содержит неявное ветвление - из него выходят две стрелки: «Таких вопросов нет» и «Направить имеющиеся вопросы».

Таким образом, запустив это задание, секретарь КК может ввести вопросы, которые не были решены во время заседания котировочной комиссии и нажать на кнопку «Направить имеющиеся вопросы». Если же таких вопросов нет, то он просто может нажать на кнопку «Таких вопросов нет» и у него появится задание по заполнению данных для генерации извещения.

4.5.7 Создание формы для узла-действия «Ответить на вопросы котировочной комиссии»

Если секретарь КК нажмет на кнопку «Направить имеющиеся вопросы», то секретарю ЦЗО придет задание «Ответить на вопросы котировочной комиссии». Форма этого задания показана на рисунке 79.

Рисунок 79 - Форма задания «Ответить на вопросы котировочной комиссии»

На этой форме выведутся вопросы написанные секретарем (переменная НерешенныеВопросы), а ниже секретарь ЦЗО может ввести в текстовую область свой ответ (переменная ОтветНаВопросКК).

4.5.8 Настройка мультидействия «Получить ответ от ЦЗО (мульти)»

Ответы на вопросы по текущему запросу котировок должны прийти все членам КК, поэтому воспользуемся мультидействием, настроенным «по группе» (как в пункте 2 раздела 4.5.3). Граф нового подпроцесса, который будет связываться с мультидействием, показан на рисунке 80.

Рисунок 80 - Граф подпроцесса «Получить ответ от ЦЗО (мульти)»

Переменные подпроцесса показаны на рисунке 81. Роль создана одна - «КК», без инициализатора.

Рисунок 81 - Переменные подпроцесса «Получить ответ от ЦЗО (мульти)»

Перейдем на процесс «Проведение запроса котировок». Настроим мультидействие «по группе» «Получить ответ от ЦЗО», как показано на рисунке 82.

Рисунок 82 - Окно настройки мультидействия «Получить ответ от ЦЗО»

Создадим форму для задания «Ознакомиться с информацией по нерешенным вопросам» (подпроцесс «Получить ответ от ЦЗО (мульти)»). Она показана на рисунке 83.

Рисунок 83 - Форма задания «Ознакомиться с информацией по нерешенным вопросам»

На этой форме каждый член КК ознакомится с ответом ЦЗО. Здесь выводится переменная ОтветНаВопросКК.

4.5.9 Создание формы для задания «Ввести данные для генерации извещения»

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

Секретарю КК приходит задание «Ввести данные для генерации извещения». Созданная форма этого задания показана на рисунке 84.

Рисунок 84 - Форма задания «Ввести данные для генерации извещения»

В этой форме секретарь вводит все необходимые данные для генерации извещения. При этом наименование запроса котировок и предмет контракта будут уже выведены на основании значения переменной НаимЗК (но их можно будет редактировать).

При создании формы использовалось два новых объекта:

· Текстовое поле . Это однострочное поле для ввода текста или цифр. На рисунке 85 показаны настройки текстового поля для ввода значения переменной НомерИзвещения. Здесь нужно выбрать необходимую переменную, связанную с текстовым полем. Также можно выбрать тип поля, ввести его начальное значение, указать максимальное количество вводимых символов.

Рисунок 85 - Свойства текстового поля

Текстовое поле на форме задания «Ввести данные для генерации извещения» также используется для ввода переменных ЦенаРуб, ЦенаКоп, НаименованиеКлассификации, НомерКлассификации;

· Список . Это объект для создания выпадающего списка. На рисунке 86 показано окно настройки списка. Здесь необходимо выбрать связанную с ним переменную, такую переменную, которая будет записывать выбранное в списке значение. Для нас - это переменная ПодписаниеКонтракта. В следующем поле «Значение» можно ввести начальный вид списка, то есть то, что будет видеть пользователь, если он ещё не выбрал нужное значение в списке. Далее необходимо настроить «Доступные варианты». Для этого в поле «текст» нужно ввести текст, который будет видеть пользователь, а в поле «значение» - соответствующее этому тексту значение (оно будет записано в переменную). После того, как введен и «Текст» и «Значение» необходимо нажать кнопку «Добавить». Таким образом можно ввести все значения списка.

Рисунок 86 - Свойства создаваемого списка

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

После ввода секретарем КК всех необходимых данных извещение генерируется с помощью бот-приложения (в узле-действии «Сгенерировать извещение»). Настройка бот-приложения будет приведена в одном из следующих разделов.

4.5.10 Форма задания «Проверить, редактировать составленное извещение»

После того, как извещение сгенерируется, председателю придет задание его проверить. Форма этого задания показана на рисунке 87.

Рисунок 87 - Форма задания «Проверить, редактировать составленное извещение»

Здесь председатель может скачать сгенерированное извещение, проверить его, и, если в процессе проверки он нашел ошибки и отредактировал его, то новый файл он может загрузить ниже.

Оба объекта и «Скачать файл» и «Загрузить файл» связаны с одной и той же переменной файлового типа Извещение.

4.5.11 Форма задания «Выставить на сайте извещение и проект контракта»

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

Рисунок 88 - Настройка задержки узла-ожидания

Таким образом, в качестве базовой даты выбрана ДатаНачалаПодачиЗаявок. Но задержка выставлена отрицательная. Это значит, что задание у секретаря будет появляться на 3 часа раньше, чем этап подачи заявок должен начаться (извещение должно выставляться немного пораньше).

Форма задания «Выставить на сайте извещение и проект контракта» показана на рисунке 89.

Рисунок 89 - Форма задания «Выставить на сайте извещение и проект контракта»

Здесь использован новый объект «Ссылка» для создания Интернет-ссылки на официальный сайт. Окно добавления ссылки показано на рисунке 90.

Рисунок 90 - Окно добавления ссылки на форму

На форме секретарь КК может скачать извещение и проект контракта, если не скачал его. И перейти по ссылке.

4.5.12 Формы «Принять решение о дальнейших действиях» и «Составить и направить протокол рассмотрения и оценки заявок»

После окончания этапа подачи котировочных заявок (установлен узел-ожидание на дату ДатаОкончанияПодачиЗаявок) председателю КК приходит задание «Принять решение о дальнейших действиях». На форме этого задания (рисунок 91) председатель должен выбрать один из двух вариантов, либо закончить размещение заказа и составить протокол рассмотрения и оценки заявок, либо продлить срок подачи заявок. Второй вариант обычно выбирают, если подана всего одна заявка от участника.

Рисунок 91 - Форма задания «Принять решение о дальнейших действиях»

Кнопки выбора на форме связаны с переменной ПоследнееДействие.

После выполнения задания с помощью той же переменной ПоследнееДействие определится путь в ветвлении (рисунок 92) расположенном после узла-действия «Принять решение о дальнейших действиях».

Рисунок 92 - Ветвление «ПоследнееДействие» в графе процесса

Окно настройки ветвления показано на рисунке 93.

Рисунок 93 - Окно настройки ветвления

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

Конкретное значение переменной ПоследнееДействие определялось и на форме при настройке кнопки выбора (рисунок 94).

Рисунок 94 - Настройка кнопок выбора на форме «Принять решение о дальнейших действиях»

Если было решено продлить этап подачи заявок, то точка управления задержится в узле-ожидании на 4 рабочих дня. Повторное продление законодательством не предусмотрено, поэтому оба перехода подсоединены к узлу-действию «Составить и направить протокол рассмотрения и оценки заявок».

Форма задания «Составить и направить протокол рассмотрения и оценки заявок» показана на рисунке 95.

Рисунок 95 - Форма задания «Составить и направить протокол рассмотрения и оценки заявок»

Здесь секретарь КК должен загрузить файл составленного им протокола и, если требуется, написать комментарии по проделанной работе.

4.5.13 Настройка мультидействия «Получить протокол рассмотрения и оценки котировочных заявок»

Последним блоком созданного бизнес-процесса является мультидействие «Получить протокол рассмотрения и оценки котировочных заявок».

Бизнес-процесс логически завершается, когда все члены ЦЗО (заказчик) получают протокол рассмотрения и оценки заявок, в котором указан победитель запроса котировок, и с ним можно заключать контракт. Или же победитель не найден (не подано ни одной заявки), тогда заказчик должен продумать, какие условия изменить в контракте, и начать процесс проведения запроса котировок снова. В любом случае в протоколе представлен отчет о работе комиссии.

Граф нового созданного подпроцесса «Получить протокол рассмотрения и оценки котировочных заявок (мульти)» показан на рисунке 96, его переменные - на рисунке 97.

Рисунок 96 - Граф подпроцесса «Получить протокол рассмотрения и оценки котировочных заявок (мульти)»

Рисунок 97 - Переменные подпроцесса «Получить протокол рассмотрения и оценки котировочных заявок (мульти)»

Настроим мультидействие «Получить протокол рассмотрения и оценки котировочных заявок» по группе с помощью переменной Группа2, имеющей значение по умолчанию «ЦЗО» - название группы исполнителей на веб-сервере (рисунок 98).

Рисунок 98 - Окно настройки мультидействия «Получить протокол рассмотрения и оценки котировочных заявок»

Форма задания «Получить протокол рассмотрения и оценки котировочных заявок» показана на рисунке 99. На ней члены ЦЗО могут скачать протокол и прочитать комментарии секретаря КК.

Рисунок 99 - Форма задания «Получить протокол рассмотрения и оценки котировочных заявок»

4.5.14 Использование в процессах объектов «Отправить сообщение» и «Получить сообщение»

В созданной модели не были рассмотрены такие основные объекты как «Отправить сообщение» и «Получить сообщение». Для того, чтобы продемонстрировать настройку и работу этих объектов был создан дополнительный процесс «Цикл».

С помощью объектов «Отправить сообщение» и «Получить сообщение» можно передавать значения переменных в рамках одного процесса или из одного процесса в другой. Каждому объекту «Отправить сообщение» должен соответствовать объект «Получить сообщение» и наоборот.

Реализуем следующий механизм. После того, как кто-нибудь из членов комиссии выполнит задание «Получить уведомление о проведении запроса котировок» (одноименного подпроцесса (рисунок 100)), в процесс «Цикл» (рисунок 101) будут передаваться переменные с именем, должностью и вопросом этого члена комиссии. После этого секретарь КК сможет посмотреть список ознакомившихся с информацией членов КК на данный момент.

Рисунок 100 - Граф процесса «Получить уведомление о проведении запроса котировок (мульти)»

Рисунок 101 - Граф процесса «Цикл»

Рассмотрим это более детально. На графе процесса «Получить уведомление о проведении запроса котировок (мульти)» есть объект «Отправить сообщение». После того, как один из членов выполнит задание «Получить уведомление о проведении запроса котировок», в переменные ФИО, Должность и Вопрос запишутся соответствующие имя, должность и вопрос этого члена комиссии. Чтобы настроить объект «Отправить сообщение» необходимо щелкнуть на нем правой кнопкой мыши и в контекстном меню выбрать «Отправить сообщение». Откроется окно, показанное на рисунке 102.

Рисунок 102 - Окно настройки отправки сообщения

Здесь в свойствах маршрутизации сообщения необходимо добавить название и значение сообщения для его идентификации. Нажмем на кнопку «Добавить» и в появившихся полях введем FIOandQuestion.

Теперь необходимо выбрать переменные, которые будут передаваться в сообщении. Нажмем вторую кнопку «Добавить» (рисунок 103).

Рисунок 103 - Добавление переменной в сообщение

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

Когда секретарь КК запустит процесс «Цикл», ему придет задание «Посмотреть текущее состояние» (если сообщение было получено в объекте «Получить сообщение»).

Окно настройки получения сообщения показано на рисунке 104.

Рисунок 104 - Окно настройки получения сообщения

Здесь настройка проводится также как и для оправления сообщения, но необходимо учесть, что:

- название и значение маршрутизации должно быть настроено также как и в соответствующем объекте отправки сообщения (чтобы отправитель распознавал получателя);

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

В процессе «Цикл» есть переменные-списки (ФИОМассив, ДолжностьМассив, ВопросыМассив), которые будут выводиться секретарю на форме задания «Посмотреть текущее состояние». Чтобы заполнить эти переменные, используется три одинаковых обработчика, имеющих класс AddObjectToListActionHandler (добавление объекта в список). Они прикреплены к переходу. То есть после того, как сообщение с переменными будет получено, эти переменные запишутся с соответствующие списки, а списки будут выведены на форме задания для секретаря. Настройка добавления объекта в список ФИОМассив с помощью обработчика показана на рисунке 105.

Рисунок 105 - Настройка обработчика AddObjectToListActionHandler

Здесь выбирается переменная-список, в которую будут записываться значения, переменная-объект, которая будет записываться в список и результирующая переменная (после записи).

После просмотра текущего списка секретарь может продолжить процесс обновления списка, либо завершить процесс «Цикл», выбрав соответствующее сообщение (управление вернется к получателю сообщения и будет ожидать нового сообщения).

Описанная в этом разделе реализация показана только как пример использования объектов «Отправить сообщение» и «Получить сообщение». На практике её применять нецелесообразно, так как текущее состояние процессов можно просматривать другим, уже реализованным разработчиками способом - просматривать графу меню «Запущенные процессы» при запуске процесса на веб-сервере.

4.6 Применение ботов. Настройка MS Word-бота

Исполнителями заданий в современных СУБПиАР могут быть как люди, так и компьютерные приложения.

Было введено понятие бота для СУБПиАР. Для заданий, выполняемых компьютерными системами, была сделана их логическая группировка по ботам, чтобы при работе с бизнес-процессами управленец мог мыслить в терминах автоматических исполнителей и их областях компетенции.

Кроме того, для ботов было введено понятие прав на выполняемые действия (аналогичные правам людей-пользователей). Поэтому боты, также как люди, во время своей работы аутентифицируются в СУБПиАР, после чего СУБПиАР проводит их авторизацию при совершении операций.

Для работы ботов была разработана специальная среда - бот-станция, которая организует их взаимодействие с СУБПиАР. Как правило, бот-станция соответствует серверу, на котором размещены боты. Находящиеся в бот-станции боты обращаются к СУБПиАР. Если выполняющиеся на сервере экземпляры бизнес-процессов содержат задачи для ботов, то боты выполняют эти задачи и возвращают результаты работы на сервер.

В нашем бизнес-процессе была создана одна задача для бота - сгенерировать извещение.

Также была создана роль для этой задачи - Word_Бот.

Настройка всех бот-станций и ботов производится через меню «Бот станции» (рисунок 106).

Рисунок 106 - Меню редактора Бот-станции

Пользователь имеет доступ к меню «Бот станции», если у него есть права на чтение бот-станций. Если прав на чтение бот-станций у пользователя нет, то пункт меню «Бот станции» интерфейсе пользователя будет отсутствовать. Для изменения настроек бот-станций необходимо иметь права «Конфигурировать бот-станцию».

Итак, для начала создадим в редакторе MS Word файл Извещение.doc (рисунок 107).

Рисунок 107 - Шаблон извещения о проведении запроса котировок

Установим в шаблоне извещения закладки (рисунок 108).

Рисунок 108 - Вызов формы работы с закладками

Добавим в шаблон все необходимые закладки (они совпадают по названию с переменными процесса, которые используются для генерации извещения). Необходимые закладки показаны на рисунке 109.

Рисунок 109 - Закладки шаблона документа "Извещение"

Поместим шаблон извещения в папку C:\Temp.

Теперь создадим бота "Word_бот". Для этого войдем в систему RunaWFE под пользователем Administrator, кликнем пункт меню "Бот-станции", затем кликнем на "localbotstation". В появившейся форме необходимо:

- Проверить, что периодическая активация запущена (если нет, то запустить ее (рисунок 110));

- Добавить бота в бот-станцию (кликнуть на "Добавить бота" (рисунок 110)).

Рисунок 110 - Бот-станция

В появившейся форме нужно выбрать из списка пользователя Word_бот, ввести его пароль "wf" и кликнуть "Добавить бота" (рисунок 111).

Рисунок 111 - Добавление бота "Word_бот"

Создадим для бота "Word_бот" задание "Сгенерировать извещение".

В форме бот-станции нужно кликнуть на появившемся боте Word_бот (рисунок 112).

Рисунок 112 - Бот-станция, содержащая бота Word_бот

В появившейся форме кликнем на "Добавить". В появившейся строке в поле "Задание" введем "Сгенерировать извещение", в поле "Обработчик задания" выберем из списка элемент "MSWordReportTaskHandler", кликнем "Применить" (рисунок 113).

Рисунок 113 - Добавление задания для бота Word_бот

Добавим для задания "Сгенерировать извещение" конфигурацию.

Создадим файл task.txt в папке C:\Temp, содержащий следующий текст:

<?xml version="1.0" encoding="UTF-8"?>

<msword-report-task xmlns="http://runa.ru/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://runa.ru/xml msword-report-task.xsd">

<report template-path="c:/temp/Извещение.doc" output-variable="Извещение" output-variable-file-

name="Извещение.doc">

<mapping bookmark="Переменная_Номер_извещения" variable="НомерИзвещения" />

<mapping bookmark="НаимЗК" variable="НаимЗК" />

<mapping bookmark="ПредметКонтракта" variable="ПредметКонтракта" />

<mapping bookmark="ЦенаРуб" variable="ЦенаРуб" format-class="ru.runa.wf.web.forms.format.LongFormat" />

<mapping bookmark="ЦенаКоп" variable="ЦенаКоп" format-class="ru.runa.wf.web.forms.format.LongFormat" />

<mapping bookmark="КлассификацияНомер" variable="НомерКлассификации" />

<mapping bookmark="КлассификацияНаименование" variable="НаименованиеКлассификации" />

<mapping bookmark="Дата1" variable="Дата1" format-class="ru.runa.wf.web.forms.format.DateFormat" />

<mapping bookmark="Дата2" variable="Дата2" format-class="ru.runa.wf.web.forms.format.DateFormat" />

<mapping bookmark="ДатаНачалаПодачиЗаявок" variable="ДатаНачалаПодачиЗаявок" format-class="ru.runa.wf.web.forms.format.DateTimeFormat" />

<mapping bookmark="ДатаОкончанияПодачиЗаявок" variable="ДатаОкончанияПодачиЗаявок" format-class="ru.runa.wf.web.forms.format.DateTimeFormat" />

<mapping bookmark="ПодписаниеКонтракта" variable="ПодписаниеКонтракта" format-class="ru.runa.wf.web.forms.format.DoubleFormat" />

<mapping bookmark="ДатаОпубликования" variable="ДатаОпубликования" format-class="ru.runa.wf.web.forms.format.DateFormat" />

</report>

</msword-report-task>

Сохраним этот файл в кодировке UTF-8.

Введем путь к этому файлу в поле "Конфигурация" и кликнем "Применить".

Кликнем на появившейся ссылке "Редактировать", проверим, что в открывшемся окне введена правильная конфигурация (рисунок 114).

Рисунок 114 - Конфигурация бота в режиме редактирования

Бот для генерации извещения настроен.

4.7 Настройка проверки переменных формы

Элементы форм могут быть обязательными или не обязательными для ввода. Также могут быть правила, относящиеся к нескольким элементам форм. Например - «дата с» не может быть позже, чем «дата по». Кроме того, могут быть специфические для типов ограничения: для чисел - меньше или больше какого-то числа, для строк - ограничение на длину строки и т.д.

Рассмотрим настройку проверки переменных на примере формы «Уведомить о проведении запроса котировок». Щелкнем правой кнопкой мыши на узле-действии «Уведомить о проведении запроса котировок» и в контекстном меню выберем «Форма»-«Проверка переменных формы». Откроется окно, показанное на рисунке 115.

Рисунок 115 - Окно настройки валидации

С левой стороны окна валидации виден весь список переменных текущего процесса. Галочками отмечены те переменные, которые используются на текущей форме (на форме задания «Уведомить о проведении запроса котировок»).

Настроим проверку переменной НаимЗК (наименование запроса котировок). Запрос котировок должен обязательно иметь название, поэтому это поле сделаем обязательным, а также установим минимальное количество символов. Выделим переменную в списке, затем галочками отметим необходимые валидаторы. На рисунке 116 показана настройка ограничителя длины строки для переменной НаимЗК, а на рисунке 117 - настройка обязательного поля.

Рисунок 116 - Настройка ограничителя длины строки

Рисунок 117 - Настройка обязательного поля

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

Теперь установим ограничения для дат. Дата1 содержит начальную дату срока выполнения заказа. Это поле не будем делать обязательным, но установим ограничение «Диапазон даты относительно текущей» (рисунок 118).

Рисунок 118 - Ограничение «Диапазон даты относительно текущей»

Здесь введем 0 дней для сдвига в прошлое. Это значит, что прошедшую дату ввести не получится. Для Даты2 установим это же ограничение и ещё обязательное поле, так как она показывает конечный срок выполнения заказа.

Для загрузочного поля файла Проект_контракт_файл также установим обязательное поле (рисунок 119).

Рисунок 119 - Валидация для переменной-файла

Необходимо установить ещё одно ограничение для переменных дат. Для этого в окне настройки валидации нажмем «Далее». В появившемся окне нажмем «Добавить». Затем в поле «Сообщение об ошибке» введем «Конечная дата должна быть не раньше начальной!» и в конструкторе выберем соответствующие условия (рисунок 120).

Рисунок 120 - Создание глобального валидатора

По окончании настройки переменных формы «Уведомить о проведении запроса котировок» необходимо нажать «Готово».

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

5. ЗАГРУЗКА ПРОЦЕССОВ НА СЕРВЕР

Каждый из семи созданных процессов экспортируем в файл. Для этого, выделив название процесса в проводнике и щелкнув по нему правой кнопкой мыши, выберем в контекстном меню «Экспорт процесса». В появившемся окне (рисунок 121) нужно нажать «Обзор» и выбрать путь, где будет сохранен файл с расширением *.par (рисунок 122).


Подобные документы

  • Характеристика деятельности предприятия "Регион". Открытие общего доступа к папке или диску. Настройка DHCP-серверов в сети, обеспечивающая ряд преимуществ. Установка, тестирование и настройка Apache, MySQL. Организация терминального доступа к серверу.

    отчет по практике [131,6 K], добавлен 12.11.2014

  • Настройка интерфейса в MOODLE. Создание и настройка профилей, управление курсами. Форматы представления, создание и настройка ресурсов курса. Организация коллективной работы. Установка и настройка необходимого программного обеспечения. Создание ролей.

    дипломная работа [378,5 K], добавлен 20.11.2013

  • Установка VirtualBox. Создание двух виртуальных машин с операционной системой CentOS. Настройка сетевых интерфейсов в режиме bridgeс и хоста как маршрутизатора для сети. Установка www-сервера. Настройка динамической маршрутизации по протоколу RIP.

    курсовая работа [807,5 K], добавлен 14.07.2012

  • Создание виртуальной машины для гостевой операционной системы Microsoft Windows Server 2003. Первоначальная настройка установленной операционной системы. Создание DHCP-сервера с диапазоном рабочих адресов. Настройка доменного имени для IP-адреса сервера.

    лабораторная работа [3,2 M], добавлен 20.12.2012

  • Организационно-штатная структура офисного центра. Выбор и обоснование архитектуры сети. Сервисы конфигурации сервера. Выбор топологии сети. Установка и настройка Active Directory, DNS и файлового сервера под управлением СОС Windows Server 2012 R2.

    курсовая работа [2,5 M], добавлен 10.04.2017

  • Настройка списка контроля доступа для компьютерной сети, выходящей в интернет через прокси-сервер Squid. Использование и типы прокси-серверов, описание их архитектуры. Списки контроля доступа, идентификация, настройка конфигурации и запуск серверов.

    курсовая работа [1,3 M], добавлен 26.08.2010

  • Сетевые соединения для передачи команд и данных между клиентом и сервером. Появление первых клиентских FTP-приложений. Графические пользовательские интерфейсы. Вход в FTP сервер. Настройка, подключение и вход в файловый сервер с клиентских компьютеров.

    курсовая работа [2,6 M], добавлен 25.11.2014

  • Установка и настройка локального web–сервера и его компонентов. Конфигурационные файлы сервера Apache и их натройка. Настройка PHP, MySQL и Sendmail. Проверка работоспособности виртуальных серверов. Создание виртуальных хостов. Тест Server Side Includes.

    учебное пособие [6,2 M], добавлен 27.04.2009

  • Автоматизированная настройка TCP/IP, динамическая настройка конфигурации с применением BOOTP. IP-адреса запросов/ответов, потеря и формат сообщения, фазы ВООТP. Протокол DHCP как расширение протокола ВООТP. Распределение и назначение IP-адресов.

    контрольная работа [1,3 M], добавлен 09.06.2010

  • Многопоточный веб-сервер с входным и обрабатывающими модулями. HTTP—протокол передачи гипертекста. Установка и настройка локального веб-сервера "OpenServer". Установка phpMyAdmin, конфигурация PHP. Настройка веб-сервера и виртуальных хостов, модулей.

    курсовая работа [3,2 M], добавлен 08.12.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.