Перейти к содержанию

Загрузка организационной структуры

В этой инструкции описано как загружать организационную структуру и сотрудников компании при использовании VK People Hub.

Вот так выглядит пример готовой оргструктуры внутри портала.

Пример готовой оргструктуры внутри портала

Рисунок. Вид настроенной оргструктуры внутри портала.

Ниже указаны необходимые действия и условия, при выполнении которых пользователи вашей организации увидят в портале VK People Hub похожую оргструктуру и смогут ею успешно пользоваться.

Предварительные шаги по настройке оргструктуры

Перед интеграцией оргструктуры нужно убедиться, что выполнены предварительные действия:

  1. Клиент оргструктуры указан в файле CLIENT_PROCESSING_ORDER_JSON_PATH.
  2. Файлы с пользователями и организационной структурой лежат в папке с названием клиента оргструктуры по пути INTEGRATION_FILES_DIR.
  3. В Keycloak созданы:
  • учетная запись администратора (для переменных KEYCLOAK_API_{...}).
  • учетные записи сотрудников с атрибутом EmpID. Значения этого атрибута должны соответствовать значениям из файла пользователей.
  1. Все обязательные переменные окружения выставлены корректно.

Пример json-файла клиента оргструктуры

Расположение файлов с пользователями и оргструктурой

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

Обязательные json-файлы для оргструктуры

Для успешного отображения оргструктуры нужны правильно заполненные json-файлы сотрудников и организации. Например, файл с сотрудниками можно назвать employees.json, файл организации — organizations.json. Примеры файлов доступны для загрузки ниже.

Пример json-файла с пользователями:

[
     {
        "keycloak_attribute_id": "100",
        "patronymic": "Александрович",
        "position": "Руководитель",
        "is_active": true,
        "organization_id": "57722ae4-ca66-4602-bfe0-7d7d5fe3de48"
    },
    {
        "keycloak_attribute_id": "101",
        "patronymic": "Васильевна",
        "position": "Заместитель руководителя",
        "is_active": true,
        "organization_id": "2d355c26-c811-4f06-9e06-e644072a8135"
    },
]
Параметр organization_id должен соответствовать параметру id подразделения, к которому относится пользователь. Данный параметр находится в json-файле организации.

Пример json-файла организации:

[
    {
        "id": "57722ae4-ca66-4602-bfe0-7d7d5fe3de48",
        "parent_id": null,
        "name": "Главная организация",
        "leader_keycloak_attribute_id": "100"
    },
    {
        "id": "2d355c26-c811-4f06-9e06-e644072a8135",
        "parent_id": "57722ae4-ca66-4602-bfe0-7d7d5fe3de48",
        "name": "Организация заместителей",
        "leader_keycloak_attribute_id": "101"
    }
]  
Для родительской организации внутри оргструктуры указывается parent_id: null. Для остальных подразделений компании parent_id указывает на вышестоящий по иерархии отдел компании.

Параметр leader_keycloak_attribute_id указывает на идентификатор пользователя-руководителя подразделения. Этот параметр должен соответствовать параметру keycloak_attribute_id этого пользователя из json-файла со списком сотрудников.

Параметр id организации может быть взят при выгрузке оргструктуры из другой системы при переходе с нее в VK People Hub. В таком случае нужно проверить, чтобы все id внутри всех отделов организации внутри оргструктуры были уникальными. Это критически важный момент при настройке оргструктуры.

Если же оргструктура организации не будет выгружена из какого-либо другого сервиса при переходе в VK People Hub, а должна быть создана с нуля — id каждого отдела внутри организации могут быть созданы по модели UUID. Рекомендуемый стандарт данных — UUID4. Единственное критически важное условие — эти id должны быть уникальными и не должны повторяться.

Пример json-файла пользователей

Пример json-файла организации

Модели данных

Для пользователей:

Параметр Описание Обязательный
keycloak_attribute_id Идентификатор пользователя, указанный в пользовательском атрибуте Keycloak Да
patronymic Отчество Нет
position Должность Нет
is_active Признак активности пользователя Да
organization_id Идентификатор организации, в которой состоит пользователь Да

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

Для организаций:

Параметр Описание Обязательный
id Идентификатор организации Да
parent_id Идентификатор родительской организации Да
name Название организации Да
leader_keycloak_attribute_id Идентификатор руководителя организации (по пользовательскому атрибуту Keycloak) Нет

Загрузка и обновление оргструктуры с помощью Apache Airflow

После того как json-файлы сотрудников и организации настроены и помещены в нужные директории, можно перейти к загрузке оргструктуры.

Чтобы загрузить оргструктуру, войдите в сервис Apache Airflow. Для работы в этом сервисе у вас должны быть соответствующие права администратора.

Админпанель Apache Airflow

Рисунок. Админпанель Apache Airflow с выделенной кнопкой запуска обновления оргструктуры.

В административной панели Apache Airflow отображаются предварительно загруженные клиенты оргструктуры организации. Клиент — связка json-файлов сотрудников и организации.

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

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

При успешном обновлении оргструктуры число внутри зеленого круга в поле Runs будет соответствовать числу внутри зеленого круга в поле Recent Tasks.

Чтобы обновить оргструктуру вне автоматического расписания обновлений, нажмите на кнопку запуска. Она выделена на рисунке выше.