Процесс заявки на закупку оборудования ======================================= .. _sample_request_demo: .. contents:: :depth: 3 .. note:: Для создания процесса используйте следующие учетные данные: * Заместитель генерального директора по цифровизации — Валентина Вассерман (**valentina.wasserman**) * Начальник отдела цифровизации бизнес-процессов — Георгий Цезарев (**georgy.tsezarev**) * Специалист отдела цифровизации бизнес-процессов — Ирина Васнецова (**irina.vasnetsova**) Данная статья знакомит пользователей с основами Citeck на примере создания бизнес-процесса **«Заявка на закупку оборудования»**. **Заявка на оборудование** – заявка, которая необходима для закупки оборудования для операционной деятельности сотрудников. Например, для подключения монитора к компьютеру сотруднику необходим специальный кабель, которого на данный момент нет в наличии. Обычно сотрудник обращается к своему руководителю с просьбой, чтобы для него (сотрудника) необходимое оборудование было приобретено, после успешного согласования с руководителем и в соответствии с внутренними правилами и распорядками происходит закупка. Согласующий так же может отказать в покупке. Далее мы пошагово реализуем описанный сценарий с использованием инструментов Citeck. Для закупки оборудования нам потребуется следующая информация: - **Инициатор** – сотрудник, которому необходимо оборудование; - **Согласующий** – сотрудник, ответственный за согласование приобретаемого оборудования; - **Название** – наименование приобретаемого оборудования; - **Стоимость** – стоимость оборудования. До создания самого бизнес-процесса необходимо создать ряд :ref:`артефактов` в следующем порядке: - :ref:`тип данных`; - :ref:`журнал`; - :ref:`форма ` ; - :ref:`процесс`. .. note:: Система не сможет сохранить тип данных и бизнес-процесс с названием, которое использовалось ранее. Добавьте числовой идентификатор (например, _1, _2 и т.д.) или используйте собственное название. Тип данных ---------- **Тип данных** - основной источник метаданных работы с объектом. Для создания типа данных в меню перейдите в **«Инструменты – Типы данных»**: .. image:: _static/equipment_request_demo/type_new_1.png :width: 600 :align: center нажмите **+ - Создать новый тип**: .. image:: _static/equipment_request_demo/type_new_2.png :width: 600 :align: center Основное ~~~~~~~~ На вкладке расположены основные данные по типу данных (объекту): .. list-table:: :widths: 10 20 30 :align: center :class: tight-table * - **1** - id - equipment-request * - **2** - Имя - Заявка на покупку оборудования * - **3** - Родитель - Кейс * - **4** - Форма - Оставить по умолчанию (система автоматически сгенерирует форму по тем атрибутам, которые мы укажем далее, но автоматически сгенерированные формы нельзя редактировать) * - **5** - Журнал - Оставить по умолчанию (система автоматически сгенерирует журнал по тем атрибутам, которые мы укажем далее, но автоматически сгенерированные журналы нельзя редактировать) Конечная настройка вкладки: .. image:: _static/equipment_request_demo/tab_1.png :width: 600 :align: center Атрибуты ~~~~~~~~ .. _sample_request_attributes_demo: На вкладке находится информация о свойствах, которые будут использованы для взаимодействия с объектом. Для создания заявки нам потребуется следующая информация: - что нужно купить, - сколько стоит, - кто запрашивает - кто согласует закупку. И, соответственно, нам потребуются следующие атрибуты (свойства объекта): .. list-table:: :widths: 10 20 30 :header-rows: 1 :align: center :class: tight-table * - Id (1) - Имя (2) - Тип (3) * - name - Название оборудования - Text * - price - Стоимость - Number * - requester - Инициатор - Person * - approver - Согласующий - Person Конечная настройка вкладки: .. image:: _static/equipment_request_demo/tab_2.png :width: 600 :align: center Роли ~~~~ На вкладке описываются роли, которые участвуют в работе с объектом, в нашем случае, участвуют в работе с заявкой. Смотря на атрибуты, несложно догадаться, что нам потребуется на первом этапе две роли: **Инициатор** и **Согласующий**. .. note:: **Атрибут** выбирается из указанных ранее атрибутов. По клику на поле выпадает список указанных атрибутов на вкладке «Атрибуты». .. list-table:: :widths: 10 20 30 :header-rows: 1 :align: center :class: tight-table * - Id (1) - Имя (2) - Атрибут (3) * - requestor - Инициатор - Инициатор * - approver - Согласующий - Согласующий Конечная настройка вкладки: .. image:: _static/equipment_request_demo/tab_3.png :width: 600 :align: center Статусы ~~~~~~~ На вкладке описываются статусы, по которым будет перемещаться объект (наша заявка) по бизнес-процессу. Рассмотрим самый простой и успешный вариант процесса. Инициатор создаёт заявку (статус **«Заявка создана»**), далее отправляет её на согласование согласующему (статус **«На согласовании»**), после Согласующий одобряет заявку (статус **«Одобрено»/«Согласовано»**). .. list-table:: :widths: 10 20 :header-rows: 1 :align: center :class: tight-table * - Id (1) - Имя (2) * - request-created - Заявка создана * - approving - На согласовании * - approved - Согласовано * - rejected - Отказано Конечная настройка вкладки: .. image:: _static/equipment_request_demo/tab_4.png :width: 600 :align: center Для сохранения нажмите **«Создать» (Сохранить)**. На этом создание базового варианта типа данных для заявки закончено. Промежуточный итог ~~~~~~~~~~~~~~~~~~~~~ - указали базовую информацию о типе данных: id, название типа данных, - форму и журнал система сгенерировала автоматически на основании введенных данных; - описали свойства заявки, с которыми дальше будем взаимодействовать; - добавили роли, которые будут участвовать в работе с заявкой; - обозначили статусы, по которым будет перемещаться заявка. Журнал и Форма ------------------ Автоматически сгенерированный журнал будет отражен в отдельном разделе меню **«Мои журналы»**. Нажав на этот пункт меню, откроется новая Citeck вкладка с автоматически сгенерированным журналом. В журнале присутствуют колонки, которые относятся непосредственно к атрибутам, которые были указаны ранее в типе данных: .. image:: _static/equipment_request_demo/Journal_form_1.png :width: 700 :align: center Автоматически сгенерированная форма доступна по кнопке **+**: .. image:: _static/equipment_request_demo/Journal_form_2.png :width: 400 :align: center Создать заявку в журнале пока невозможно, так как для объекта еще не задано описание процесса, по которому будет проходить его жизненный цикл. Бизнес-процесс ---------------- .. _bp_sample_demo: Перейдите левом меню в пункт **«Моделирование – Редактор бизнес-процессов»** .. image:: _static/equipment_request_demo/bp_new.png :width: 600 :align: center Для создания процесса нажмите **«+ - Создать BPMN модель»**: .. image:: _static/equipment_request_demo/bp_new_1.png :width: 600 :align: center В открывшемся модальном окне заполните поля: .. list-table:: :widths: 10 20 30 :align: center :class: tight-table * - **1** - Идентификатор - equipment-request * - **2** - Имя - Заявка на покупку оборудования * - **3** - Тип данных - equipment-request * - **4** - Раздел - Тестовые процессы * - **5** - Включен - True. Отметка об активности процесса. * - **6** - Автоматический старт процесса. - True, чтобы старт процесса осуществлялся автоматически. Подробно о :ref:`запуске процесса` Конечная настройка бизнес-процесса: .. image:: _static/equipment_request_demo/bp_new_2.png :width: 600 :align: center .. note:: Обязательно выставите чекбоксы **Включен (4)** и **Автоматический старт процесса (5)** Нажмите **«Сохранить»**. Далее необходимо описать схему процесса в :ref:`редакторе бизнес-процессов`. Для перехода к редактору разверните раздел **«По умолчанию»**, наведите курсор на созданный процесс и нажмите: .. image:: _static/equipment_request_demo/bp_new_3.png :width: 600 :align: center Откроется **конструктор бизнес-процесса**: .. image:: _static/equipment_request_demo/modeller.png :width: 600 :align: center Процесс прохождения заявки опишем следующим образом: **Создать заявку -> Отправить на согласование -> Согласовать/Отклонить заявку** 1. Автоматически на схему добавляется компонент, который отвечает за начало процесса (:ref:`Start event `). **Start event компонент** слушает систему и ждёт, когда в систему постучится запрос на создание нового объекта с нужным нам типом данных. Выделите **Start Event компонент** - рядом с компонентом расположено контекстное меню, с помощью которого в процесс можно добавлять новые элементы, связи между элементами, или редактировать текущий элемент. .. image:: _static/equipment_request_demo/start_event.png :width: 200 :align: center 2. Теперь нужно добавить новый элемент, но какой? Сразу после создания заявки, она должна получить статус **«Заявка создана»** - нажмите на элемент :ref:`Set status` в контекстном меню: .. image:: _static/equipment_request_demo/set_status.png :width: 200 :align: center Справа от области для схемы появляются настройки добавленного компонента, где необходимо указать **имя (1)** и **cтатус (2)**, который будет присвоен объекту на данном этапе. Укажите имя **Статус «Заявка создана»**. В поле **«Статус»** выберите вариант **Заявка создана**. .. image:: _static/equipment_request_demo/set_status_prop.png :width: 300 :align: center 3. Когда заявка создана, нужно проверить всё содержимое заявки, а после проверки отправить на согласование. Для этого необходимо создать задачу для пользователя - в контекстном меню нажмите на компонент **«Task»**: .. image:: _static/equipment_request_demo/User_task_1.png :width: 300 :align: center Но данный компонент не подходит, и необходимо изменить его тип с «Task» на :ref:`User task`. Для этого нажмите на гаечный ключ и выберите вариант **«User task»**: .. image:: _static/equipment_request_demo/User_task_2.png :width: 400 :align: center Далее нужно правильно настроить задачу для пользователя, укажите в форме: - Имя - **На согласование**, - Реципиент - **Инициатор** .. image:: _static/equipment_request_demo/User_task_prop.png :width: 300 :align: center Простая форма к задаче может быть создана автоматически - будут отображены только кнопки, настроенные в **Результате задачи**. .. image:: _static/equipment_request_demo/form_common.png :width: 300 :align: center **Приоритет** по умолчанию заполнен как **Средний**. Далее заполните список **«Результаты задачи»** следующими значениями: - Идентификатор – **ToApprove** - Название – **На согласование** .. image:: _static/equipment_request_demo/form_to_approve_5.png :width: 400 :align: center 4. Задача создана и после отправки на согласование необходимо изменить статус задачи на **«На согласовании»**. Для этого повторяем действия первой смены статуса (пункт 2): - Нажмите в контекстном меню на иконку **Set Status** .. image:: _static/equipment_request_demo/set_status_2.png :width: 400 :align: center - Укажите в поле «Имя» **Статус «На согласовании»**. - В поле «Статус» выберите вариант **На согласовании**. .. image:: _static/equipment_request_demo/set_status_2_prop.png :width: 400 :align: center 5. Далее необходимо создать аналогичную задачу только уже для согласующего: - Добавьте при помощи контекстного меню компонент **Task** .. image:: _static/equipment_request_demo/User_task_3.png :width: 400 :align: center - Измените тип компонента с **Task** на **User Task**: .. image:: _static/equipment_request_demo/User_task_4.png :width: 500 :align: center - Поле **«Имя»** - **На согласовании согласующим**, - Поле **«Реципиенты»** - **Согласующий**. .. image:: _static/equipment_request_demo/User_task_2_prop.png :width: 300 :align: center - **Приоритет** по умолчанию заполнен как **Средний**. - Далее заполните список **«Результаты задачи»** следующими значениями: - Идентификатор – **Approve**, Название – **Согласовать** - Идентификатор – **Reject**, Название – **Отказать** .. image:: _static/equipment_request_demo/request_approve_5.png :width: 400 :align: center 6. После согласования Согласующим задача должна завершиться, но исходов у процесса два – покупка согласована, или в покупке отказано, потому поставим следующий компонентом разветвитель - :ref:`Gateway ` **Gateway компонент** отвечает за разветвление маршрутов и за слияние потоков. Для его добавления необходимо нажать на соответствующую иконку в контекстном меню или на панели слева (но в этом случае придётся самостоятельно проставлять связи их направления): .. image:: _static/equipment_request_demo/gateway_1.png :width: 500 :align: center | .. image:: _static/equipment_request_demo/gateway_2.png :width: 500 :align: center 7. После **Gateway** необходимо поставить 2 компонента смены статуса на **«Согласовано»/ «Отказано»**. Для этого повторяем действия первой смены статуса (пункт 2): - У компонента **Gateway** нажмите в контекстном меню на иконку **Set Status** .. image:: _static/equipment_request_demo/set_status_3.png :width: 500 :align: center - Укажите в поле **«Имя»** **Статус «Согласовано»**. - В поле **«Статус»** выберите вариант **Согласовано**. .. image:: _static/equipment_request_demo/set_status_3_prop.png :width: 300 :align: center - У компонента **Gateway** нажмите в контекстном меню на иконку **Set Status** - Укажите в поле **«Имя»** **Статус «Отказано»**. - В поле **«Статус»** выберите вариант **Отказано**. .. image:: _static/equipment_request_demo/set_status_4_prop.png :width: 300 :align: center 8. Так как из Gateway, потенциально, может быть несколько потоков, то система умеет определять по какому потоку нужно идти при помощи вариантов исхода (исходы настраиваются при помощи кнопок на форме и стрелок, выходящих из компонента Gateway). Для настройки выберите «стрелку» (отдельный компонент **Sequence Flow**, который отвечает не только за визуализацию направления). Для потока **«Согласовано»**: .. image:: _static/equipment_request_demo/Sequence_Flow_1.png :width: 500 :align: center - Укажите имя **Согласовано**. - В поле **«Тип условия»** выберите вариант **Исходящий**. - В появившемся поле **«Исходящий»** выбрать вариант **На согласовании согласующим - Согласовать**. Варианты автоматически генерируются из двух частей: первая – название задачи (поле Имя), вторая – название результатов задач. .. image:: _static/equipment_request_demo/Sequence_Flow_2.png :width: 300 :align: center Для потока **«Отказано»**: .. image:: _static/equipment_request_demo/Sequence_Flow_3.png :width: 500 :align: center - Укажите имя **Отказан**. - В поле **«Тип условия»** выберите вариант **Исходящи**. - В появившемся поле **«Исходящий»** выбрать вариант **На согласовании согласующим - Отказать**. .. image:: _static/equipment_request_demo/Sequence_Flow_4.png :width: 300 :align: center 9. Дальше необходимо добавить компонент, который будет означать, что процесс закончен. Для этого в контекстном меню компонентов **«Статус «Согласовано»** и **«Статус «Отказано»** нужно нажать на иконку :ref:`End event` компонента. .. image:: _static/equipment_request_demo/end_event_1.png :width: 500 :align: center Так же для второго выхода gateway добавим **End Event компонент**. Теперь процесс можно сохранить и опубликовать, нажав: .. image:: _static/equipment_request_demo/publish.png :width: 600 :align: center Проверка процесса ------------------- После того, как создан Тип данных, Журнал, Форма и Бизнес-процесс, можно проверить, как процесс работает. В левом меню в разделе **«Мои журналы»** выберите журнал **«Заявка на покупку оборудования»**. Откроется журнал, где нет записей. Для создания нового объекта (заявки на покупку оборудования). нажмите на **«+»**: .. image:: _static/equipment_request_demo/new_request_1.png :width: 600 :align: center Заполните поля соответствующими данными. Например: - Название оборудование – **HDMI кабель** - Стоимость - **500** - Инициатор – **выбрать себя из оргструктуры** - Согласующий – **выбрать согласующего сотрудника из оргструктуры** И нажмите **«Сохранить»**. .. image:: _static/equipment_request_demo/new_request_2.png :width: 500 :align: center Создана первая заявка в статусе **«Заявка создана»**, и далее проведем ее по нашему бизнес-процессу. В виджете **«Мои задачи»** нажмите кнопку **«На согласование».** .. image:: _static/equipment_request_demo/new_request_3.png :width: 600 :align: center После выполнения задачи заявка перейдёт в статус **«На согласовании»** и на Согласующего будет назначена задача - **Согласование**. Зайдите под сотрудником, которого вы выбрали согласующим. В левом меню перейдите в **Активные задачи**, откройте задачу, нажав: .. image:: _static/equipment_request_demo/new_request_4.png :width: 800 :align: center Для согласования в виджете **«Мои задачи»** нажмите кнопку **«Согласовать»**: .. image:: _static/equipment_request_demo/new_request_5.png :width: 600 :align: center После выполнения задачи заявка перейдёт в статус **«Согласовано»**. .. image:: _static/equipment_request_demo/new_request_6.png :width: 600 :align: center Поздравляю, первая заявка прошла полный процесс, который был только что создан Вами.