Файл: Проектирование реализации операций бизнес-процесса «Управление документооборотом».pdf
Добавлен: 03.07.2023
Просмотров: 91
Скачиваний: 3
СОДЕРЖАНИЕ
1.1 Выбор комплекса задач автоматизации
1.2 Характеристика существующих бизнес-процессов
1.3 Характеристика документооборота, возникающего при решении задачи
1.4 Обоснование проектных решений по информационному обеспечению
1.5. Обоснование проектных решений по программному обеспечению
2.1. Разработка моделей в среде Platform1. Информационная модель и её описание
2.2 Характеристика нормативно-справочной, входной и оперативной информации
2.3 Характеристика результатной информации
2.4 Общие положения (дерево функций и сценарий диалога)
2.5.Характеристика базы данных
2.6. Структурная схема пакета (дерево вызова программных модулей)
2.7. Описание программных модулей.
Рисунок 74. Программный модуль
- Сохранить. Проверить настройки в реестре при добавлении книг читателям.
В данной части будет описана моделирование и настройка процесса выдачи книг в библиотеке.
- Найти свою сущность читателей. Перейти на вкладку «Процессы». Нажать (Рисунок 75).
Рисунок 75. Программный модуль
- В открывшемся окне внести данные:
Код: префикс prc + название biblio + индекс (свой номер): prcbiblio14.
Имя: Процесс библиотека + свой номер: Процесс библиотека 14.
Нажать сохранить (Рисунок 76).
Рисунок 76. Программный модуль
- Нажать на карандаш в столбце «Модель» (Рисунок 77).
Рисунок 77. Программный модуль
- Откроется среда разработки бизнес процесса (Рисунок 78). Внизу в настройках внести:
Идентификатор процесса (1) (как вводили ранее в коде – prcbiblio14).
Имя (2): Перейти к выдаче книг.
Рисунок 78. Программный модуль
- Вытащить «Безусловный запуск». Для этого найти его в событиях запуска и перетащить в поле моделирования (Рисунок 80).
Рисунок 80. Программный модуль
- Вытащить «Пользовательскую задачу». Для этого найти его в задачах и перетащить в поле моделирования (Рисунок 81).
Рисунок 81. Программный модуль
- Вытащить «Завершение». Для этого щелкнуть на задачу (1). Выбрать завершение (2) (Рисунок 82).
Рисунок 82. Программный модуль
- Связать начало с задачей. Для этого щелкнуть на начало (1). Выбрать переход (2). Перетащить переход (3) на задачу (4) (она при этом окрасится зеленым) (Рисунок 66).
Рисунок 83. Программный модуль
- Щелкнув по задаче необходимо внизу заполнить ее реквизиты (Рисунок 84).
Id: ut14 (номер указать свой).
Имя: Выдать книгу.
Рисунок 84. Программный модуль
Назначение (Рисунок 85): в открывшемся окне «Присваивание» в поле «Пользователь» найти себя (ваша учетная запись). Сохранить.
Рисунок 85. Программный модуль
- Сохранить, нажав , получившийся процесс (Рисунок 86).
Рисунок 87. Программный модуль
- Внести реквизиты для потока на завершение (Рисунок 88).
Рисунок 88. Программный модуль
- Сохранить процесс: «Сохранить и закрыть редактор» (Рисунок 89).
Рисунок 89. Программный модуль
- Далее процесс необходимо опубликовать (развернуть), чтобы его можно было использовать в платформе. Для этого в строке своего процесса (1) нажать стрелку (2) (Рисунок 90). И подтвердить свое действие.
Рисунок 90. Программный модуль
- Чтобы была возможность запускать процесс необходимо создать скрипт. Для этого в навигаторе перейти в «Скрипты». Нажать создать (Рисунок 91).
Рисунок 91. Программный модуль
- Ввести данные (Рисунок 92):
Код: префикс AAA (латиница) + имя startPrc + индекс 14 (свой номер): AAAstartPrc014
Имя: Запустить процесс014.
Рисунок 92. Программный модуль
- Ввести сам скрипт (проверить название своего процесса, он выделен) (Рисунок 93):
if (workflowDataProvider.getProcessesForObject(dataObjectController.instance).findAll{it.completed == null}.size() >= 1) {
messages.warn('Вход читателя в библиотеку был зарегистрирован ранее')
return
}
def procDef = workflowDataProvider.getProcessDefinitionByCodeActual('prcbiblio014')
workflowDataProvider.startProcess(procDef, dataObjectController.instance)
messages.info('Зарегистрирован вход читателя в библиотеку')
Рисунок 93. Программный модуль
Сохранить.
- Перезайти в систему. Далее необходимо перейти в построитель сущностей в форму. Нажать кнопку (Рисунок 94).
Рисунок 94. Программный модуль
- В открывшемся окне внести имя «Читатель вошел в библиотеку» и нажать карандаш (Рисунок 95).
Рисунок 95. Программный модуль
- В поле «Доступность» вместо true вставить выражение:
workflowDataProvider.getProcessesForObject(dataObjectController.instance).stream().filter(s->empty s.completed).toList().size() < 1
- Нажать на галочку слева от данного поля, чтобы сохранить. Затем нажать . Сохранить сущность. Подтвердить сохранение.
- Зайти в задание «Выдать книги» проверить, что после нажатия на данную кнопку она пропадает с формы, а в «Задания» (в навигаторе) появляется задача «Выдать книги».
- Далее необходимо создать еще один скрипт на выдачу книг (Рисунок 96) [29].
Индексы – свои номера.
Скрипт:
//обращаемся к контексту данных текущего процесса
def dataObject = currentProcessController.dataObject
//забираем спеку "aReg" как объект в переменную
def uReg = dataObject.fields.aReg.value
//бежим по всем строкам спеки (по сути это строки из класса "clRegistr", привязанные к спеке)
uReg.each { rg ->
//т.к. напрямую изменить значения строк нельзя, то забираем строку как объект в переменную
def elReg = externalDataSource.getObject('tregistr014', rg.id)
//заполняем дату выдачи книги
elReg.fields.aIssuiDate.value = elUtils.now()
//рассчитываем и заполняем дату возврата
elReg.fields.aReturnDate.value = elUtils.dateAdd(elReg.fields.aIssuiDate.value,5,14)
//очищаем дату сдачи книги
elReg.fields.aFactDate.value = null
//сохраняем изменения по строке
externalDataSource.updateObject(elReg)
}
Необходимо проверить выделенные название атрибутов с созданными вами.
Сохранить.
Рисунок 96. Программный модуль
- Далее необходимо открыть модель процесса. Вытащить задачу «Выполнить скрипт». Поток на выход перепривязать (перетащить) к скрипту. Нарисовать поток от задачи «Выдать книгу» к скрипту. Задать данному потоку реквизиты (Рисунок 97).
Рисунок 97. Программный модуль
- Щелкнуть на задачу скрипта. Внести для нее реквизиты, имя – «Регистрация выдачи книг» (Рисунок 98).
Рисунок 98. Программный модуль
- Щелкнуть на поле «Скрипт». Найти свой скрипт, созданный ранее, «Выдача книг 14». Внести выражение (проверить название скрипта) (Рисунок 99):
integrationsDataProvider.runSavedScript("AAA_BiblioReg014",null)
Рисунок 99. Программный модуль
- Сохранить и закрыть редактор.
- Развернуть процесс.
- Проверить введенные изменения. Запустить процесс, зайдя в читателя.
- Далее необходимо создать еще один скрипт (Рисунок 100). Заполнить его реквизиты:
Индексы – свои номера.
Скрипт:
//обращаемся к контексту данных текущего процесса
def dataObject = currentProcessController.dataObject
//забираем спеку "aReg" как объект в переменную
def uReg = dataObject.fields.aReg.value
//создаем пустой локальный список строк спеки
def listRg = []
messages.info('start')
//бежим по всем строкам спеки (по сути это строки из класса "tregistr014", привязанные к спеке)
uReg.each { rg ->
//т.к. напрямую изменить значения строк спеки нельзя, то забираем строку как объект в переменную
def elReg = externalDataSource.getObject('tregistr014', rg.id)
//заполняем дату сдачи книги
elReg.fields.aFactDate.value = elUtils.now()
//сохраняем изменения по строке
externalDataSource.updateObject(elReg)
//меняем статус по строке
//statusesDataProvider.setObjectStatus('tregistr014', rg.id, '14')
//наполняем локальный список строк спеки
listRg.add(rg)
}
listRg.each { rg ->
//удаляем связь
uReg.remove(rg)
}
//фиксируем изменения
externalDataSource.updateObject(dataObject)
Необходимо проверить выделенные название атрибутов с созданными вами.
Сохранить.
Рисунок 100. Программный модуль
- Далее необходимо перейти в модель процесса. Вытащить задачу «Пользовательская задача», заполнить ее реквизиты (используя свой номер) (Рисунок 101). Назначить исполнителем себя (поле «Назначение») [30].
Рисунок 101. Программный модуль
- Переместить поток от начала с «Выдать книги» к данной задаче.
- Вытащить задачу «Выполнить скрипт». Заполнить ее реквизиты, Название – «Регистрация сдачи книг» (Рисунок 102).
Рисунок 102. Программный модуль
- Щелкнуть на поле «Скрипт». Найти свой скрипт, созданный ранее, «Сдача книги 014». Внести выражение (проверить название скрипта):
integrationsDataProvider.runSavedScript("AAA_BiblioOver014",null)
Необходимо проверить выделенное название скрипта, созданного ранее.
Сохранить.
- Построить поток управления от задачи «Сдать книги» к задаче «Регистрация сдачи книги». Указать его реквизиты (Рисунок 103).
Рисунок 103. Программный модуль
- Построить поток управления от задачи «Регистрация сдачи книги» к задаче «Выдать книги».
- Получившийся процесс (Рисунок 104). Сохранить и закрыть редактор.
Рисунок 104. Программный модуль
- Развернуть процесс.
- Проверить введенные изменения. Запустить процесс, зайдя в читателя – нажать кнопку «Читатель вошел в библиотеку». Провести процесс до конца.
- Далее перейти в среду разработки бизнес-процесса. Построить поток управления от «Сдать книги» к «Выдать книги». Задать его реквизиты, имя – «Перейти к выдаче книг» (Рисунок 105).
Рисунок 105. Программный модуль
- Сохранить. Развернуть.
- Проверить введенные настройки, т.е. запустить процесс заново – выдать книги и сдать книги. Теперь есть 2 кнопки рядом: «Сдать книги» и «Перейти к выдаче книг».
- Перейти в среду разработки бизнес-процесса. Щелкнуть на поток «Сдать книги». поставить галку «Поток по умолчанию» (Рисунок 106).
Рисунок 106. Программный модуль
- Сохранить. Развернуть.
- Проверить введенные настройки. Теперь кнопка «Сдать книги» – оранжевая, а «Перейти к выдаче книг» осталась голубой.
- Перейти в среду разработки бизнес-процесса. Теперь необходимо добавить ветвление, которое позволит читателя без книг отправлять сразу на выдачу книг, а читателю с книгами предлагать сдать взятые книги. Для этого необходимо добавить логический шлюз «Уникальный шлюз». Заполнить его реквизиты (Рисунок 107).
Рисунок 107. Программный модуль
- Достроить потоки управления согласно схеме (Рисунок 108).
Рисунок 108. Программный модуль
- На потоке, идущем к «Выдать книги» необходимо задать условие. Для этого в поле состояние потока внести данное выражение (Рисунок 109):
${currentProcessController.dataObject.fields.aReg.value.size() < 1}
Рисунок 109. Программный модуль
- Поток, идущий к «Сдать книги», сделать потоком по умолчанию.
- Сохранить. Развернуть.
- Проверить введенные настройки. Прогнать процесс от начала до конца (выдать книги и сдать книги).