Энтерпрайз, то есть больше компании, не зря называют кровавым. Нет, подводных камней хватает при работе на предприятиях абсолютно любого размера, но чем контора больше, тем и камни эпичнее. Вот и мне один такой попался.
В принципе, система регистрации и ведения заявок от пользователей (в дальнейшем просто "система") не является прерогативой именно крупных контор. Подобные системы внедряются почти везде, и свою лепту в нормализацию процесса работы с пользователями вносят. Это факт. Проблема в другом. Не всегда такие системы в состоянии "из коробки" способны покрыть все нужды компании. Произошло такое и у нас. Я не буду вдаваться в детали (хотя, думаю, что как минимум название системы знающие люди сразу скажут), так как это не требуется, но в общем случае ситуация выглядит так.
Сотрудник при помощи корпоративного портала оформляет заявку на обслуживание его рабочего места (читай, компьютера). Характер запрашиваемых работ таков, что все работы делится на 4 этапа. На основании пользовательской заявки система автоматически генерирует 4 сервисных запроса, по одному на каждый этап работ, после чего эти запросы назначаются в соответствующие отделы (на практике - два к нам, первый и четвертый, и два в соседний отдел). И логика такова, что каждый следующий запрос назначается после закрытия предыдущего. В общем случае это выглядит так: сотрудник берет в работу запрос, выполняет необходимые действия, после чего в системе на странице этого запроса выбирает в поле "Код закрытия" значение "Выполнено", заполняет необходимые поля и, собственно, закрывает заявку. После этого система назначает следующий запрос в цепочке оных.
Пока все логично. Веселье начинается дальше.
Еще на стадии формирования заявки от пользователя есть здоровенный прокол со стороны системы в целом. Она довольно неповоротлива, и одновременно с этим, пока регистрируется заявка от сотрудника, на экране нет никакой индикации о том, что вообще происходит. Сотрудник думает, что система либо зависла, либо кнопку ОК он не нажал, либо еще что-то. Что обычно делают в таком случае? Правильно, давят на эту кнопку еще раз. А может быть и еще, и еще. Приводит это к прекрасному списку дубликатов одной и той же заявки.
Следующая остановка в нашей истории: согласно внутренним правилам дубликаты заявок/запросов закрываются кодом "Дубликат". Это целиком и полностью на совести ведущего эту заявку или запрос.
А вот теперь начинается самый смак. Прилетает на наш отдел очередной запрос. Айтишник берет запрос в работу, по ходу работы видит, что это дубль, так как идентификатор пользовательского компютера уже прописан туда, куда надо, закрывает этот запрос с кодом "Дублирование", вписывает номер того запроса, дубликатом которого этот запрос является. Что делает система в этом случае? Правильно, начихав на то, что запрос НЕ выполнен, назначает в соседний отдел следующий запрос в рамках текущей заявки. Тамошние ребята вообще ни сном, ни духом, дубликат это или нет (логично ведь, если запрос прилетел, значит система его пропустила), пытаются выполнить свою часть работы. И тоже нарываются на тот факт, что работы уже выполнены. И закрывая второй и третий сервисный запрос (без разницы, закрыты они кодом "Выполнено" или "Дублирование"), передают всю эту канитель на последнем шаге опять нам. И опять разгребать: дублирование или нет.
Почему так происходит? Триггером на назначение следующего запроса в цепочке является смена флага "Статус" у исходного запроса на значение "Закрыто". Без проверки кода закрытия. Почему так сделано - я могу только гадать. Но я точно знаю, что это поведение системы - не коробочное. Эту логику дописывали уже на нашем предприятии. Видимо, дописывали наспех.
Вот и получается, что видишь такие до жути обидные ляпы, и плакать хочется. Теми самыми кровавыми слезами.