TrainingMaterials InternalStorage: различия между версиями
Nvasiliev (обсуждение | вклад) |
Nvasiliev (обсуждение | вклад) |
||
Строка 42: | Строка 42: | ||
</li> | </li> | ||
<li>'''Войдите''' в web-интерфейс системы RunaWFE Free под пользователем Administrator. (см. ''"Практикум. Вводное занятие", [[TrainingMaterials_4_4_1_Introduction#Запустите RunaWFE симулятор|Порядок выполнения работы]], Пункт 2, Рис. 5.2'') Замечание. По умолчанию пароль пользователя Administrator - "wf". | <li>'''Войдите''' в web-интерфейс системы RunaWFE Free под пользователем Administrator. (см. ''"Практикум. Вводное занятие", [[TrainingMaterials_4_4_1_Introduction#Запустите RunaWFE симулятор|Порядок выполнения работы]], Пункт 2, Рис.5.2'') Замечание. По умолчанию пароль пользователя Administrator - "wf". | ||
</li> | </li> | ||
<li>'''Создайте''' следующих пользователей: (см. ''"Практикум. Вводное занятие", [[TrainingMaterials_4_4_1_Introduction#.D0.A1.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D1.83.D1.87.D1.91.D1.82.D0.BD.D1.8B.D1.85_.D0.B7.D0.B0.D0.BF.D0.B8.D1.81.D0.B5.D0.B9|Порядок выполнения работы]], Пункты 10 - 11, Рис. 5.10 - 5.11'') | <li>'''Создайте''' следующих пользователей: (см. ''"Практикум. Вводное занятие", [[TrainingMaterials_4_4_1_Introduction#.D0.A1.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D1.83.D1.87.D1.91.D1.82.D0.BD.D1.8B.D1.85_.D0.B7.D0.B0.D0.BF.D0.B8.D1.81.D0.B5.D0.B9|Порядок выполнения работы]], Пункты 10-11, Рис.5.10-5.11'') | ||
</li> | </li> | ||
Строка 59: | Строка 59: | ||
* Сверчков Иван Иванович. | * Сверчков Иван Иванович. | ||
При создании введите пароль для каждого пользователя (например - 123), знать старый пароль пользователя при этом не требуется (см. ''Практическое занятие "Изучение перспективы ресурсов", [[TrainingMaterials_4_4_1_Perspectives#.D0.9F.D0.BE.D1.80.D1.8F.D0.B4.D0.BE.D0.BA_.D0.B2.D1.8B.D0.BF.D0.BE.D0.BB.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B_2|Порядок выполнения работы]], Пункты 4 - 5, Рис. 3.1, 3.2''). | При создании введите пароль для каждого пользователя (например - 123), знать старый пароль пользователя при этом не требуется (см. ''Практическое занятие "Изучение перспективы ресурсов", [[TrainingMaterials_4_4_1_Perspectives#.D0.9F.D0.BE.D1.80.D1.8F.D0.B4.D0.BE.D0.BA_.D0.B2.D1.8B.D0.BF.D0.BE.D0.BB.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B_2|Порядок выполнения работы]], Пункты 4-5, Рис.3.1, 3.2''). | ||
<li>'''Создайте''' группы (см. ''"Практикум. Вводное занятие", [[TrainingMaterials_4_4_1_Introduction#Список исполнителей|Порядок выполнения работы]], Пункты 4 - 6, Рис. 5.5, 5.6''): | <li>'''Создайте''' группы (см. ''"Практикум. Вводное занятие", [[TrainingMaterials_4_4_1_Introduction#Список исполнителей|Порядок выполнения работы]], Пункты 4-6, Рис.5.5, 5.6''): | ||
</li> | </li> | ||
Строка 92: | Строка 92: | ||
* Сверчков Иван Иванович. | * Сверчков Иван Иванович. | ||
<li>'''Дайте''' полномочия группе "Сотрудники" на вход в систему (см. ''"Практикум. Вводное занятие", [[TrainingMaterials_4_4_1_Introduction#Пункт меню Система|Порядок выполнения работы]], пункты 7-9, Рис. 5.7 - 5.9'' ). | <li>'''Дайте''' полномочия группе "Сотрудники" на вход в систему (см. ''"Практикум. Вводное занятие", [[TrainingMaterials_4_4_1_Introduction#Пункт меню Система|Порядок выполнения работы]], пункты 7-9, Рис.5.7-5.9'' ). | ||
</li> | </li> | ||
Строка 105: | Строка 105: | ||
<center>[[Image:zak_1.png]]</center> | <center>[[Image:zak_1.png]]</center> | ||
<center>Рисунок 2.1 Команда создания отношения</center> | <center>Рисунок 2.1. Команда создания отношения</center> | ||
Строка 115: | Строка 115: | ||
<center>[[Image:zak_2_st.png]]</center> | <center>[[Image:zak_2_st.png]]</center> | ||
<center>Рисунок 2.2 Ввод названия отношения</center> | <center>Рисунок 2.2. Ввод названия отношения</center> | ||
Строка 125: | Строка 125: | ||
<center>[[Image:zak_3.png]]</center> | <center>[[Image:zak_3.png]]</center> | ||
<center>Рисунок 2.3 Редактирование отношения</center> | <center>Рисунок 2.3. Редактирование отношения</center> | ||
Строка 137: | Строка 137: | ||
<center>[[Image:zak_4.png]]</center> | <center>[[Image:zak_4.png]]</center> | ||
<center>Рисунок 2.4 Создание пары (Сверчков-Сотрудники)</center> | <center>Рисунок 2.4. Создание пары (Сверчков-Сотрудники)</center> | ||
Строка 162: | Строка 162: | ||
<center>[[Image:zak_5_441.png]]</center> | <center>[[Image:zak_5_441.png]]</center> | ||
<center>Рисунок 2.5 Схема бизнес-процесса "Заявка"</center> | <center>Рисунок 2.5. Схема бизнес-процесса "Заявка"</center> | ||
В бизнес-процессе используется следующие элементы: Начало, Действие, Задача сценария, Хранилище данных, Переход, Пунктирный переход, Таймер, Исключающий шлюз, Параллельный шлюз, Аннотация, Окончание. | В бизнес-процессе используется следующие элементы: Начало, Действие, Задача сценария, Хранилище данных, Переход, Пунктирный переход, Таймер, Исключающий шлюз, Параллельный шлюз, Аннотация, Окончание. | ||
Для элемента "Задача сценария" используйте опцию компактный вид (см. ''пункт 1 раздела "Практическое занятие "Работа с Word-ботом". [[TrainingMaterials_4_4_1_Documents#.D0.9F.D0.BE.D1.80.D1.8F.D0.B4.D0.BE.D0.BA_.D0.B2.D1.8B.D0.BF.D0.BE.D0.BB.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B|Порядок выполнения работы]].",Замечание. | Для элемента "Задача сценария" используйте опцию компактный вид (см. ''пункт 1 раздела "Практическое занятие "Работа с Word-ботом". [[TrainingMaterials_4_4_1_Documents#.D0.9F.D0.BE.D1.80.D1.8F.D0.B4.D0.BE.D0.BA_.D0.B2.D1.8B.D0.BF.D0.BE.D0.BB.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B|Порядок выполнения работы]].",Замечание. Рис.2.2'') | ||
Для изменения названий по умолчанию, выделите элемент, щёлкнув по нему, перейдите в свойства и введите новое значение в поле "Название". | Для изменения названий по умолчанию, выделите элемент, щёлкнув по нему, перейдите в свойства и введите новое значение в поле "Название". | ||
Строка 174: | Строка 174: | ||
<li>'''Создайте''' роли (См. ''"Практикум. Вводное занятие", [[TrainingMaterials_4_4_1_Introduction#Создание роли|Порядок выполнения работы]], Пункт 21, Рис 5.21''). | <li>'''Создайте''' роли (См. ''"Практикум. Вводное занятие", [[TrainingMaterials_4_4_1_Introduction#Создание роли|Порядок выполнения работы]], Пункт 21, Рис.5.21''). | ||
</li> | </li> | ||
Строка 190: | Строка 190: | ||
Роль "Заказчик" будет инициализирована пользователем, запустившим процесс, не требует инициализатора. | Роль "Заказчик" будет инициализирована пользователем, запустившим процесс, не требует инициализатора. | ||
Роли "Канцелярия" и "Гараж" должны быть проинициализирована группами "Канцелярия" и "Гараж" соответственно. Выделите созданную роль, выберите кнопку "Изменить", перейдите на вкладку "Группы и пользователи WF". Здесь необходимо выполнить синхронизацию с сервером, после чего "Выбрать" из списка нужную группу (см. Рис. 2.6). Для проверки и ввода параметров соединения с сервером воспользуйтесь ссылкой "Настройки соединения" (см. ''Практическое занятие "[[TrainingMaterials_4_4_1_Perspectives#.D0.9F.D0.BE.D1.80.D1.8F.D0.B4.D0.BE.D0.BA_.D0.B2.D1.8B.D0.BF.D0.BE.D0.BB.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B_2|Изучение перспективы ресурсов]]", Пункт 26, Рис. 3.16-3.18''). | Роли "Канцелярия" и "Гараж" должны быть проинициализирована группами "Канцелярия" и "Гараж" соответственно. Выделите созданную роль, выберите кнопку "Изменить", перейдите на вкладку "Группы и пользователи WF". Здесь необходимо выполнить синхронизацию с сервером, после чего "Выбрать" из списка нужную группу (см. Рис.2.6). Для проверки и ввода параметров соединения с сервером воспользуйтесь ссылкой "Настройки соединения" (см. ''Практическое занятие "[[TrainingMaterials_4_4_1_Perspectives#.D0.9F.D0.BE.D1.80.D1.8F.D0.B4.D0.BE.D0.BA_.D0.B2.D1.8B.D0.BF.D0.BE.D0.BB.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B_2|Изучение перспективы ресурсов]]", Пункт 26, Рис.3.16-3.18''). | ||
<p> </p> | <p> </p> | ||
<center>[[Image:zak_6.png]]</center> | <center>[[Image:zak_6.png]]</center> | ||
<center>Рисунок 2.6 Инициализатор роли "Канцелярия" </center> | <center>Рисунок 2.6. Инициализатор роли "Канцелярия" </center> | ||
Строка 202: | Строка 202: | ||
Для этого выделите "Руководитель" в списке ролей на вкладке "Роли" и щёлкните "Изменить". | Для этого выделите "Руководитель" в списке ролей на вкладке "Роли" и щёлкните "Изменить". | ||
В появившейся форме перейдите на вкладку "Задать роль с помощью отношения". Выберите кнопку "Синхронизация", затем "Выбрать" (См. Рис 2.7). | В появившейся форме перейдите на вкладку "Задать роль с помощью отношения". Выберите кнопку "Синхронизация", затем "Выбрать" (См. Рис.2.7). | ||
<center>[[Image:zak_7.png]]</center> | <center>[[Image:zak_7.png]]</center> | ||
<center>Рисунок 2.7 Инициализация с помощью отношения </center> | <center>Рисунок 2.7. Инициализация с помощью отношения </center> | ||
В списке будут отображаться импортированные с сервера отношения, выберите "Руководитель организации" и выберите кнопку "ОК" (См. Рис. 2.8). | В списке будут отображаться импортированные с сервера отношения, выберите "Руководитель организации" и выберите кнопку "ОК" (См. Рис.2.8). | ||
<center>[[Image:zak_8.png]]</center> | <center>[[Image:zak_8.png]]</center> | ||
<center>Рисунок 2.8 Окно выбора отношения </center> | <center>Рисунок 2.8. Окно выбора отношения </center> | ||
Откройте список для поля "Параметр отношения" и выберите роль "Заказчик" (См. Рис. 2.9). Выберите кнопку "ОК". | Откройте список для поля "Параметр отношения" и выберите роль "Заказчик" (См. Рис.2.9). Выберите кнопку "ОК". | ||
<center>[[Image:zak_9.png]]</center> | <center>[[Image:zak_9.png]]</center> | ||
<center>Рисунок 2.9 Инициализация роли Руководитель с помощью отношения </center> | <center>Рисунок 2.9. Инициализация роли Руководитель с помощью отношения </center> | ||
Строка 255: | Строка 255: | ||
<center>[[Image:zak_10_441.png]]</center> | <center>[[Image:zak_10_441.png]]</center> | ||
<center>Рисунок 2.10 Создание нового типа </center> | <center>Рисунок 2.10. Создание нового типа </center> | ||
Строка 263: | Строка 263: | ||
<center>[[Image:zak_11.png]]</center> | <center>[[Image:zak_11.png]]</center> | ||
<center>Рисунок 2.11 Добавление атрибута </center> | <center>Рисунок 2.11. Добавление атрибута </center> | ||
Строка 273: | Строка 273: | ||
<center>[[Image:zak_12.png]]</center> | <center>[[Image:zak_12.png]]</center> | ||
<center>Рисунок 2.12 Атрибуты заявки </center> | <center>Рисунок 2.12. Атрибуты заявки </center> | ||
Строка 283: | Строка 283: | ||
<center>[[Image:zak_12_2_441.png]]</center> | <center>[[Image:zak_12_2_441.png]]</center> | ||
<center>Рисунок 2.13 Копирование типа данных</center> | <center>Рисунок 2.13. Копирование типа данных</center> | ||
Строка 299: | Строка 299: | ||
<center>[[Image:zak_13_441.png]]</center> | <center>[[Image:zak_13_441.png]]</center> | ||
<center>Рисунок 2.14 Переменные процесса Заявка </center> | <center>Рисунок 2.14. Переменные процесса Заявка </center> | ||
Строка 309: | Строка 309: | ||
'''Замечание'''. По умолчанию в качестве редактора форм используется CKEditor4, но в случае если у вас в системе установлен браузер Microsoft Internet Explorer устаревшей версии - 6 (IE6) или 7 (IE7), то с формами могут возникнуть проблемы. Поэтому следует переключить редактор на FCKEditor2 (как переключить редактор см. в ''Практическое занятие "Изучение перспективы данных", [[TrainingMaterials_4_4_1_Perspectives#.D0.9F.D0.BE.D1.80.D1.8F.D0.B4.D0.BE.D0.BA_.D0.B2.D1.8B.D0.BF.D0.BE.D0.BB.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B_3|Порядок выполнения работы]], Пункт 6, Рис. 4.9, 4.10''). | '''Замечание'''. По умолчанию в качестве редактора форм используется CKEditor4, но в случае если у вас в системе установлен браузер Microsoft Internet Explorer устаревшей версии - 6 (IE6) или 7 (IE7), то с формами могут возникнуть проблемы. Поэтому следует переключить редактор на FCKEditor2 (как переключить редактор см. в ''Практическое занятие "Изучение перспективы данных", [[TrainingMaterials_4_4_1_Perspectives#.D0.9F.D0.BE.D1.80.D1.8F.D0.B4.D0.BE.D0.BA_.D0.B2.D1.8B.D0.BF.D0.BE.D0.BB.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B_3|Порядок выполнения работы]], Пункт 6, Рис.4.9, 4.10''). | ||
Строка 318: | Строка 318: | ||
На данной форме заказчик вводит данные заявки. | На данной форме заказчик вводит данные заявки. | ||
Выделите узел «Начало» графа процесса "Заявка" правой кнопкой мыши и выберите команду «Форма» > «Создать форму» (Подробнее см. ''Практическое занятие "Изучение перспективы данных", [[TrainingMaterials_4_4_1_Perspectives#.D0.9F.D0.BE.D1.80.D1.8F.D0.B4.D0.BE.D0.BA_.D0.B2.D1.8B.D0.BF.D0.BE.D0.BB.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B_3|Порядок выполнения работы]], Пункт 6, Замечание, Рис. 4.11-4.12''). | Выделите узел «Начало» графа процесса "Заявка" правой кнопкой мыши и выберите команду «Форма» > «Создать форму» (Подробнее см. ''Практическое занятие "Изучение перспективы данных", [[TrainingMaterials_4_4_1_Perspectives#.D0.9F.D0.BE.D1.80.D1.8F.D0.B4.D0.BE.D0.BA_.D0.B2.D1.8B.D0.BF.D0.BE.D0.BB.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B_3|Порядок выполнения работы]], Пункт 6, Замечание, Рис.4.11-4.12''). | ||
На данной форме заказчик вводит данные заявки на автотранспорт. | На данной форме заказчик вводит данные заявки на автотранспорт. | ||
Строка 324: | Строка 324: | ||
Добавьте на форму текст "Введите данные заявки". | Добавьте на форму текст "Введите данные заявки". | ||
Выберите кнопку на иконку вставки в форму таблицы (см. | Выберите кнопку на иконку вставки в форму таблицы (см. Рис.2.15), используйте 2 столбца и 4 строки (см. Рис.2.16). | ||
Расположите таблицу под текстом "Введите данные заявки". | Расположите таблицу под текстом "Введите данные заявки". | ||
Строка 330: | Строка 330: | ||
<center>[[Image:zak_14.png]]</center> | <center>[[Image:zak_14.png]]</center> | ||
<center>Рисунок 2.15 Вставка таблицы на форму </center> | <center>Рисунок 2.15. Вставка таблицы на форму </center> | ||
<center>[[Image:zak_15.png]]</center> | <center>[[Image:zak_15.png]]</center> | ||
<center>Рисунок 2.16 Свойства таблицы </center> | <center>Рисунок 2.16. Свойства таблицы </center> | ||
Заполните колонки таблицы, как показано на рисунке 2.17. Во втором столбце используйте компонент формы "Ввод переменной". Для этого перейдите на вкладку "Компоненты форм", выделите необходимый компонент, в данном случае это "Ввод переменной" и с помощью мыши перетащите его на форму (Подробнее см. ''Практическое занятие "Изучение перспективы операций", [[TrainingMaterials_4_4_1_Perspectives#.D0.9F.D0.BE.D1.80.D1.8F.D0.B4.D0.BE.D0.BA_.D0.B2.D1.8B.D0.BF.D0.BE.D0.BB.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B_4|Порядок выполнения работы]], Пункт 14, Рис. 5.17, 5.18''). | Заполните колонки таблицы, как показано на рисунке 2.17. Во втором столбце используйте компонент формы "Ввод переменной". Для этого перейдите на вкладку "Компоненты форм", выделите необходимый компонент, в данном случае это "Ввод переменной" и с помощью мыши перетащите его на форму (Подробнее см. ''Практическое занятие "Изучение перспективы операций", [[TrainingMaterials_4_4_1_Perspectives#.D0.9F.D0.BE.D1.80.D1.8F.D0.B4.D0.BE.D0.BA_.D0.B2.D1.8B.D0.BF.D0.BE.D0.BB.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B_4|Порядок выполнения работы]], Пункт 14, Рис.5.17, 5.18''). | ||
Строка 346: | Строка 346: | ||
Для вызова свойств добавленного на форму компонента используйте двойной щелчок левой кнопкой мыши или пункт "Параметры компонента" контекстного меню (вызывается правой кнопкой мыши). | Для вызова свойств добавленного на форму компонента используйте двойной щелчок левой кнопкой мыши или пункт "Параметры компонента" контекстного меню (вызывается правой кнопкой мыши). | ||
В качестве параметра "Название переменной" задайте соответствующие поля переменной пользовательского формата "Заявка" (см. | В качестве параметра "Название переменной" задайте соответствующие поля переменной пользовательского формата "Заявка" (см. Рис.2.18). | ||
<center>[[Image:zak_16_st.png]]</center> | <center>[[Image:zak_16_st.png]]</center> | ||
<center>Рисунок 2.17 Заполненная таблица ввода данных заявки </center> | <center>Рисунок 2.17. Заполненная таблица ввода данных заявки </center> | ||
<center>[[Image:zak_17.png]]</center> | <center>[[Image:zak_17.png]]</center> | ||
<center>Рисунок 2.18 Ввод полей пользовательской переменной "Заявка"</center> | <center>Рисунок 2.18. Ввод полей пользовательской переменной "Заявка"</center> | ||
Строка 364: | Строка 364: | ||
<center>[[Image:zak_18_st.png]]</center> | <center>[[Image:zak_18_st.png]]</center> | ||
<center>Рисунок 2.19 Стартовая форма процесса "Заявка"</center> | <center>Рисунок 2.19. Стартовая форма процесса "Заявка"</center> | ||
Строка 373: | Строка 373: | ||
Для этого щёлкните на стартовой форме правой кнопкой мыши и выберите пункт "Форма > Проверка переменных формы", в появившейся форме выделяйте переменные и устанавливайте необходимые валидаторы. (Подробнее см. ''Практическое занятие "Изучение перспективы операций", [[TrainingMaterials_4_4_1_Perspectives#.D0.9F.D0.BE.D1.80.D1.8F.D0.B4.D0.BE.D0.BA_.D0.B2.D1.8B.D0.BF.D0.BE.D0.BB.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B_4|Порядок выполнения работы]]. Пункт 15, | Для этого щёлкните на стартовой форме правой кнопкой мыши и выберите пункт "Форма > Проверка переменных формы", в появившейся форме выделяйте переменные и устанавливайте необходимые валидаторы. (Подробнее см. ''Практическое занятие "Изучение перспективы операций", [[TrainingMaterials_4_4_1_Perspectives#.D0.9F.D0.BE.D1.80.D1.8F.D0.B4.D0.BE.D0.BA_.D0.B2.D1.8B.D0.BF.D0.BE.D0.BB.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B_4|Порядок выполнения работы]]. Пункт 15, Рис.5.27, 5.28''). | ||
Для "Заявка.Тип авто" добавьте валидатор "Обязательное поле". В поле "Сообщение об ошибке" введите - "Обязательное поле". | Для "Заявка.Тип авто" добавьте валидатор "Обязательное поле". В поле "Сообщение об ошибке" введите - "Обязательное поле". | ||
Для "Заявка.Количество мест" добавьте валидатор "Обязательное поле", а также "Диапазон числа", установив минимальное значение в "1" включительно (см. Рис. 2.20). При этом в поле "Сообщение об ошибке" введите - "Должно быть задано минимум одно место". | Для "Заявка.Количество мест" добавьте валидатор "Обязательное поле", а также "Диапазон числа", установив минимальное значение в "1" включительно (см. Рис.2.20). При этом в поле "Сообщение об ошибке" введите - "Должно быть задано минимум одно место". | ||
Для "Заявка.С" добавьте валидатор "Обязательное поле", а также "Диапазон даты относительно текущей", установив параметр "Сдвиг в прошлое" в значение "0" (см. Рис. 2.21), при этом в поле "Сообщение об ошибке" введите - "Дата подачи авто не может быть в прошлом". | Для "Заявка.С" добавьте валидатор "Обязательное поле", а также "Диапазон даты относительно текущей", установив параметр "Сдвиг в прошлое" в значение "0" (см. Рис.2.21), при этом в поле "Сообщение об ошибке" введите - "Дата подачи авто не может быть в прошлом". | ||
Для "Заявка.По" используйте такие же валидаторы, как и для "Заявка.С". | Для "Заявка.По" используйте такие же валидаторы, как и для "Заявка.С". | ||
Строка 386: | Строка 386: | ||
<center>[[Image:zak_19_st.png]]</center> | <center>[[Image:zak_19_st.png]]</center> | ||
<center>Рисунок 2.20 Валидатор "Диапазон числа" для "Заявка.Количество мест"</center> | <center>Рисунок 2.20. Валидатор "Диапазон числа" для "Заявка.Количество мест"</center> | ||
<center>[[Image:zak_20_st.png]]</center> | <center>[[Image:zak_20_st.png]]</center> | ||
<center>Рисунок 2.21 Валидатор "Диапазон даты относительно текущей" для "Заявка.С"</center> | <center>Рисунок 2.21. Валидатор "Диапазон даты относительно текущей" для "Заявка.С"</center> | ||
Строка 412: | Строка 412: | ||
<center>(в)</center> | <center>(в)</center> | ||
<center>Рисунок 2.22 а). переход б). добавление в). конфигуратор глобального валидатора </center> | <center>Рисунок 2.22. а). переход б). добавление в). конфигуратор глобального валидатора </center> | ||
Строка 425: | Строка 425: | ||
<center>[[Image:zak_21_st.png]]</center> | <center>[[Image:zak_21_st.png]]</center> | ||
<center>Рисунок 2.23 Форма "Одобрить заявку"</center> | <center>Рисунок 2.23. Форма "Одобрить заявку"</center> | ||
Строка 433: | Строка 433: | ||
<center>[[Image:zak_22.png]]</center> | <center>[[Image:zak_22.png]]</center> | ||
<center>Рисунок 2.24 Компонент "Отобразить переменную"</center> | <center>Рисунок 2.24. Компонент "Отобразить переменную"</center> | ||
Строка 441: | Строка 441: | ||
<center>[[Image:zak_23.png]]</center> | <center>[[Image:zak_23.png]]</center> | ||
<center>Рисунок 2.25 Форма "Принять заявку"</center> | <center>Рисунок 2.25. Форма "Принять заявку"</center> | ||
<center>[[Image:zak_24.png]]</center> | <center>[[Image:zak_24.png]]</center> | ||
<center>Рисунок 2.26 Форма "Ознакомиться с отказом"</center> | <center>Рисунок 2.26. Форма "Ознакомиться с отказом"</center> | ||
<center>[[Image:zak_25.png]]</center> | <center>[[Image:zak_25.png]]</center> | ||
<center>Рисунок 2.27 Форма "Ознакомиться с запланированной заявкой"</center> | <center>Рисунок 2.27. Форма "Ознакомиться с запланированной заявкой"</center> | ||
Строка 462: | Строка 462: | ||
Необходима для получения ФИО заказчика. | Необходима для получения ФИО заказчика. | ||
'''Выделите''' задачу сценария (см. | '''Выделите''' задачу сценария (см. Рис.2.28), '''введите''' в свойство "Название" - "Получить ФИО заказчика". | ||
<center>[[Image:zak_26.png]]</center> | <center>[[Image:zak_26.png]]</center> | ||
<center>Рисунок 2.28 Задача сценария "Получить ФИО заказчика"</center> | <center>Рисунок 2.28. Задача сценария "Получить ФИО заказчика"</center> | ||
'''Выберите''' в качестве класса обработчика - "Получить информацию об исполнителе" (см. Рис. 2.29). | '''Выберите''' в качестве класса обработчика - "Получить информацию об исполнителе" (см. Рис.2.29). | ||
<center>[[Image:zak_27.png]]</center> | <center>[[Image:zak_27.png]]</center> | ||
<center>Рисунок 2.29 Выбор класса обработчика для задачи "Получить ФИО заказчика"</center> | <center>Рисунок 2.29. Выбор класса обработчика для задачи "Получить ФИО заказчика"</center> | ||
Строка 483: | Строка 483: | ||
<center>[[Image:zak_28.png]]</center> | <center>[[Image:zak_28.png]]</center> | ||
<center>Рисунок 2.30 Конфигурация задачи сценария "Получить ФИО заказчика" </center> | <center>Рисунок 2.30. Конфигурация задачи сценария "Получить ФИО заказчика" </center> | ||
Строка 491: | Строка 491: | ||
Задача предназначена для формирования id подаваемой заявки. Данный идентификатор является уникальным и фактически равен id запущенного экземпляра процесса "Заявка". Кроме того, в данной задаче инициализируется статус заявки ("Не обработана"). | Задача предназначена для формирования id подаваемой заявки. Данный идентификатор является уникальным и фактически равен id запущенного экземпляра процесса "Заявка". Кроме того, в данной задаче инициализируется статус заявки ("Не обработана"). | ||
'''Выберите''' в качестве класса обработчика - "Выполнить формулу" (см. Рис. 2.31). | '''Выберите''' в качестве класса обработчика - "Выполнить формулу" (см. Рис.2.31). | ||
<center>[[Image:zak_29.png]]</center> | <center>[[Image:zak_29.png]]</center> | ||
<center>Рисунок 2.31 Выбор класса обработчика для задачи "Сформировать id заявки"</center> | <center>Рисунок 2.31. Выбор класса обработчика для задачи "Сформировать id заявки"</center> | ||
Строка 507: | Строка 507: | ||
<center>[[Image:zak_30.png]]</center> | <center>[[Image:zak_30.png]]</center> | ||
<center>Рисунок 2.32 Конфигурация задачи "Сформировать id заявки"</center> | <center>Рисунок 2.32. Конфигурация задачи "Сформировать id заявки"</center> | ||
Строка 520: | Строка 520: | ||
<center>[[Image:zak_31_441.png]]</center> | <center>[[Image:zak_31_441.png]]</center> | ||
<center>Рисунок 2.33 Свойства задачи "Получить заявку из списка"</center> | <center>Рисунок 2.33. Свойства задачи "Получить заявку из списка"</center> | ||
<center>[[Image:zak_32.png]]</center> | <center>[[Image:zak_32.png]]</center> | ||
<center>Рисунок 2.34 Конфигурация задачи "Получить заявку из списка"</center> | <center>Рисунок 2.34. Конфигурация задачи "Получить заявку из списка"</center> | ||
Строка 536: | Строка 536: | ||
<center>[[Image:zak_33_2_441.png]]</center> | <center>[[Image:zak_33_2_441.png]]</center> | ||
<center>Рисунок 2.35 Конфигурация задачи "Копирование переменной Заявка в Архивная заявка"</center> | <center>Рисунок 2.35. Конфигурация задачи "Копирование переменной Заявка в Архивная заявка"</center> | ||
Строка 551: | Строка 551: | ||
<center>[[Image:zak_34_441.png]]</center> | <center>[[Image:zak_34_441.png]]</center> | ||
<center>Рисунок 2.36 Вызов контекстного меню на элементе Таймер</center> | <center>Рисунок 2.36. Вызов контекстного меню на элементе Таймер</center> | ||
Строка 559: | Строка 559: | ||
<center>[[Image:zak_35.png]]</center> | <center>[[Image:zak_35.png]]</center> | ||
<center>Рисунок 2.37 Задержка таймера</center> | <center>Рисунок 2.37. Задержка таймера</center> | ||
Строка 573: | Строка 573: | ||
<center>[[Image:zak_36_441.png]]</center> | <center>[[Image:zak_36_441.png]]</center> | ||
<center>Рисунок 2.38 Вызов конструктора конфигурации исключающего шлюза</center> | <center>Рисунок 2.38. Вызов конструктора конфигурации исключающего шлюза</center> | ||
Строка 583: | Строка 583: | ||
<center>[[Image:zak_37.png]]</center> | <center>[[Image:zak_37.png]]</center> | ||
<center>Рисунок 2.39 Конфигурация исключающего шлюза</center> | <center>Рисунок 2.39. Конфигурация исключающего шлюза</center> | ||
Строка 602: | Строка 602: | ||
<center>[[Image:zak_38_441.png]]</center> | <center>[[Image:zak_38_441.png]]</center> | ||
<center>Рисунок 2.40 Схема бизнес-процесса "Планирование"</center> | <center>Рисунок 2.40. Схема бизнес-процесса "Планирование"</center> | ||
Строка 609: | Строка 609: | ||
Здесь используется тот же набор элементов что и для процесса "Заявка". | Здесь используется тот же набор элементов что и для процесса "Заявка". | ||
<li>'''Создайте''' роли (См. ''"Практикум. Вводное занятие", [[TrainingMaterials_4_4_1_Introduction#Создание роли|Порядок выполнения работы]], Пункт 21, Рис 5.21''). | <li>'''Создайте''' роли (См. ''"Практикум. Вводное занятие", [[TrainingMaterials_4_4_1_Introduction#Создание роли|Порядок выполнения работы]], Пункт 21, Рис.5.21''). | ||
</li> | </li> | ||
Строка 627: | Строка 627: | ||
</li> | </li> | ||
Откройте процесс "Заявка", перейдите на вкладку "Переменные", выделите переменную "Заявка" и выберите кнопку "Копировать" (см. Рис. 2.41). | Откройте процесс "Заявка", перейдите на вкладку "Переменные", выделите переменную "Заявка" и выберите кнопку "Копировать" (см. Рис.2.41). | ||
<center>[[Image:zak_39.png]]</center> | <center>[[Image:zak_39.png]]</center> | ||
<center>Рисунок 2.41 Копирование переменной</center> | <center>Рисунок 2.41. Копирование переменной</center> | ||
Вернитесь в разрабатываемый процесс "Планирование", перейдите на вкладку "Переменные" и выберите кнопку "Вставить" (см. Рис. 2.42). | Вернитесь в разрабатываемый процесс "Планирование", перейдите на вкладку "Переменные" и выберите кнопку "Вставить" (см. Рис.2.42). | ||
<center>[[Image:zak_40.png]]</center> | <center>[[Image:zak_40.png]]</center> | ||
<center>Рисунок 2.42 Вставка переменной</center> | <center>Рисунок 2.42. Вставка переменной</center> | ||
Строка 657: | Строка 657: | ||
<center>[[Image:zak_41.png]]</center> | <center>[[Image:zak_41.png]]</center> | ||
<center>Рисунок 2.43 Переменные процесса "Планирование"</center> | <center>Рисунок 2.43. Переменные процесса "Планирование"</center> | ||
Строка 663: | Строка 663: | ||
</li> | </li> | ||
'''Замечание'''. По умолчанию в качестве редактора форм используется CKEditor4, но в случае если у вас в системе установлен браузер Microsoft Internet Explorer устаревшей версии - 6 (IE6) или 7 (IE7), то с формами могут возникнуть проблемы. Поэтому следует переключить редактор на FCKEditor2 (как переключить редактор см. в ''Практическое занятие "Изучение перспективы данных", [[TrainingMaterials_4_4_1_Perspectives#.D0.9F.D0.BE.D1.80.D1.8F.D0.B4.D0.BE.D0.BA_.D0.B2.D1.8B.D0.BF.D0.BE.D0.BB.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B_3|Порядок выполнения работы]], Пункт 6, Рис. 4.9, 4.10''). | '''Замечание'''. По умолчанию в качестве редактора форм используется CKEditor4, но в случае если у вас в системе установлен браузер Microsoft Internet Explorer устаревшей версии - 6 (IE6) или 7 (IE7), то с формами могут возникнуть проблемы. Поэтому следует переключить редактор на FCKEditor2 (как переключить редактор см. в ''Практическое занятие "Изучение перспективы данных", [[TrainingMaterials_4_4_1_Perspectives#.D0.9F.D0.BE.D1.80.D1.8F.D0.B4.D0.BE.D0.BA_.D0.B2.D1.8B.D0.BF.D0.BE.D0.BB.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B_3|Порядок выполнения работы]], Пункт 6, Рис.4.9, 4.10''). | ||
<p> </p> | |||
===Форма "Отобрать заявки"=== | ===Форма "Отобрать заявки"=== | ||
На данной форме заказчик отбирает заявки которые будут запланированы. | На данной форме заказчик отбирает заявки, которые будут запланированы. | ||
Выделите узел «Отобрать заявки» графа процесса "Планирование" правой кнопкой мыши и выберите команду «Форма» > «Создать форму» (Подробнее см. ''Практическое занятие "Изучение перспективы данных", [[TrainingMaterials_4_4_1_Perspectives#.D0.9F.D0.BE.D1.80.D1.8F.D0.B4.D0.BE.D0.BA_.D0.B2.D1.8B.D0.BF.D0.BE.D0.BB.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B_3|Порядок выполнения работы]], Пункт 6, Замечание, Рис. 4.11-4.12''). | Выделите узел «Отобрать заявки» графа процесса "Планирование" правой кнопкой мыши и выберите команду «Форма» > «Создать форму» (Подробнее см. ''Практическое занятие "Изучение перспективы данных", [[TrainingMaterials_4_4_1_Perspectives#.D0.9F.D0.BE.D1.80.D1.8F.D0.B4.D0.BE.D0.BA_.D0.B2.D1.8B.D0.BF.D0.BE.D0.BB.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B_3|Порядок выполнения работы]], Пункт 6, Замечание, Рис.4.11-4.12''). | ||
Добавьте на форму текст "Выберите заявки для обработки:", под которым расположите компонент "Множественный выбор из списка пользовательских переменных". | Добавьте на форму текст "Выберите заявки для обработки:", под которым расположите компонент "Множественный выбор из списка пользовательских переменных". | ||
Для этого перейдите в панель "Компоненты форм", выделите компонент "Множественный выбор из списка пользовательских переменных" и с помощью мыши перетащите его на форму (Подробнее см. ''Практическое занятие "Изучение перспективы операций", [[TrainingMaterials_4_4_1_Perspectives#.D0.9F.D0.BE.D1.80.D1.8F.D0.B4.D0.BE.D0.BA_.D0.B2.D1.8B.D0.BF.D0.BE.D0.BB.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B_4|Порядок выполнения работы]], Пункт 14, Рис. 5.17, 5.18''). | Для этого перейдите в панель "Компоненты форм", выделите компонент "Множественный выбор из списка пользовательских переменных" и с помощью мыши перетащите его на форму (Подробнее см. ''Практическое занятие "Изучение перспективы операций", [[TrainingMaterials_4_4_1_Perspectives#.D0.9F.D0.BE.D1.80.D1.8F.D0.B4.D0.BE.D0.BA_.D0.B2.D1.8B.D0.BF.D0.BE.D0.BB.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B_4|Порядок выполнения работы]], Пункт 14, Рис.5.17, 5.18''). | ||
'''Замечание'''. Альтернативным способом добавления на форму может быть двойной щелчок левой кнопкой мыши по компоненту, после чего он будет добавлен в текущее положение курсора на форме. | '''Замечание'''. Альтернативным способом добавления на форму может быть двойной щелчок левой кнопкой мыши по компоненту, после чего он будет добавлен в текущее положение курсора на форме. | ||
Строка 683: | Строка 684: | ||
<center>[[Image:zak_42.png]]</center> | <center>[[Image:zak_42.png]]</center> | ||
<center>Рисунок 2.44 Форма узла "Отобрать заявки"</center> | <center>Рисунок 2.44. Форма узла "Отобрать заявки"</center> | ||
Строка 698: | Строка 699: | ||
<center>б. [[Image:zak_43_b.png]]</center> | <center>б. [[Image:zak_43_b.png]]</center> | ||
<center>Рисунок 2.45 Параметры множественного выбора из списка пользовательских переменных: а - версия {{Before|4.2.1}} и ниже; б - версия {{Since|4.3.0}};</center> | <center>Рисунок 2.45. Параметры множественного выбора из списка пользовательских переменных: а - версия {{Before|4.2.1}} и ниже; б - версия {{Since|4.3.0}};</center> | ||
Строка 725: | Строка 726: | ||
<center>[[Image:zak_44.png]]</center> | <center>[[Image:zak_44.png]]</center> | ||
<center>Рисунок 2.46 Форма узла "Запланировать заявки"</center> | <center>Рисунок 2.46. Форма узла "Запланировать заявки"</center> | ||
Строка 735: | Строка 736: | ||
<center>б. [[Image:zak_45_b.png]]</center> | <center>б. [[Image:zak_45_b.png]]</center> | ||
<center>Рисунок 2.47 Параметры компонента "Отобразить список пользовательских переменных": а - версия {{Before|4.2.1}} и ниже; б - версия {{Since|4.3.0}};</center> | <center>Рисунок 2.47. Параметры компонента "Отобразить список пользовательских переменных": а - версия {{Before|4.2.1}} и ниже; б - версия {{Since|4.3.0}};</center> | ||
В web интерфейсе данный компонент будет представлен в виде двумерной таблицы, содержащей отобранные диспетчером заявки. | В web интерфейсе данный компонент будет представлен в виде двумерной таблицы, содержащей отобранные диспетчером заявки. | ||
<p> </p> | |||
===Обрабатывать еще заявки?=== | ===Узел "Обрабатывать еще заявки?"=== | ||
Строка 748: | Строка 750: | ||
<center>[[Image:zak_46.png]]</center> | <center>[[Image:zak_46.png]]</center> | ||
<center>Рисунок 2.48 Узел "Обрабатывать еще заявки?"</center> | <center>Рисунок 2.48. Узел "Обрабатывать еще заявки?"</center> | ||
<center>[[Image:zak_47.png]]</center> | <center>[[Image:zak_47.png]]</center> | ||
<center>Рисунок 2.49 Форма узла "Обрабатывать еще заявки?"</center> | <center>Рисунок 2.49. Форма узла "Обрабатывать еще заявки?"</center> | ||
Строка 769: | Строка 771: | ||
Необходима для определения количества необработанных заявок, считанных из внутреннего хранилища. | Необходима для определения количества необработанных заявок, считанных из внутреннего хранилища. | ||
Выделите задачу сценария (см. | Выделите задачу сценария (см. Рис.2.50), введите в свойство "Название" - "Определить количество заявок" | ||
Выберите в качестве класса обработчика - "Агрегатная функция над списком" (см. Рис. 2.50). | Выберите в качестве класса обработчика - "Агрегатная функция над списком" (см. Рис.2.50). | ||
<center>[[Image:zak_49_441.png]]</center> | <center>[[Image:zak_49_441.png]]</center> | ||
<center>Рисунок 2.50 Задача сценария "Определить количество заявок"</center> | <center>Рисунок 2.50. Задача сценария "Определить количество заявок"</center> | ||
Строка 783: | Строка 785: | ||
<center>[[Image:zak_49.png]]</center> | <center>[[Image:zak_49.png]]</center> | ||
<center>Рисунок 2.51 Конфигурация обработчика задачи сценария "Определить количество заявок"</center> | <center>Рисунок 2.51. Конфигурация обработчика задачи сценария "Определить количество заявок"</center> | ||
Строка 796: | Строка 798: | ||
<center>[[Image:zak_50.png]]</center> | <center>[[Image:zak_50.png]]</center> | ||
<center>Рисунок 2.52 Конфигурация обработчика задачи сценария "Определить количество отобранных заявок"</center> | <center>Рисунок 2.52. Конфигурация обработчика задачи сценария "Определить количество отобранных заявок"</center> | ||
Строка 815: | Строка 817: | ||
<center>[[Image:zak_51.png]]</center> | <center>[[Image:zak_51.png]]</center> | ||
<center>Рисунок 2.53 Задача сценария "Инициализация индекса заявки"</center> | <center>Рисунок 2.53. Задача сценария "Инициализация индекса заявки"</center> | ||
Строка 830: | Строка 832: | ||
<center>[[Image:zak_52.png]]</center> | <center>[[Image:zak_52.png]]</center> | ||
<center>Рисунок 2.54 Задача сценария "Получить заявку из списка отобранных"</center> | <center>Рисунок 2.54. Задача сценария "Получить заявку из списка отобранных"</center> | ||
<p> </p> | <p> </p> | ||
Строка 844: | Строка 846: | ||
<center>[[Image:zak_53_441.png]]</center> | <center>[[Image:zak_53_441.png]]</center> | ||
<center>Рисунок 2.55 Задача сценария "Изменить статус заявки"</center> | <center>Рисунок 2.55. Задача сценария "Изменить статус заявки"</center> | ||
Строка 858: | Строка 860: | ||
<center>[[Image:zak_54_441.png]]</center> | <center>[[Image:zak_54_441.png]]</center> | ||
<center>Рисунок 2.56 Задача сценария "Индекс следующей заявки"</center> | <center>Рисунок 2.56. Задача сценария "Индекс следующей заявки"</center> | ||
Строка 870: | Строка 872: | ||
<center>[[Image:zak_55_441.png]]</center> | <center>[[Image:zak_55_441.png]]</center> | ||
<center>Рисунок 2.57 Настройка задержки таймера в процессе "Планирование"</center> | <center>Рисунок 2.57. Настройка задержки таймера в процессе "Планирование"</center> | ||
Строка 884: | Строка 886: | ||
<center>[[Image:zak_56_441.png]]</center> | <center>[[Image:zak_56_441.png]]</center> | ||
<center>Рисунок 2.58 Конфигурация исключающего шлюза 1</center> | <center>Рисунок 2.58. Конфигурация исключающего шлюза 1</center> | ||
Строка 894: | Строка 896: | ||
<center>[[Image:zak_57.png]]</center> | <center>[[Image:zak_57.png]]</center> | ||
<center>Рисунок 2.59 Конфигурация исключающего шлюза 2</center> | <center>Рисунок 2.59. Конфигурация исключающего шлюза 2</center> | ||
Строка 906: | Строка 908: | ||
<center>[[Image:zak_58_441.png]]</center> | <center>[[Image:zak_58_441.png]]</center> | ||
<center>Рисунок 2.60 Конфигурация исключающего шлюза 3</center> | <center>Рисунок 2.60. Конфигурация исключающего шлюза 3</center> | ||
Строка 922: | Строка 924: | ||
<center>[[Image:zak_59.png]]</center> | <center>[[Image:zak_59.png]]</center> | ||
<center>Рисунок 2.61 Пример содержимого файла внутреннего хранилища</center> | <center>Рисунок 2.61. Пример содержимого файла внутреннего хранилища</center> | ||
Строка 975: | Строка 977: | ||
<center>[[Image:zak_int_db_1.png]]</center> | <center>[[Image:zak_int_db_1.png]]</center> | ||
<center>Рисунок 2.62 Импорт источника внутреннего хранилища в Developer Studio</center> | <center>Рисунок 2.62. Импорт источника внутреннего хранилища в Developer Studio</center> | ||
<center>[[Image:zak_int_db_2.png]]</center> | <center>[[Image:zak_int_db_2.png]]</center> | ||
<center>Рисунок 2.63 Выбор источника InternalStorage</center> | <center>Рисунок 2.63. Выбор источника InternalStorage</center> | ||
<center>[[Image:zak_int_db_3.png]]</center> | <center>[[Image:zak_int_db_3.png]]</center> | ||
<center>Рисунок 2.64 Изменение пути к директории с внутренним хранилищем</center> | <center>Рисунок 2.64. Изменение пути к директории с внутренним хранилищем</center> | ||
<center>[[Image:zak_int_db_4.png]]</center> | <center>[[Image:zak_int_db_4.png]]</center> | ||
<center>Рисунок 2.65 Вызов диалога экспорта источника данных</center> | <center>Рисунок 2.65. Вызов диалога экспорта источника данных</center> | ||
<center>[[Image:zak_int_db_5.png]]</center> | <center>[[Image:zak_int_db_5.png]]</center> | ||
<center>Рисунок 2.66 Экспорт источника внутреннего хранилища на сервер</center> | <center>Рисунок 2.66. Экспорт источника внутреннего хранилища на сервер</center> | ||
Строка 1010: | Строка 1012: | ||
<center>[[Image:zak_int_db_6.png]]</center> | <center>[[Image:zak_int_db_6.png]]</center> | ||
<center>Рисунок 2.67 Просмотр внутреннего хранилища в веб интерфейсе RunaWFE Free </center> | <center>Рисунок 2.67. Просмотр внутреннего хранилища в веб интерфейсе RunaWFE Free </center> | ||
Строка 1023: | Строка 1025: | ||
<center>[[Image:zak_int_db_7.png]]</center> | <center>[[Image:zak_int_db_7.png]]</center> | ||
<center>Рисунок 2.68 Просмотр файла внутреннего хранилища</center> | <center>Рисунок 2.68. Просмотр файла внутреннего хранилища</center> | ||
Строка 1038: | Строка 1040: | ||
<center>[[Image:zak_int_db_8.png]]</center> | <center>[[Image:zak_int_db_8.png]]</center> | ||
<center>Рисунок 2.69 Использование внутреннего хранилища для действий Insert/Update/Delete</center> | <center>Рисунок 2.69. Использование внутреннего хранилища для действий Insert/Update/Delete</center> | ||
Строка 1044: | Строка 1046: | ||
<center>[[Image:zak_int_db_9.png]]</center> | <center>[[Image:zak_int_db_9.png]]</center> | ||
<center>Рисунок 2.70 Использование внутреннего хранилища для действия Select</center> | <center>Рисунок 2.70. Использование внутреннего хранилища для действия Select</center> | ||
Строка 1055: | Строка 1057: | ||
<center>[[Image:zak_int_db_10.png]]</center> | <center>[[Image:zak_int_db_10.png]]</center> | ||
<center>Рисунок 2.71 Конфигурация задачи "Добавить заявку в хранилище"</center> | <center>Рисунок 2.71. Конфигурация задачи "Добавить заявку в хранилище"</center> | ||
<p> </p> | <p> </p> | ||
Строка 1069: | Строка 1071: | ||
<center>[[Image:zak_int_db_11.png]]</center> | <center>[[Image:zak_int_db_11.png]]</center> | ||
<center>Рисунок 2.71 Конфигурация задачи "Считать заявку из хранилище"</center> | <center>Рисунок 2.71. Конфигурация задачи "Считать заявку из хранилище"</center> | ||
<p> </p> | <p> </p> | ||
Строка 1079: | Строка 1081: | ||
<center>[[Image:zak_int_db_12.png]]</center> | <center>[[Image:zak_int_db_12.png]]</center> | ||
<center>Рисунок 2.72 Конфигурация задачи "Добавить заявку в хранилище архивных заявок"</center> | <center>Рисунок 2.72. Конфигурация задачи "Добавить заявку в хранилище архивных заявок"</center> | ||
<p> </p> | <p> </p> | ||
Строка 1091: | Строка 1093: | ||
<center>[[Image:zak_int_db_13.png]]</center> | <center>[[Image:zak_int_db_13.png]]</center> | ||
<center>Рисунок 2.73 Конфигурация задачи "Удалить обработанную заявку из хранилища"</center> | <center>Рисунок 2.73. Конфигурация задачи "Удалить обработанную заявку из хранилища"</center> | ||
<p> </p> | <p> </p> | ||
Строка 1101: | Строка 1103: | ||
<center>[[Image:zak_int_db_14.png]]</center> | <center>[[Image:zak_int_db_14.png]]</center> | ||
<center>Рисунок 2.74 Конфигурация задачи "Считать из хранилища необработанные заявки"</center> | <center>Рисунок 2.74. Конфигурация задачи "Считать из хранилища необработанные заявки"</center> | ||
<p> </p> | <p> </p> | ||
Строка 1111: | Строка 1113: | ||
<center>[[Image:zak_int_db_15.png]]</center> | <center>[[Image:zak_int_db_15.png]]</center> | ||
<center>Рисунок 2.75 Конфигурация задачи "Обновить заявку"</center> | <center>Рисунок 2.75. Конфигурация задачи "Обновить заявку"</center> | ||
Строка 1136: | Строка 1138: | ||
<center>[[Image:zak_86.png]]</center> | <center>[[Image:zak_86.png]]</center> | ||
<center>Рисунок 2.76 Переход в свойства определения бизнес-процесса</center> | <center>Рисунок 2.76. Переход в свойства определения бизнес-процесса</center> | ||
Строка 1146: | Строка 1148: | ||
<center>[[Image:zak_st_87_441.png]]</center> | <center>[[Image:zak_st_87_441.png]]</center> | ||
<center>Рисунок 2.77 Право на запуск бизнес-процесса для группы "Сотрудники"</center> | <center>Рисунок 2.77. Право на запуск бизнес-процесса для группы "Сотрудники"</center> | ||
Строка 1155: | Строка 1157: | ||
<center>[[Image:zak_st_88_441.png]]</center> | <center>[[Image:zak_st_88_441.png]]</center> | ||
<center>Рисунок 2.78 Обладатели полномочий на бизнес-процесс "Планирование"</center> | <center>Рисунок 2.78. Обладатели полномочий на бизнес-процесс "Планирование"</center> | ||
Строка 1170: | Строка 1172: | ||
<center>[[Image:zak_91_441.png]]</center> | <center>[[Image:zak_91_441.png]]</center> | ||
<center>Рисунок 2.79 Цикл считывания необработанных заявок в экземпляре процесса "Планирование"</center> | <center>Рисунок 2.79. Цикл считывания необработанных заявок в экземпляре процесса "Планирование"</center> | ||
Строка 1188: | Строка 1190: | ||
<center>[[Image:zak_92.png]]</center> | <center>[[Image:zak_92.png]]</center> | ||
<center>Рисунок 2.80 Подача заявки на автотранспорт от Жукова</center> | <center>Рисунок 2.80. Подача заявки на автотранспорт от Жукова</center> | ||
Строка 1197: | Строка 1199: | ||
<center>[[Image:zak_93.png]]</center> | <center>[[Image:zak_93.png]]</center> | ||
<center>Рисунок 2.81 Подача заявки на автотранспорт от Андреева</center> | <center>Рисунок 2.81. Подача заявки на автотранспорт от Андреева</center> | ||
<center>[[Image:zak_94.png]]</center> | <center>[[Image:zak_94.png]]</center> | ||
<center>Рисунок 2.82 Подача заявки на автотранспорт от Паучкова</center> | <center>Рисунок 2.82. Подача заявки на автотранспорт от Паучкова</center> | ||
Строка 1214: | Строка 1216: | ||
<center>[[Image:zak_95.png]]</center> | <center>[[Image:zak_95.png]]</center> | ||
<center>Рисунок 2.83 Поступившие на рассмотрение к руководителю организации заявки</center> | <center>Рисунок 2.83. Поступившие на рассмотрение к руководителю организации заявки</center> | ||
Строка 1223: | Строка 1225: | ||
<center>[[Image:zak_96.png]]</center> | <center>[[Image:zak_96.png]]</center> | ||
<center>Рисунок 2.84 Одобрение заявки руководителем</center> | <center>Рисунок 2.84. Одобрение заявки руководителем</center> | ||
Строка 1240: | Строка 1242: | ||
<center>[[Image:zak_97.png]]</center> | <center>[[Image:zak_97.png]]</center> | ||
<center>Рисунок 2.85 Принятие заявки канцелярией </center> | <center>Рисунок 2.85. Принятие заявки канцелярией </center> | ||
Строка 1252: | Строка 1254: | ||
<center>[[Image:zak_98_441.png]]</center> | <center>[[Image:zak_98_441.png]]</center> | ||
<center>Рисунок 2.86 Выполнение задачи добавления заявки на обработку </center> | <center>Рисунок 2.86. Выполнение задачи добавления заявки на обработку </center> | ||
Строка 1268: | Строка 1270: | ||
<center>[[Image:zak_99_441.png]]</center> | <center>[[Image:zak_99_441.png]]</center> | ||
<center>Рисунок 2.87 Заявки во внутреннем хранилище </center> | <center>Рисунок 2.87. Заявки во внутреннем хранилище </center> | ||
Строка 1283: | Строка 1285: | ||
<center>[[Image:zak_100.png]]</center> | <center>[[Image:zak_100.png]]</center> | ||
<center>Рисунок 2.88 Задание "Отобрать заявки" </center> | <center>Рисунок 2.88. Задание "Отобрать заявки" </center> | ||
Строка 1298: | Строка 1300: | ||
<center>[[Image:zak_101.png]]</center> | <center>[[Image:zak_101.png]]</center> | ||
<center>Рисунок 2.89 Множественный выбор заявок </center> | <center>Рисунок 2.89. Множественный выбор заявок </center> | ||
Строка 1310: | Строка 1312: | ||
<center>[[Image:zak_102.png]]</center> | <center>[[Image:zak_102.png]]</center> | ||
<center>Рисунок 2.90 Задание "Запланировать отобранные заявки" </center> | <center>Рисунок 2.90. Задание "Запланировать отобранные заявки" </center> | ||
Строка 1324: | Строка 1326: | ||
<center>[[Image:zak_104_441.png]]</center> | <center>[[Image:zak_104_441.png]]</center> | ||
<center>Рисунок 2.91 Выполнена задача переноса заявки в архив </center> | <center>Рисунок 2.91. Выполнена задача переноса заявки в архив </center> | ||
Строка 1336: | Строка 1338: | ||
<center>[[Image:zak_105_441.png]]</center> | <center>[[Image:zak_105_441.png]]</center> | ||
<center>Рисунок 2.92 Основное хранилище данных "Заявка"</center> | <center>Рисунок 2.92. Основное хранилище данных "Заявка"</center> | ||
<center>[[Image:zak_106_441.png]]</center> | <center>[[Image:zak_106_441.png]]</center> | ||
<center>Рисунок 2.93 Архив</center> | <center>Рисунок 2.93. Архив</center> | ||
Строка 1356: | Строка 1358: | ||
<center>[[Image:zak_107.png]]</center> | <center>[[Image:zak_107.png]]</center> | ||
<center>Рисунок 2.94 Продолжить обработку заявок</center> | <center>Рисунок 2.94. Продолжить обработку заявок</center> | ||
Строка 1443: | Строка 1445: | ||
<center>[[Image:ext_ds_1.png]]</center> | <center>[[Image:ext_ds_1.png]]</center> | ||
<center>Рисунок 2.95 Excel-источник данных</center> | <center>Рисунок 2.95. Excel-источник данных</center> | ||
Строка 1455: | Строка 1457: | ||
<center>[[Image:tov_tab_1.png]]</center> | <center>[[Image:tov_tab_1.png]]</center> | ||
<center>Рисунок 2.96 Значок добавления вкладки</center> | <center>Рисунок 2.96. Значок добавления вкладки</center> | ||
Строка 1463: | Строка 1465: | ||
<center>[[Image:tov_tab_2.png]]</center> | <center>[[Image:tov_tab_2.png]]</center> | ||
<center>Рисунок 2.97 Добавленные на форму вкладки</center> | <center>Рисунок 2.97. Добавленные на форму вкладки</center> | ||
Строка 1476: | Строка 1478: | ||
<center>[[Image:tov_tab_3.png]]</center> | <center>[[Image:tov_tab_3.png]]</center> | ||
<center>Рисунок 2.98 Вкладки с названиями по умолчанию</center> | <center>Рисунок 2.98. Вкладки с названиями по умолчанию</center> | ||
<center>[[Image:tov_tab_4.png]]</center> | <center>[[Image:tov_tab_4.png]]</center> | ||
<center>Рисунок 2.99 Редактирование названий вкладок</center> | <center>Рисунок 2.99. Редактирование названий вкладок</center> | ||
Строка 1490: | Строка 1492: | ||
<center> [[Image:tov_tab_5_b.png]]</center> | <center> [[Image:tov_tab_5_b.png]]</center> | ||
<center>Рисунок 2.100 Форма выбора товаров для заказа</center> | <center>Рисунок 2.100. Форма выбора товаров для заказа</center> | ||
Строка 1515: | Строка 1517: | ||
<center>[[Image:tov_sch.png]]</center> | <center>[[Image:tov_sch.png]]</center> | ||
<center>Рисунок 2.101 Схема бизнес-процесса "Заказ канцтоваров"</center> | <center>Рисунок 2.101. Схема бизнес-процесса "Заказ канцтоваров"</center> | ||
Строка 1528: | Строка 1530: | ||
<center>б.[[Image:tov_109_b.png]]</center> | <center>б.[[Image:tov_109_b.png]]</center> | ||
<center>Рисунок 2.102 Схема подпроцесса "Обновление остатков товара на складе": а - цикл обхода скомплектованных товаров; б - внутренний подпроцесс-транзакция обновления остатков</center> | <center>Рисунок 2.102. Схема подпроцесса "Обновление остатков товара на складе": а - цикл обхода скомплектованных товаров; б - внутренний подпроцесс-транзакция обновления остатков</center> | ||
Строка 1538: | Строка 1540: | ||
<center>[[Image:tov_110.png]]</center> | <center>[[Image:tov_110.png]]</center> | ||
<center>Рисунок 2.103 Определение количества заказанных товаров </center> | <center>Рисунок 2.103. Определение количества заказанных товаров </center> | ||
Строка 1548: | Строка 1550: | ||
<center>[[Image:tov_111.png]]</center> | <center>[[Image:tov_111.png]]</center> | ||
<center>Рисунок 2.104 Переменные подпроцесса "Обновить остатки на складе"</center> | <center>Рисунок 2.104. Переменные подпроцесса "Обновить остатки на складе"</center> | ||
Строка 1562: | Строка 1564: | ||
<center>[[Image:tov_112.png]]</center> | <center>[[Image:tov_112.png]]</center> | ||
<center>Рисунок 2.105 Получение очередного товара из списка заказанных</center> | <center>Рисунок 2.105. Получение очередного товара из списка заказанных</center> | ||
Строка 1570: | Строка 1572: | ||
<center>[[Image:tov_121.png]]</center> | <center>[[Image:tov_121.png]]</center> | ||
<center>Рисунок 2.106 Проверка условия "По всем ли заказанным товарам обновлены остатки на складе" </center> | <center>Рисунок 2.106. Проверка условия "По всем ли заказанным товарам обновлены остатки на складе" </center> | ||
Строка 1586: | Строка 1588: | ||
<center>[[Image:tov_sub_tr.png]]</center> | <center>[[Image:tov_sub_tr.png]]</center> | ||
<center>Рисунок 2.107 Установка свойства "Транзакционный" для композиции </center> | <center>Рисунок 2.107. Установка свойства "Транзакционный" для композиции </center> | ||
Строка 1596: | Строка 1598: | ||
<center>[[Image:tov_113.png]]</center> | <center>[[Image:tov_113.png]]</center> | ||
<center>Рисунок 2.108 Параметры задачи "Считать товар со склада по названию"</center> | <center>Рисунок 2.108. Параметры задачи "Считать товар со склада по названию"</center> | ||
<center>[[Image:Tov114_ed_st_1.png]]</center> | <center>[[Image:Tov114_ed_st_1.png]]</center> | ||
<center>Рисунок 2.109 Конфигурация задачи "Считать товар со склада по названию"</center> | <center>Рисунок 2.109. Конфигурация задачи "Считать товар со склада по названию"</center> | ||
Строка 1638: | Строка 1640: | ||
<center>[[Image:tov_115.png]]</center> | <center>[[Image:tov_115.png]]</center> | ||
<center>Рисунок 2.110 Определение количества элементов в списке считанных товаров по названию</center> | <center>Рисунок 2.110. Определение количества элементов в списке считанных товаров по названию</center> | ||
Строка 1646: | Строка 1648: | ||
<center>[[Image:tov_116.png]]</center> | <center>[[Image:tov_116.png]]</center> | ||
<center>Рисунок 2.111 Конфигурация исключающего шлюза</center> | <center>Рисунок 2.111. Конфигурация исключающего шлюза</center> | ||
<center>[[Image:tov_117.png]]</center> | <center>[[Image:tov_117.png]]</center> | ||
<center>Рисунок 2.112 Получение товара из списка товаров</center> | <center>Рисунок 2.112. Получение товара из списка товаров</center> | ||
Строка 1659: | Строка 1661: | ||
<center>[[Image:tov_118.png]]</center> | <center>[[Image:tov_118.png]]</center> | ||
<center>Рисунок 2.113 Конфигурация обработчика "Выполнить формулу" для обновления количества товара на складе</center> | <center>Рисунок 2.113. Конфигурация обработчика "Выполнить формулу" для обновления количества товара на складе</center> | ||
Строка 1667: | Строка 1669: | ||
<center>[[Image:tov_119.png]]</center> | <center>[[Image:tov_119.png]]</center> | ||
<center>Рисунок 2.114 Параметры задачи бота "Обновить товар"</center> | <center>Рисунок 2.114. Параметры задачи бота "Обновить товар"</center> | ||
<center>[[Image:Tov120_ed_st_1.png]]</center> | <center>[[Image:Tov120_ed_st_1.png]]</center> | ||
<center>Рисунок 2.115 Конфигурация задачи бота "Обновить товар"</center> | <center>Рисунок 2.115. Конфигурация задачи бота "Обновить товар"</center> | ||
Строка 1686: | Строка 1688: | ||
<center>[[Image:tov_bot_tr.png]]</center> | <center>[[Image:tov_bot_tr.png]]</center> | ||
<center>Рисунок 2.116 Установка свойства "Транзакционный"</center> | <center>Рисунок 2.116. Установка свойства "Транзакционный"</center> | ||
<center>[[Image:tov_def_perm_st.png]]</center> | <center>[[Image:tov_def_perm_st.png]]</center> | ||
<center>Рисунок 2.117 Добавление боту полномочий на БП</center> | <center>Рисунок 2.117. Добавление боту полномочий на БП</center> | ||
Версия 10:25, 4 мая 2022
RunaWFE. Практикум. Внутреннее хранилище данных
Версия 4.6.0
© 2015-2023, ООО "Процессные технологии"
Введение
Практическое занятие "Разработка бизнес-процесса "Заказ автотранспорта"
Цель занятия
Целью занятия является изучение работы с внутренним хранилищем данных, представленным в виде Excel-таблиц.
Теоретические сведения
"Внутреннее хранилище данных" - аналог таблиц базы данных, представленных в виде Excel-файлов. Предназначено для централизованного хранения переменных бизнес-процесса.
Для работы с внутренним хранилищем в RunaWFE Free используется специальный элемент палитры - "Хранилище данных", связанный с задачей-сценарием. Выбор обработчика в задаче-сценарием выполняется автоматически. Установка конфигурации обработчика выполняется в зависимости от способа связи с иконкой базы данных в нотации BPMN. При связи “обработчик -> иконка” в конфигурации доступны 3 операции: insert, delete, update. При связи “иконка -> обработчик” в конфигурации доступна только операция select. Таблице Excel соответствует используемый тип переменной с установленным признаком "Таблица БД".
Подробности использования обработчика, его параметры и возможные действия над хранилищем будут рассмотрены на практическом занятии при разработке бизнес-процесса "Заказ автотранспорта".
# Порядок выполнения работы
В данной работе рассматривается разработка упрощенного варианта бизнес-процесса заказа автотранспорта для организации, располагающей собственным автопарком.
Описание бизнес-процесса
Заказчиком автотранспорта может выступить любой сотрудник организации, который подает заявку с описанием необходимого авто, времени подачи машины и количества мест. Руководитель одобряет заявку или отказывает. После принятия заявки канцелярией она сохраняется во внутреннем хранилище для дальнейшей обработки диспетчером автопарка.
Диспетчер автопарка получает из внутреннего хранилища все необработанные заявки и выполняет отбор тех, которые будут удовлетворены. Заявки отображаются в виде таблицы с информацией, от кого поступила заявка и с возможностью сортировки по полям. Благодаря этому диспетчер может в первую очередь удовлетворить более приоритетные заявки.
После удовлетворения заявка переносится в архив, заказчик получает задачу "Ознакомиться с запланированной заявкой", а "Гараж" должен отчитаться о выполненном рейсе.
Разработка бизнес-процесса
- Запустите RunaWFE симулятор, для этого дважды щёлкните по ярлыку «Start Simulation» на рабочем столе или выполните команду меню Пуск / Программы / RunaWFE Free/ Start Simulation. (Подробнее см. "Практикум. Вводное занятие", Порядок выполнения работы, Пункт 1)
- Войдите в web-интерфейс системы RunaWFE Free под пользователем Administrator. (см. "Практикум. Вводное занятие", Порядок выполнения работы, Пункт 2, Рис.5.2) Замечание. По умолчанию пароль пользователя Administrator - "wf".
- Создайте следующих пользователей: (см. "Практикум. Вводное занятие", Порядок выполнения работы, Пункты 10-11, Рис.5.10-5.11) Замечание. Если данные пользователи уже существуют в системе, т.е. были созданы в предыдущих работах, то данный пункт можно пропустить.
- Жуков Иван Ильич
- Андреев Николай Викторович
- Паучков Петр Петрович
- Иванов Иван Иванович
- Гусеницын Михаил Васильевич
- Личинкин Василий Федорович
- Сергеев Николай Иванович
- Сверчков Иван Иванович.
- Создайте группы (см. "Практикум. Вводное занятие", Порядок выполнения работы, Пункты 4-6, Рис.5.5, 5.6):
- Гараж
- Канцелярия
- Диспетчеры
- Сотрудники.
- Добавьте пользователей в группы: группа "Гараж":
- Иванов Иван Иванович
- Гусеницын Михаил Васильевич
- Личинкин Василий Федорович
- Сергеев Николай Иванович.
- Жуков Иван Ильич
- Андреев Николай Викторович
- Паучков Петр Петрович
- Иванов Иван Иванович
- Гусеницын Михаил Васильевич
- Личинкин Василий Федорович
- Сергеев Николай Иванович
- Сверчков Иван Иванович.
- Дайте полномочия группе "Сотрудники" на вход в систему (см. "Практикум. Вводное занятие", Порядок выполнения работы, пункты 7-9, Рис.5.7-5.9 ).
- Перейдите к пункту меню "Отношения" по ссылке «Отношения» в левой части экрана (см. раздел "Стандарты и концепции, связанные с СУБПиАР", пункт "Использование бинарных отношений для упрощения инициализации ролей").
- Щёлкните по ссылке "Создать отношение".
- В появившейся форме введите имя отношения ("Руководитель организации") и необязательное описание. После этого щёлкните на "Создать".
- Щёлкните на имени появившейся записи.
- В появившейся форме щёлкните на "Создать пару". В левой части пары выберите пользователя "Сверчков", в правой части пары выберите группу "Сотрудники". Это будет означать, что пользователь Сверчков является руководителем для всех пользователей, входящих в группу Сотрудники.
- Откройте среду разработки.
- Создайте новый проект "Занятие 11". Для реализации задачи заказа автотранспорта, потребуется разработать два бизнес-процесса:
- "Заявка" - процесс, предназначенный непосредственно для подачи заявки на авто
- "Планирование" - процесс, с помощью которого диспетчер будет обрабатывать поданные заявки.
- Создайте новый процесс "Заявка".
- Добавьте элементы на схему бизнес-процесса в соответствии с рисунком 2.5.
- Создайте роли (См. "Практикум. Вводное занятие", Порядок выполнения работы, Пункт 21, Рис.5.21). В разрабатываемом процессе используются следующие Роли:
- Заказчик
- Канцелярия
- Гараж
- Руководитель.
- Инициализируйте роли. Роль "Заказчик" будет инициализирована пользователем, запустившим процесс, не требует инициализатора. Роли "Канцелярия" и "Гараж" должны быть проинициализирована группами "Канцелярия" и "Гараж" соответственно. Выделите созданную роль, выберите кнопку "Изменить", перейдите на вкладку "Группы и пользователи WF". Здесь необходимо выполнить синхронизацию с сервером, после чего "Выбрать" из списка нужную группу (см. Рис.2.6). Для проверки и ввода параметров соединения с сервером воспользуйтесь ссылкой "Настройки соединения" (см. Практическое занятие "Изучение перспективы ресурсов", Пункт 26, Рис.3.16-3.18).
- Свяжите роли с узлами на графе. Роль «Заказчик» с узлами "Начало", "Ознакомиться с отказом" и "Ознакомиться с запланированной заявкой" (Подробнее см. "Практикум. Вводное занятие", Порядок выполнения работы, Пункт 22). Остальные роли свяжите с узлами в соответствии с рисунком 2.5.
- Создайте новый тип данных. Заявка будет состоять из следующего набора данных:
- "id" - идентификатор заявки (Строка)
- "ФИО заказчика" (Строка)
- "Тип авто" (Строка)
- "Количество мест" (Целое число)
- "С" - Дата/время подачи авто (Дата/Время)
- "По" - Дата/время окончания рейса (Дата/Время)
- "Статус" (Строка).
- Создайте переменные:
- "Заявка" - переменная пользовательского типа "Заявка"
- "Архивная заявка" - переменная пользовательского типа "Заявка"
- "Заявки" - переменная формата Список(Заявка)
- "Комментарий заказчика" - переменная формата "Текст"
- "Комментарий руководителя" - переменная формата "Текст"
- "Комментарий канцелярии" - переменная формата "Текст".
- Создайте графические формы. Замечание. По умолчанию в качестве редактора форм используется CKEditor4, но в случае если у вас в системе установлен браузер Microsoft Internet Explorer устаревшей версии - 6 (IE6) или 7 (IE7), то с формами могут возникнуть проблемы. Поэтому следует переключить редактор на FCKEditor2 (как переключить редактор см. в Практическое занятие "Изучение перспективы данных", Порядок выполнения работы, Пункт 6, Рис.4.9, 4.10).
- Выберите класс обработчиков и задайте конфигурации.
- Задайте задержку для Таймера. В процессе "Заявка" используется таймер для установки периода считывания заявки из внутреннего хранилища. Щёлкните по таймеру правой кнопкой мыши и выберите пункт "Задержка".
- Добавьте конфигурацию исключающего шлюза. В цикле опроса заявки с проверкой на предмет изменения ее статуса используется исключающий шлюз. Вызовите конструктор. Для этого щёлкните правой кнопкой мыши по элементу и выберите пункт "Конфигурация". Это же можно сделать и через свойства элемента.
- Создайте новый процесс "Планирование".
- Добавьте элементы на схему бизнес-процесса в соответствии с рисунком 2.40.
- Создайте роли (См. "Практикум. Вводное занятие", Порядок выполнения работы, Пункт 21, Рис.5.21). В разрабатываемом процессе используются следующие Роли:
- Диспетчер.
- Свяжите роли с узлами на графе в соответствии с рисунком 2.40. Подробнее см. "Практикум. Вводное занятие", Порядок выполнения работы, Пункт 22.
- Создайте переменные. Откройте процесс "Заявка", перейдите на вкладку "Переменные", выделите переменную "Заявка" и выберите кнопку "Копировать" (см. Рис.2.41).
- "Все заявки" - переменная формата "Список(Заявка)", будет содержать считанные из внутреннего хранилища необработанные заявки
- "Отобранные заявки" - переменная формата "Список(Заявка)", будет содержать отобранные диспетчером заявки
- "Количество заявок" - переменная формата "Целое число", хранит количество заявок
- "индекс заявки" - переменная формата "Целое число", используется для хранения индекса обрабатываемой заявки.
- Создайте графические формы. Замечание. По умолчанию в качестве редактора форм используется CKEditor4, но в случае если у вас в системе установлен браузер Microsoft Internet Explorer устаревшей версии - 6 (IE6) или 7 (IE7), то с формами могут возникнуть проблемы. Поэтому следует переключить редактор на FCKEditor2 (как переключить редактор см. в Практическое занятие "Изучение перспективы данных", Порядок выполнения работы, Пункт 6, Рис.4.9, 4.10).
- "Входные данные" - это список, из элементов которого выполняется отбор; в данном случае это все необработанные заявки - переменная "Все заявки"
- "Название переменной" - это список, в котором будут сохранены отобранные элементы списка, указанного в параметре "Входные данные"
- "Форма отображения" - используйте вариант отображения - "Двумерная таблица" (в версии RunaWFE Free 4.2.1 и ниже) (см. "Замечание 1" под списком)
- "Поле, используемое для сортировки" (параметр отсутствует в версии RunaWFE Free 4.3.0) - критерий для предварительной сортировки таблицы; используйте сортировку по "ФИО заказчика" (см. "Замечание 2" под списком).
- Выберите класс обработчиков и задайте конфигурации.
- Задайте задержку для Таймера. В процессе "Планирование" используется таймер для установки периода считывания необработанных заявок из внутреннего хранилища. Щёлкните по таймеру правой кнопкой мыши и выберите пункт "Задержка". Установите задержу равной 10 секунд от даты прихода управления в состояние.
- Добавьте конфигурацию для исключающих шлюзов. Первый исключающий шлюз используется для проверки количества необработанных заявок, если их 0, то управление возвращается в задачу "Считать необработанные заявки", иначе идет по переходу "Отобрать заявки". Конфигурация шлюза представлена на рисунке 2.58.
- в момент выполнения обработчика, использующего одно из действий INSERT, DELETE, UPDATE, файлы внутреннего хранилища данных не должны быть открыты в системе, иначе действие не будет выполнено
- во избежание проблем с форматом запрещается самостоятельно добавлять во внутреннее хранилище данные, используя редакторы файлов (MS Excel и подобные); если есть необходимость использовать заранее заполненное хранилище, создайте для этого отдельный процесс, использующий соответствующий обработчик с действием "insert"
- во время отладки БП рекомендуется останавливать ранее запущенные экземпляры процессов, работающих с внутренним хранилищем
- во время отладки БП рекомендуется чистить файлы хранилища в случае изменения набора атрибутов или их имен в пользовательском типе, используемом во внутреннем хранилище.
- посмотреть путь, используемый для хранения файлов внутреннего хранилища
- отобразить файлы внутреннего хранилища
- скачать Excel-файлы внутреннего хранилища.
- Откройте среду разработки. Вернемся к использованию элемента внутреннего хранилища в среде разработки. Для использования внутреннего хранилища в БП необходимо расположить на графе элементы "Задача сценария" и "Хранилище данных", после чего соединить их с помощью специального пунктирного перехода в зависимости от необходимого действия.
- Сохраните процессы и экспортируйте их на сервер WFE (Подробнее см. Практическое занятие "Изучение перспективы потока управления", Порядок выполнения работы, Пункты 11-14).
- Откройте web интерфейс системы RunaWFE Free.
- Войдите под пользователем Administrator, пароль – wf.
- Дайте права на запуск процесса "Заявка" для группы "Сотрудники". Откройте "Запустить процесс" и перейдите в свойства определения бизнес-процесса "Заявка".
- Дайте права на запуск, чтение, чтение экземпляра, а также остановку процесса "Планирование" для группы "Диспетчеры".
- Войдите в систему под пользователем Сергеев, входящим в группу "Диспетчеры".
- Запустите процесс "Планирование".
- Перейдите в "Запущенные процессы" и откройте только что запущенный экземпляр процесса "Планирование".
- Войдите в систему под пользователем, входящим в группу "Сотрудники", например Жуков.
- Запустите новый экземпляр процесса "Заявка".
- Введите данные заявки заказа автотранспорта и выберите кнопку "Запустить".
- Подайте еще пару заявок, например под пользователями Андреев и Паучков.
- Войдите под пользователем Сверчков, являющимся руководителем организации.
- Откройте каждое из заданий, и одобрите заявки.
- Войдите под пользователем Гусеницын, входящим в группу "Канцелярия".
- Примите все заявки.
- Войдите на сервер WFE под пользователем Administrator (пароль wf).
- Откройте один из экземпляров процесса "Заявка".
- Откройте внутреннее хранилище данных "Заявка". Для этого перейдите в меню "Внутреннее хранилище" и выберите хранилище "Заявка".
- Войдите под диспетчером "Сергеев".
- Откройте задание "Отобрать заявки".
- Выберите обе заявки. Для этого поставьте галочку напротив каждой из заявок и выполните задание.
- Откройте полученное задание "Запланировать заявки". Выберите кнопку "Запланировать заявки".
- Войдите под пользователем "Administrator".
- Откройте те экземпляры процесса "Заявка", заявки которых были отобраны и запланированы. Проверьте, что управление вышло из цикла опроса статуса заявки и была выполнена задача переноса заявки в архив.
- Откройте поочерёдно основное и архивное хранилище данных (Меню "Внутреннее хранилище данных"). Убедитесь, что все запланированные заявки были перенесены из основного хранилища в архив.
- Выполните активные задачи заказчиков и гаража: "Ознакомиться с запланированной заявкой", "Отчитаться о рейсе".
- Войдите под диспетчером "Сергеев" и выполните задачу "Обрабатывать еще заявки?", выбрав "Да".
- Запланируйте оставшиеся заявки (если такие есть).
Бизнес-процесс "Заявка"
В бизнес-процессе используется следующие элементы: Начало, Действие, Задача сценария, Хранилище данных, Переход, Пунктирный переход, Таймер, Исключающий шлюз, Параллельный шлюз, Аннотация, Окончание.
Для элемента "Задача сценария" используйте опцию компактный вид (см. пункт 1 раздела "Практическое занятие "Работа с Word-ботом". Порядок выполнения работы.",Замечание. Рис.2.2)
Для изменения названий по умолчанию, выделите элемент, щёлкнув по нему, перейдите в свойства и введите новое значение в поле "Название".
Для связи задачи сценария с иконкой хранилища данных используется специальный пунктирный переход.
Инициализируйте роль "Руководитель" отношением "Руководитель организации", примененным к роли "Заказчик":
Для этого выделите "Руководитель" в списке ролей на вкладке "Роли" и щёлкните "Изменить".
В появившейся форме перейдите на вкладку "Задать роль с помощью отношения". Выберите кнопку "Синхронизация", затем "Выбрать" (См. Рис.2.7).
В списке будут отображаться импортированные с сервера отношения, выберите "Руководитель организации" и выберите кнопку "ОК" (См. Рис.2.8).
Откройте список для поля "Параметр отношения" и выберите роль "Заказчик" (См. Рис.2.9). Выберите кнопку "ОК".
Далее добавьте Атрибуты, соответствующие перечисленному выше набору данных. Для этого используйте кнопку "Создать", расположенную в области "Атрибуты".
В появившемся окне введите название атрибута и выберите кнопку "OK". Форма создания атрибута не отличается от формы создания переменной.
Создайте все атрибуты заявки:
По заданию, заявка после обработки должна быть помещена в архив.
Таким образом потребуется создать еще один тип данных с признаком таблицы БД - "Архивная заявка".
Выделите тип данных "Заявка" и выберите кнопку "Копировать", затем "Вставить". В появившемся окне введите название переменной "Архивная заявка", и также установите признак "Таблица БД".
Для создания переменной перейдите на вкладку "Переменные" и выберите кнопку "Создать". В появившейся форме введите название переменной, выберите кнопку "Далее" и выберите ее формат (Подробнее см. "Практикум.Перспективы исполнимых бизнес-процессов", Практическое занятие "Изучение перспективы данных", Порядок выполнения работы, Пункт 5).
Стартовая форма
На данной форме заказчик вводит данные заявки.
Выделите узел «Начало» графа процесса "Заявка" правой кнопкой мыши и выберите команду «Форма» > «Создать форму» (Подробнее см. Практическое занятие "Изучение перспективы данных", Порядок выполнения работы, Пункт 6, Замечание, Рис.4.11-4.12).
На данной форме заказчик вводит данные заявки на автотранспорт.
Добавьте на форму текст "Введите данные заявки".
Выберите кнопку на иконку вставки в форму таблицы (см. Рис.2.15), используйте 2 столбца и 4 строки (см. Рис.2.16). Расположите таблицу под текстом "Введите данные заявки".
Заполните колонки таблицы, как показано на рисунке 2.17. Во втором столбце используйте компонент формы "Ввод переменной". Для этого перейдите на вкладку "Компоненты форм", выделите необходимый компонент, в данном случае это "Ввод переменной" и с помощью мыши перетащите его на форму (Подробнее см. Практическое занятие "Изучение перспективы операций", Порядок выполнения работы, Пункт 14, Рис.5.17, 5.18).
Замечание. Альтернативным способом добавления на форму может быть двойной щелчок левой кнопкой мыши по компоненту, после чего он будет добавлен в текущее положение курсора на форме.
Для вызова свойств добавленного на форму компонента используйте двойной щелчок левой кнопкой мыши или пункт "Параметры компонента" контекстного меню (вызывается правой кнопкой мыши).
В качестве параметра "Название переменной" задайте соответствующие поля переменной пользовательского формата "Заявка" (см. Рис.2.18).
Расположите под таблицей компонент для ввода переменной "Комментарий заказчика".
Сохраните и закройте форму.
Задайте валидацию для переменных стартовой формы.
Для этого щёлкните на стартовой форме правой кнопкой мыши и выберите пункт "Форма > Проверка переменных формы", в появившейся форме выделяйте переменные и устанавливайте необходимые валидаторы. (Подробнее см. Практическое занятие "Изучение перспективы операций", Порядок выполнения работы. Пункт 15, Рис.5.27, 5.28).
Для "Заявка.Тип авто" добавьте валидатор "Обязательное поле". В поле "Сообщение об ошибке" введите - "Обязательное поле".
Для "Заявка.Количество мест" добавьте валидатор "Обязательное поле", а также "Диапазон числа", установив минимальное значение в "1" включительно (см. Рис.2.20). При этом в поле "Сообщение об ошибке" введите - "Должно быть задано минимум одно место".
Для "Заявка.С" добавьте валидатор "Обязательное поле", а также "Диапазон даты относительно текущей", установив параметр "Сдвиг в прошлое" в значение "0" (см. Рис.2.21), при этом в поле "Сообщение об ошибке" введите - "Дата подачи авто не может быть в прошлом".
Для "Заявка.По" используйте такие же валидаторы, как и для "Заявка.С".
Кроме того, необходимо добавить глобальный валидатор для проверки условия "Дата/время окончания рейса должны быть позже даты/времени подачи авто".
Для этого перейдите на вкладку "Глобальные валидаторы", затем "Добавить". В поле сообщение об ошибке введите "Дата/время окончания рейса должны быть позже даты/времени подачи авто", а в конфигураторе задайте
Заявка.По позже Заявка.С
Форма узла "Одобрить заявку"
Создайте форму для узла "Одобрить заявку".
Здесь руководитель просматривает заявку и вводит комментарий.
Используйте компонент "Отобразить переменную" для вывода значений переменных "Заявка" и "Комментарий заказчика". В качестве вида отображения используйте "Как неактивный компонент ввода".
Создайте аналогичным образом остальные формы.
Задача сценария "Получить ФИО заказчика"
Необходима для получения ФИО заказчика.
Выделите задачу сценария (см. Рис.2.28), введите в свойство "Название" - "Получить ФИО заказчика".
Выберите в качестве класса обработчика - "Получить информацию об исполнителе" (см. Рис.2.29).
Вызовите конфигуратор обработчика. Для этого выберите "Выбор конфигурации" в свойствах задачи сценария. И введите параметры как показано на рисунке 2.30.
Задача сценария "Сформировать id заявки"
Задача предназначена для формирования id подаваемой заявки. Данный идентификатор является уникальным и фактически равен id запущенного экземпляра процесса "Заявка". Кроме того, в данной задаче инициализируется статус заявки ("Не обработана").
Выберите в качестве класса обработчика - "Выполнить формулу" (см. Рис.2.31).
Задайте конфигурацию:
Заявка.id=get_process_id() Заявка.Статус="Не обработана"
Задача сценария "Получить заявку из списка"
После подачи заявка записывается во внутреннее хранилище данных (Excel-файл) со статусом "Не обработана", далее выполняется периодическое ее считывание из внутреннего хранилища для проверки статуса, зная ее id. При этом результат считывания из внутреннего хранилища всегда является списком (даже если считывается одна конкретная заявка по ее id). Поэтому дополнительно используется специальный обработчик для получения элемента списка, в данном случае заявки из списка заявок.
Выделите задачу сценария как показано на рисунке 2.33 и перейдите в ее свойство. Здесь выберите в качестве класса обработчика - "Получить элемент списка". Задайте конфигурацию как показано на рисунке 2.34.
Задача сценария "Копирование переменной Заявка в Архивная заявка"
После обработки заявки, согласно задания, она должна быть перенесена в архивное хранилище. Для этого обработанная заявка должна быть переписана в переменную "Архивная заявка". Используйте обработчик "Выполнить формулу".
В остальных задачах сценария используется обработчик для работы с внутренним хранилищем. Подробная работа с внутренним хранилищем будет описана в последующих пунктах.
Настройте задержку Таймера в соответствии с рисунком 2.37.
Задайте путь по умолчанию "Считать заявку", а условием выхода из цикла по переходу "заявка обработана" будет изменение статуса заявки:
"Заявка.Статус" не равно "Не обработана"
Остальные элементы бизнес-процесса "Заявка" будут описаны в последующих пунктах данной части практикума.
Бизнес-процесс "Планирование"
Данный процесс запускает диспетчер. Выполняется считывание из внутреннего хранилища всех заявок со статусом "Не обработана". Если такие есть, то они отображаются для диспетчера в виде таблицы с возможностью выбора тех, которые он желает запланировать. Информация по запланированным заявкам обновляется во внутреннем хранилище. Далее цикл считывания необработанных заявок повторяется.
Здесь используется тот же набор элементов что и для процесса "Заявка".
Вернитесь в разрабатываемый процесс "Планирование", перейдите на вкладку "Переменные" и выберите кнопку "Вставить" (см. Рис.2.42).
Замечание. Вместе с переменной будет скопирован и пользовательский тип "Заявка". Но т.к. этот тип должен быть использован для внутреннего хранилища, то потребуется дополнительно установить ему опцию "Таблица БД". Для этого перейдите выделите тип "Заявка", выберите кнопку "Изменить" и установите опцию "Таблица БД".
Создайте остальные переменные:
Форма "Отобрать заявки"
На данной форме заказчик отбирает заявки, которые будут запланированы.
Выделите узел «Отобрать заявки» графа процесса "Планирование" правой кнопкой мыши и выберите команду «Форма» > «Создать форму» (Подробнее см. Практическое занятие "Изучение перспективы данных", Порядок выполнения работы, Пункт 6, Замечание, Рис.4.11-4.12).
Добавьте на форму текст "Выберите заявки для обработки:", под которым расположите компонент "Множественный выбор из списка пользовательских переменных".
Для этого перейдите в панель "Компоненты форм", выделите компонент "Множественный выбор из списка пользовательских переменных" и с помощью мыши перетащите его на форму (Подробнее см. Практическое занятие "Изучение перспективы операций", Порядок выполнения работы, Пункт 14, Рис.5.17, 5.18).
Замечание. Альтернативным способом добавления на форму может быть двойной щелчок левой кнопкой мыши по компоненту, после чего он будет добавлен в текущее положение курсора на форме.
Замечание. Существует два компонента для множественного выбора. Один используется для списка простых переменных, другой для списка пользовательских переменных. В данном случае необходим множественный выбор из списка именно пользовательских переменных.
Для вызова свойств добавленного на форму компонента используйте двойной щелчок левой кнопкой мыши или пункт "Параметры компонента" контекстного меню (вызывается правой кнопкой мыши).
Заполните параметры компонента как показано на рисунке 2.45.
Замечание. Набор параметров компонента может отличаться в зависимости от используемой версии RunaWFE Free.
Описание параметров:
Замечание 1. В версии RunaWFE Free 4.3.0 данный параметр поменял свое назначение, теперь это не форма таблицы (используется классическая двумерная таблица), а вид отображения значений. Предлагается выбрать между "Как неактивный компонент ввода" и "Как строка".
Замечание 2. В новой версии компонента (RunaWFE Free 4.3.0) появилась возможность выбора полей для отображения в таблице и их позицию. Выберите кнопку "..." в строке "Атрибуты" (см. рисунок 2.44б). В появившемся окне выделите все поля кроме "id" (диспетчеру не обязательно знать id заявки, поэтому выводить значение этого поля не обязательно), выберите кнопку "Добавить".
В веб интерфейсе компонент будет представлен в виде двумерной таблицы с отображением списка заявок. Диспетчер отбирает заявки проставляя галочки напротив соответствующей строки таблицы.
Форма "Запланировать заявки"
Создайте форму для узла "Запланировать заявки". Расположите на форме компонент "Отобразить список пользовательских переменных". Используйте для этого двойной щелчок по компоненту из палитры.
Двойным щелчком мыши или с помощью контекстного меню перейдите в параметры компонента и заполните их как показано на рисунке 2.47. Используйте вариант "а" в случае версии RunaWFE Free 4.2.1 и ниже, или вариант "б" в случае версии RunaWFE Free 4.3.0.
В web интерфейсе данный компонент будет представлен в виде двумерной таблицы, содержащей отобранные диспетчером заявки.
Узел "Обрабатывать еще заявки?"
В данном задании диспетчер выбирает, продолжать обрабатывать заявки или завершить процесс.
В web интерфейсе форма будет представлена в виде отображаемого текста "Обрабатывать еще заявки?", под которым автоматически будут добавлены кнопки выбора "Да"/"Нет", соответствующие переходам на графе для возврата на чтение очередных необработанных заявок или завершения процесса.
Задача сценария "Определить количество заявок"
Необходима для определения количества необработанных заявок, считанных из внутреннего хранилища.
Выделите задачу сценария (см. Рис.2.50), введите в свойство "Название" - "Определить количество заявок" Выберите в качестве класса обработчика - "Агрегатная функция над списком" (см. Рис.2.50).
Вызовите конфигуратор обработчика. Для этого выберите "Выбор конфигурации" в свойствах задачи сценария. И введите параметры как показано на рисунке 2.51.
Для определения количества элементов в списке используется функция "COUNT".
Задача сценария "Определить количество отобранных заявок"
Аналогичным образом выберите класс обработчика и добавьте конфигурацию для задачи сценария "Определить количество отобранных заявок". Но в данном случае определяется количество элементов в списке "Отобранные заявки".
После отбора заявок, управление переходит в цикл, предназначенный для поочередного прохода по всем отобранным заявкам для изменения их статуса с "Не обработана" на "Запланирована". В данном цикле используется несколько задач сценариев. Обход заявок выполняется в обратном порядке, т.е. от последней отобранной заявки к первой.
Задача сценария "Инициализация индекса заявки"
Используется перед началом цикла, устанавливает индекс на последний элемент списка (обход заявок в обратном порядке). Выберите "Выполнить формулу" в качестве класса обработчика. Задайте конфигурацию:
'индекс заявки'='Количество заявок';
Используйте переменные "индекс заявки" и "Количество заявок".
Задача сценария "Получить заявку из списка отобранных"
Используется для получения заявки по индексу из списка отобранных заявок.
Класс обработчика - "Получить элемент списка".
Задача сценария "Изменить статус заявки"
Предназначена для изменения статуса отобранной заявки с "Не обработана" на "Запланирована".
Класс обработчика "Выполнить формулу", конфигурация:
Заявка.Статус="Запланирована"
Задача сценария "Индекс следующей заявки"
В цикле используется обход заявок в обратном порядке, поэтому в данной задаче сценария выполняется уменьшение индекса на 1.
Класс обработчика "Выполнить формулу", конфигурация:
'индекс заявки'='индекс заявки'-1;
Второй исключающий шлюз используется для проверки количества отобранных диспетчером заявок. Если диспетчер не отобрал ни одной заявки, то управление переходит в задачу "Обрабатывать еще заявки", иначе идет по переходу "Отобраны".
Конфигурация шлюза представлена на рисунке 2.59.
Третий исключающий шлюз используется в цикле обновления статуса запланированных заявок.
Если индекс обрабатываемой заявки достиг нуля, то статус всех отобранных заявок обновлен и цикл завершается, управление идет по переходу "все заявки обновлены".
Конфигурация шлюза представлена на рисунке 2.60.
Остальные элементы бизнес-процесса "Планирование" будут описаны в последующих пунктах данной части практикума.
Внутреннее хранилище данных
В качестве внутреннего хранилища данных о заявках используются Excel-файлы. Строки соответствуют заявкам, а столбцы атрибутам заявки (id, Тип авто, Статус и т.д.).
Например, на рисунке 2.61 представлен Excel-файл с данными по четырем заявкам.
Для работы с данным хранилищем используется специальный обработчик, позволяющий выполнять простейшие действия с данными:
Действие INSERT
Предназначено для добавления данных в хранилище. Вставка выполняется в следующую свободную строку. В качестве входных данных используется переменная пользовательского типа или список из таких переменных. Например, в разрабатываемом процессе данное действие будет использовано для вставки во внутреннее хранилище поданной заявки.
Действие SELECT
Предназначено для чтения данных из хранилища, может быть использована с условием. Например, для выборки заявок с определенным статусом.
Замечание. В качестве результата всегда возвращает список, даже если был получен только один элемент. Именно поэтому в процессе "Заявка", после чтения заявки по ее id, дополнительно используется обработчик "Получить элемент списка".
Действие UPDATE
Предназначено для обновления переменной в хранилище. Обязательно использование условия для определения переменной, которую требуется обновить (иначе будут обновлены все переменные во внутреннем хранилище).
Например, в разрабатываемом процессе используется для обновления заявки после изменения ее статуса с "Не обработана" на "Запланирована" по номеру ее id.
Действие DELETE
Предназначено для удаления переменной из внутреннего хранилища. Используется с условием, иначе будут удалены все переменные из хранилища.
Например, в разрабатываемом процессе используется для удаления заявки из основного внутреннего хранилища после ее переноса в архивное внутреннее хранилище.
Замечания:
Каждому типу переменной с установленной опцией "Таблица БД" соответствует отдельный Excel-файл, совпадающий с именем типа.
По умолчанию файлы внутреннего хранилища данных сохраняются в директорию
C:\Users\<Пользователь>\AppData\Roaming\runawfe\excelstorage,
но путь этот можно изменить. Для этого нужно импортировать в среду разработки источник InternalStorage (Рис.2.62, 2.63), изменить путь (Рис.2.64) и экспортировать его обратно (Рис.2.65, 2.66).
В web интерфейсе RunaWFE Free есть возможность:
Для этого необходимо перейти в меню "Внутреннее хранилище" (доступен только пользователям, входящим в группу Administrators).
Как видно из рисунка 2.67, файлы внутреннего хранилища располагаются по пути
C:\Users\ROMA\AppData\Roaming\runawfe\excelstorage,
в хранилище расположены файлы "Заявка", "Архивная заявка". По щелчку на название файла будет открыта страница с просмотром его содержимого в виде таблицы.
По щелчку на имени файла в заголовке таблицы есть возможность его загрузить.
Задача сценария "Добавить заявку в хранилище" в БП "Заявка"
Данная задача предназначена для добавления заявки во внутреннее хранилище. Разместите на графе задачу сценария и иконку БД "Хранилище данных" соединив их пунктирным переходом (из задачи в иконку БД). Это приведет к автоматическому выбору необходимого обработчика. В конфигурации обработчика используйте действие - "Insert", тип данных - "Заявка", переменная с данными для вставки - "Заявка".
Задача сценария "Считать заявку из хранилища" в БП "Заявка"
Данная задача предназначена для считывания заявки из хранилища данных по ее id (уникальному идентификатору). Разместите на графе задачу сценария и соедините ее с иконкой хранилища данных с помощью пунктирного перехода (из иконки БД в задачу). Это приведет к автоматическому выбору необходимого обработчика. В конфигурации обработчика будет доступно единственное действие - "Select". В качестве типа данных выберите тип "Заявка", а в результирующую переменную - переменную формата список - "Заявки".
Замечание. Действие SELECT в качестве результата всегда возвращает список, даже если предполагается получить только один экземпляр пользовательской переменной (например заявку по ее уникальному идентификатору), поэтому тип результирующей переменной должен быть "Список".
В данной задаче требуется получить из хранилища заявку по ее уникальному идентификатору, поэтому также необходимо добавить условие выборки: поле "id" таблицы должно соответствовать полю id переменной "Заявка".
Задача сценария "Добавить заявку в хранилище архивных заявок" в БП "Заявка"
Задача выполняет добавление заявки в архивное внутреннее хранилище. Процесс создания данной задачи аналогичен созданию задачи "Добавить заявку в хранилище". Отличие только в использовании другого типа данных - "Архивная заявка" и переменной для вставки - "Архивная заявка".
Задача сценария "Удалить обработанную заявку из хранилища" в БП "Заявка"
После добавления обработанной заявки в архив, ее требуется удалить из основного хранилища. В данном случае необходимо использовать действие "Delete", поэтому соедините задачу сценария исходящим из нее пунктирным переходом с иконкой хранилища данных.
Создайте конфигурацию задачи. Используйте действие DELETE с условием удаления заявки по ее идентификатору.
Задача сценария "Считать из хранилища необработанные заявки" в БП "Планирование"
В бизнес процессе "Планирование" требуется считывать заявки со статусом "Не обработана". В конфигурации задачи используйте действие "Select", тип данных - "Заявка", результирующая переменная формата список - "Все заявки". В качестве условия используйте совпадение поля "Статус" в таблице хранилища с переменной "Статус", проинициализированной значением - "Не обработана".
Задача сценария "Обновить заявку" в БП "Планирование"
В процессе "Планирование" требуется обновить заявки в хранилище после обработки и изменения их статусов. Используйте действие "UPDATE" с условием - обновить заявку, зная ее идентификатор.
Выполнение процессов
Замечание. Разработанные бизнес-процессы заказа автотранспорта могут выполняться некорректно в устаревших версиях браузера Internet Explorer (IE7 и ниже). Рекомендуется использовать актуальные версии современных браузеров.
Выберите ссылку "Обладатели полномочий".
Дайте право на чтение и запуск процесса "Заявка" для группы "Сотрудники".
Как видите, управление пришло в цикл считывания необработанных заявок и будет находиться здесь, пока во внутреннее хранилище не добавят хотя бы одну заявку.
Все заявки поступят руководителю организации.
Каждой заявке присвоен уникальный идентификатор id (равный id соответствующего экземпляра процесса "Заявка") и статус "Не обработана".
Заявки будут направлены в канцелярию.
Как видно, задача добавления заявки на обработку успешно выполнена.
Управление пришло в цикл опроса статуса заявки.
Все три поданные заявки добавлены в хранилище.
Замечание. Периодичность проверки хранилища на предмет присутствия в нем необработанных заявок равна 10 секунд, первые 2 заявки были поданы как раз в течении этих 10 секунд, а 3-я позже. Именно поэтому, как видно из рисунка 2.88, диспетчеру отображаются только 2 заявки.
В основном хранилище должны остаться только те заявки, которые еще не запланированы диспетчером.
Если в основном хранилище к этому моменту еще остались заявки, то диспетчер получит соответствующие задания.
Задание для самостоятельной работы
Разработайте учебный вариант бизнес-процесса "Заказ канцтоваров" по следующему описанию.
Во внешнем хранилище данных, представленном в виде Excel-файла с названием "Склад", на листе "Склад" хранится информация об имеющихся на складе канцтоварах, их количестве и принадлежности к группе. Весь товар разбит по группам:
- "Экономный сотрудник" - товары, которые нужны для работы практически всем (ручка, карандаш, бумага и т.п.)
- "Сотрудник" - товары, которые могут потребоваться сотруднику, но это происходит относительно редко (бокс для CD, булавки, калькулятор "Citizen" и т.п.)
- "Отдел" - товары, которые предназначены не одному сотруднику, а сразу отделу (зарядное устройство для аккумуляторов, аккумуляторы пальчиковые, батарейки пальчиковые и т.п.)
- "Фирменные материалы" - специальные товары, содержащие символику компании (блокнот А5 фирменный, конверт фирменный A4, конверт фирменный A5, пакет полиэтиленовый фирменный большой, портфель фирменный, ручка фирменная и т.п.).
Пользователь заказывает товар со склада, указывая нужное количество. Выбранные товары добавляются во внешнее хранилище представленное в виде Excel-файла с названием "Заказанные товары" на лист "Заказанные товары". Работник склада получает список заказанных с помощью данного экземпляра процесса товаров, а также текущие остатки на складе.
По предоставленной информации работник склада решает - скомплектовать или отвергнуть заказ.
В случае отказа:
- работник склада должен ввести комментарий, содержащий причину отказа
- товар должен быть удален из заказанных товаров
- сотрудник, который заказывал товар, должен получить задание "Ознакомиться с отказом" с отображением причины отказа.
В случае решения скомплектовать заказ:
- товары переносятся из хранилища "Заказанные товары" в новое хранилище, представленное в виде Excel-файла с названием "Архив скомплектованных заказов", на вкладку "Архив скомплектованных заказов"
- на складе обновляются остатки по товарам, которые были скомплектованы
- работник склада получает задание "Выдать товар"
- сотрудник, который заказывал товар, получает задания "Ознакомиться - заказ скомплектован" и "Получить товар".
Замечание. Процесс является учебным вариантом, поэтому нет необходимости в проверке условия достаточности для заказа товара на складе. Однако расчет нового значения и обновление количества остатков должны выполняться в единой транзакции, дабы обеспечить целостность данных и не потерять возможные изменения количества товара, выполненные в другом экземпляре БП при обновлении остатков.
В отличие от практического занятия "Заказ автотранспорта", в данной работе требуется использовать не внутреннее, а внешнее хранилище данных.
Ниже представлены рекомендации по использованию внешнего хранилища.
"Внешнее хранилище данных" - аналог таблиц базы данных, представленных в виде Excel-листов. Предназначено для централизованного хранения данных бизнес-процесса. Для работы с внешним хранилищем в RunaWFE используется одноименный обработчик "Внешнее хранилище данных", который обеспечивает возможность выполнения простых действий: добавления, чтения, удаления и обновления данных.
Для работы с внешним хранилищем используйте отдельного бота "Бот работы с внешним хранилищем", с задачами, использующими обработчик ru.runa.wfe.office.storage.handler.ExternalStorageHandler.
Возможные действия с внешним хранилищем:
Действие INSERT
Предназначено для добавления данных во внешнее хранилище. Вставка выполняется в следующую свободную строку. В качестве входных данных используется переменная пользовательского типа или список из таких переменных. Например, в разрабатываемом процессе данное действие будет использовано для вставки во внешнее хранилище поданной заявки.
Действие SELECT
Предназначено для чтения данных из внешнего хранилища, может быть использована с условием. Например, для выборки заявок с определенным статусом.
Замечание. В качестве результата всегда возвращает список, даже если был получен только один элемент. Именно поэтому в процессе "Заявка", после чтения заявки по ее id, дополнительно используется обработчик "Получить элемент списка".
Действие UPDATE
Предназначено для обновления переменной пользовательского типа во внешнем хранилище. Обязательно использование условия для определения переменной, которую требуется обновить (иначе будут обновлены все переменные во внешнем хранилище).
Действие DELETE
Предназначено для удаления переменной пользовательского типа из внешнего хранилища. Используется с условием, иначе будут удалены все переменные из внешнего хранилища. В качестве входного параметра в обязательном порядке должна принимать переменную пользовательского типа, для использования ее в параметре "Переменная". Это необходимо для того, чтобы обработчик знал, какие поля размещены во внешнем хранилище.
Например, в разрабатываемом процессе используйте это действие для удаления товаров из таблицы заказанных товаров после их переноса в архив.
Для доступа к внешнему хранилищу, заведите новый Excel-источник данных, который далее можно использовать в обработчике внешнего хранилища. Задайте путь к существующей директории, в которой будут храниться Excel-таблицы, например C:\runa_tmp\.
Ниже представлены рекомендации по разработке БП.
Каждая группа товаров должна отображаться пользователю на отдельной вкладке. Для добавления вкладок на форму используйте значок "Добавить вкладку", расположенный на панели инструментов редактора форм.
Каждое нажатие на данный значок приводит к добавлению новой вкладки на форму.
Для редактирования названия вкладки:
- щёлкните по вкладке
- перейдите на страницу "Код"
- измените необходимые названия
- вернитесь на страницу "Дизайн" и сохраните форму.
Используйте компонент "Редактирование списка пользовательских переменных".
Выберите запрет на добавление и удаление элементов. Расположите компонент на каждой из вкладок соответствующей группы товаров. Отобразите остатки и заказанные товары на разных вкладках. Используйте компонент "Отобразить список пользовательских переменных".
Информация по заказанным товарам должна сохраняться во внешнем хранилище "Заказанные товары" и содержать следующие данные:
- id экземпляра процесса заказа канцтоваров
- название товара
- количество.
Информация о принадлежности к группе товаров в "Заказанные товары" - отсутствует.
Заказанными товарами являются только те товары, у которых значение в поле "Количество" больше "0".
Замечание. Т.к. состав данных "Склад" отличается от "Заказанные товары", то используйте два пользовательских типа "Товар" и "Заказанный товар" с соответствующим набором полей.
Замечание. Во избежание проблем с форматом запрещается самостоятельно добавлять во внешнее хранилище данные, используя редакторы файлов (MS Excel и подобные); в случае необходимости используйте для этого задачу бота с обработчиком "Внешнее хранилище данных", действие - insert.
На следующем рисунке изображена одна из возможных схем процесса заказа канцтоваров.
Поле "Количество" на форме выбора товаров для заказа должно быть по умолчанию равным 0, поэтому после считывания товаров со склада выполните обнуление. Оформите это в виде подпроцесса, т.к. обнуление необходимо выполнить для всех групп товаров. Используйте подпроцесс для добавления группы заказанных товаров во внешнее хранилище.
Рассмотрим подробнее подпроцесс, выполняющий обновление остатков товара на складе.
В качестве входных данных в подпроцесс должен быть передан список скомплектованных для заказа товаров.
Используйте обработчик "Агрегатная функция над списком" - COUNT для определения количества заказанных товаров.
Далее организуйте цикл по товарам списка.
Заведите целочисленную переменную "индекс", определяющую индекс текущего обрабатываемого товара из списка заказанных товаров. Используйте для данной переменной значение по умолчанию "1".
В цикле выполняются следующие действия:
- с помощью обработчика "Получить элемент списка" по индексу выбирается очередной заказанный товар (Рис.2.105)
- вызывается внутренний подпроцесс-транзакция, в котором выполняется обновление остатков на складе
- увеличивается индекс для выбора следующего товара.
Условием выхода из цикла является обход всех заказанных товаров.
Обновление остатков товара выполняется в несколько шагов:
- считывание текущего количества товара из внешнего хранилища ("Чтение") в переменную
- вычитание количества заказанного товара из полученного текущего количества ("Модификация")
- обновление остатка во внешнем хранилище ("Запись").
Т.к. процесс обновления состоит из трёх операций - "чтение", "модификация", "запись", то необходимо гарантировать чтобы во время выполнения этих действий не было изменено текущее количество обрабатываемого товара, пока не выполнится запись нового значения.
Это достигается с помощью выноса действий в отдельную композицию со свойством "Транзакционный=Да", что обеспечивает блокировку задач бота, используемого внутри композиции (в нашем случае это бот работы с внешним хранилищем), пока все точки управления не выйдут из нее.
Для считывания текущего количества товара из внешнего хранилища используется задача бота с обработчиком "Внешнее хранилище данных", действие - SELECT.
Замечание. В качестве результата всегда возвращает список, даже если был получен только один элемент.
Параметр "Входной файл" определяет Excel-файл, выступающий в качестве внешнего хранилища. Выберите ранее созданный источник данных "PRODUCTS_XLS".
Под параметром "Выполняемое действие" расположено текстовое поле, предназначенное для ввода условия. Если его не задать, то SELECT выберет из внешнего хранилища все заявки.
Синтаксис условий следующий:
[имя атрибута] оператор значение
- [имя атрибута] - это поле пользовательской переменной, заданной в параметре "Переменная" секции "Атрибут"; квадратные скобки у имени атрибута обязательны
- оператор - поддерживаются операторы < , > , <= , >= , != , == , like
- значение - может быть использовано и константное значение, например проверка статуса на равенство значению 'Не обработана', так и параметр, используемый во входных параметрах задачи; если используется параметр, то перед ним ставят символ @, например @id.
Кроме того, поддерживаются составные условия с применением скобок и логических операторов AND, OR.
Например, выполнить SELECT для заявок со статусом 'Не обработана', у которых 'Количество мест' больше или равно 10
[Статус] == 'Не обработана' AND [Количество мест] >= 10
Замечание. Важно соблюдать данный формат, включая наличие одинарных пробелов между операторами и атрибутами, значениями. Иначе условие не выполнится.
В данной задаче требуется получить со склада товары по их названию, поэтому используйте следующее условие:
[Название] == @название
где [Название] - это атрибут пользовательского типа "Заказанный товар", @название - это входной параметр задачи.
С помощью агрегатной функции COUNT определяется количество элементов в полученном списке после выполнения SELECT.
Если count больше 0, т.е. на складе есть товар с таким названием, то выполняется выборка товара из списка.
Расчет нового значения поля "Количество" выполняется с помощью обработчика "Выполнить формулу".
Бот обновляет информацию по товару на складе.
Для правильной работы внутреннего подпроцесса-транзакции, на сервере должны быть выполнены следующие действия:
- для бота "Бот работы с внешним хранилищем" должно быть установлено свойство "Транзакционный", "Таймаут привязки, минут - 1" (см. "Замечание 1" под списком и Рис.2.116)
- "Бот работы с внешним хранилищем" должен обладать полномочиями "Читать" и "Читать экземпляры" БП "Заказ канцтоваров", а также БП "Обновить остатки на складе" (Рис.2.117).
Замечание 1: Свойство "транзакционный" поддерживается, начиная с версии 4.4. Если у вас более ранняя версия - пропустите установку этого свойства.
Требования к представлению результатов занятия
В результате выполнения лабораторной работы должны быть представлены преподавателю:
- отчет
- внешнее хранилище в виде Excel-листов
- файл с данными archive.datafile (как получить файл данных), содержащий разработанные на занятии бизнес-процессы
- бот для работ с внешним хранилищем.
В отчете должны содержаться следующие выходные данные:
1) Скриншоты основных действий, совершенных на занятии, с пояснениями
2) Скриншоты, содержащие маршруты точек управления для экземпляров бизнес-процессов, доведенных до завершения
3) Описание возникших при выполнении задания проблем и найденных путей их решения (не обязательно, только если возникли проблемы при выполнении задания).
Контрольные вопросы
- Какие действия с внешним хранилищем можно выполнять с помощью обработчика "Внешнее хранилище данных" ?
- Почему работа с внешним хранилищем данных построена с помощью задач бота, а не задач сценариев? Объясните назначение опции бота - "Последовательное выполнение".
- Что такое внутренний подпроцесс-транзакция, в каком случае он используется?
Ссылки
- Документация Runa WFE [официальный сайт проекта]. URL: https://runawfe.ruДокументация