В BPM-системах ELMA3 и ELMA4 есть встроенный алгоритм поиска свободного времени в нескольких календарях для создания события и проверки событий на пересечения (подробнее).
Но использовать этот алгоритм в бизнес-процессах без создания дополнительных сценариев не получится. Кроме того, существенным недостатком алгоритма является то, что он не учитывает рабочее время.
К нам обратился заказчик с просьбой доработать этот функционал.
Цель кейса: разработка механизма автопланирования задач.
Срок реализации: 2 недели.
Описание задачи.
- На входе мы имеем множество задач, которые могут исполняться как последовательно, так и параллельно. Для каждой задачи указана длительность и группа пользователей, которая может выполнять эту задачу, а также общие календари, загруженность которых также необходимо учитывать при поиске свободного времени (календари помещения и оборудования). Также на вход подается желаемое время начала исполнения первой задачи.
- На выходе мы должны получить план-график выполнения задач с указанием исполнителей с учетом производственного календаря. При этом в качестве производственного календаря может использоваться как глобальный, так и произвольный настраиваемый календарь.
Реализация.
За основу был взят системный алгоритм поиска свободного времени сотрудников, описанный выше. Для учета рабочего и нерабочего времени был разработан комплекс процедур и функций, являющийся расширенным аналогом метода EvalTargetTime (подробнее).
Сам EvalTargetTime возвращает дату и время по истечении срока в соответствии с глобальным производственным календарем, его же расширенный аналог возвращает дату и время с учетом одного или нескольких общих производственных календарей (объект: Календарь объекта (ResourceCalendar)).
Кроме того, были устранены недостатки метода, описанные тут.
Для удобства использования весь разработанный функционал был оформлен в виде пользовательского расширения, которое удобно использовать при моделировании бизнес-процессов.
Эксперименты показали не только безошибочную работу, но и хорошую вычислительную эффективность разработанного алгоритма поиска свободного времени.
Заказать проект и узнать подробности Вы можете через форму обратной связи.