steinkrauz - Post a comment

> Recent Entries
> Archive
> Friends
> User Info

September 25th, 2021


[info]steinkrauz10:55 pm - Кудысь мы, кот и мся.
К вопросу о развитии программного обеспечения.

Работаю я с одной системой управления документацией. Сразу скажу, что не наша, существует она уже лет тридцать, используется по всему миру не самыми последними компаниями, так что в целом не самый плохой софт. Есть в этой системе в числе туевой хучи всего прочего модуль разработки эксплуатационной документации. Когда она разработана, её надо свести из кучи составных элементов в один результирующий документ. Поскольку в этой самой документации зачастую бывает 100500 страниц, да ещё с картинками, разработчики достаточно разумно решили не нагружать этим процессом пользовательский клиент, а выполнять отдельным заданием на сервере.

Уж не знаю по каким соображениям, но разбили они его на два этапа. Сначала в диспетчере создаётся задание для первого модуля, который выгружает в рабочий каталог все заданные элементы и создаёт задание для второго модуля. Тот в свою очередь превращает набор из кучи xml и jpg в один большой, жирный pdf. Пока достаточно разумно, и как показывает практика, даже работает. Но тут приходит жалоба: дескать, отправляю я свой разработанный документ на публикацию, а в ответ -- МПХ. В консоли диспетчера зданий видно, что первое задание как ему и положено создаётся, завершается успешно, и всё.

При расследовании этого глюка начинают раскрываться глубины глубин и ширины ширин. В принципе, диспетчер, который тут используется вещь достаточно гибкая. Изначально он был заточен для того, чтобы автоматизировать конвертацию файлов из одного формата в другой, поэтому добавить что-то новое там проблем нет. Но если вы думаете, что первый модуль это программа или скрипт, которые выгружают данные, то глубоко ошибаетесь. Первый модуль это штатный сервис обращения к API системы, и ему передаётся для вызова ровна одна функция: подготовитьДанныеПубликации, если в примерном переводе. Естественно, они нигде не описана, а так как ядро системы написано на плюсах, то и декомпилировать в читаемый код не получится.

Но теперь у нас хотя бы появилось направление поиска. Уходим из журнала выполнения задания (за исключением технических подробностей там всё то же, что и в консоли: запустились, поработали, успешно завершились) и идём в хранилище логов сессий. Среди нескольких сотен файлов находим таки тот, что оставил после своей работы модуль диспетчера. И о чудо, в логе действительно есть ошибка: "Не могу найти язык ru для раздела такого-то". Не то, чтобы это помогло, так как раздел вполне себе написан на русском, и во всех настройках опять же русский указан. Наконец, после длительный раздумий и сравнения с другими разделами выясняется, что язык раздела определяется по последним символам в имени файла с текстом. На всякий случай, ещё раз напомню: это документарная система, тут на каждом объекте минимум с десяток атрибутов висит, и нет никаких ограничений на добавление новых.

По-моему, в этой картине прекрасно всё.

Read Comments

Reply


From:
Identity URL: 
имя пользователя:    
Вы должны предварительно войти в LiveJournal.com
 
E-mail для ответов: 
Вы сможете оставлять комментарии, даже если не введете e-mail.
Но вы не сможете получать уведомления об ответах на ваши комментарии!
Внимание: на указанный адрес будет выслано подтверждение.
Username:
Password:
Subject:
No HTML allowed in subject
Message:



> Go to Top
LJ.Rossia.org