Автоматическое создание дочерних запросов


#1

Добрый день!
Хочу автоматизировать создание дочерних запросов по отношению к заявке создаваемой через пользовательский портал. Пример такого составного запроса: пользователь через портал находит нужную подкатегорию услуги и создает заявку типа “подготовка рабочего места”, при этом указывает кому (если не себе), где и когда; далее необходимо, чтобы создалось несколько дочерних запросов типа “создание учетных записей”, “подключение телефона”, “подготовка компьютера” и т.п.
Сейчас этим занимается специальный человек, т.е. создает подзапросы и назначает разным инженерам, чтобы они параллельно начали работать над заявкой.
На данный момент нет возможности даже создать дочерний запрос из формы редактирования текущего, только связать с существующим.
Подскажите пожалуйста куда копать? Как приблизительно должна выглядеть схема реализации?


#2

Добрый день.

Я подобное решение уже реализовывал. Из опыта могу сказать, что нужно очень хорошо продумать сам процесс, а именно:

  1. В какой момент вы хотите создавать дочерние запросы (только при создании или при изменении статуса, например согласование).
  2. Список задач всегда один и тот же или процесс может меняться в зависимости от введенных пользователем данных (шаблонизатор запросов).
  3. Запрос использует стандартные поля формы на портале или Вы будете использовать кастомные поля . Нужно продумать и реализовать инструмент мапинга полей из шаблона и родительского тикета, а возможно и других объектов iTop

Это так на вскидку.

Из проблем с которыми столкнулся:

  1. Чтобы не тормозить работу интерфейса портала пользователя, данный процесс должен быть асинхронным, т.е. необходимо использование какого то механизма очередей, иначе все это будет выполняться в контексте пользователя и он будет ждать отклика от системы по несколько минут.
  2. Шаблоны задач реализовать не сложно, но для каждого процесса нужно хранить историю какая задача уже выполнялась, а какая нет, т.к. iTop плодит очень много событий связанных с изменениями тикетов, можно наплодить кучу дублируемых задач.
  3. Если дочерние задачи имеют кастомные поля, то их заполнение огромный геморрой (простите за мой французский), особенно, если какое-то из них имеет атрибут обязательно к заполнению. Я нашел только костыльное решение в виде снятия и установки атрибута в момент заполнения полей.

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

Собственно класс для реализации механизма в iTop нужен следующий iApplicationObjectExtension, остальные классы вы для себя сами реализуете.

Вот пример моей реализации мапинга полей:


#3

Если есть время подождать, то когда я доделаю свое решение - поделюсь им с сообществом.


#4

Оу… Спасибо за наводку!
Да, оказывается процесс мы правда не продумали, очень дельные замечания.
Время конечно есть, с моим скромным опытом кастомизации iTop я точно не реализую это быстрее…
Даже ума не приложу, как процесс можно сделать асинхронным :thinking:
Если поделитесь с сообществом, то это будет просто круто :+1:


#5

Всем привет, коллеги, а не хотите посмотреть в сторону создания не дочерних запросов, а нарядов на работу? Потому что описываемый процесс по itil должен как раз идти через work order или change и если создавать модуль для сообщества, то имхо нужно делать как положено :slight_smile:


#6

Привет, @n.vedin!
Пока @BorisFastovetskiy доделывает своё решение, посмотри на то, что предлагают сами разработчики iTop: https://www.itophub.io/wiki/page?id=extensions%3Aitop-stencils.


#7

Спасибо!
Действительно стоит посмотреть :+1:
Попробую поставить этот модуль и осмотреться что да как.