Вот есть ресурсы, которые расшарены между сессиями (операторы составляют пакеты задач, которые станут расписанием для ресурсов). У каждого ресурса есть свой приоритет типа статический, меняется только применением самого ресурса где-то. То есть, если ресурс "занят" в 5 процедурах за день, то его статический приоритет равен 5, условно. Есть приоритет динамический, зависит от текущего набора задач во всех сессиях, где этот ресурс потенциально может быть использован. Ядро умеет всё это дело динамически крутить-вертеть и компоновать так, чтобы операторы получали непротиворечивые данные, чтобы ресурсы не были забронированы одновременно на несколько задач.
И вот есть закавыка — оператор в определенных условиях может начать бронирование с определенного ресурса. То есть, сначала выбран ресурс, а потом уже накидываются задачи. И бизнес пожелал, чтобы при постановке задачи, при распределении исполнителей на роль в первую очередь был выбран тот ресурс, с которого оператор начал сессию бронирования. Казалось бы, чо там — приоритеты же. Но оба приоритета блять обслуживаются централизованно, ядром. А тут в сессии надо просто изначально "предпочесть" ресурс! Были мысли и про модификаторы и про сессионный процессинг. Полный пиздец, очень накладно.
Тут на помощь приходит гуй! В интерфейсе оператор может по своему усмотрению сменить исполнителя в роли, на любого из доступных. Это норм, это user action, всё зашибись. Ну так и давайте типа оператор "кликнул" первым делом на наш этот ресурс, чо там :)
Всё работает, все довольны, зашибись. Только вот смотрю на это с т.з. алгоритмистики и data flow. Взяли задачу, выдрали нужные "роли", собрали ресурсы, посчитали занятость, отобрали подходящих, отсортировали по приоритетам, построили расписание, выдали сессии все расчеты, выгрузили в гуй. И тут же блять "кликаем", повторили весь цикл заново :)
Атас. Не делайте так.
PS. Это вопрос проектирования и архитектуры, есичо. Не предусмотрели в начале.