2 - 2018

Использование скриптов для расширения функциональности Lotsia PDM PLUS

Дмитрий Садовников

Данная публикация поднимает тему использования скриптов для расширения функциональных воз­можностей автоматизированных систем управления данными, электронным документооборотом и архивом, построенных на базе Lotsia PDM PLUS. Статья содержит примеры ситуаций и задач, в которых использование скриптов предпочтительнее использования встроенного макроязыка.

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

При выборе способа реализации той или иной задачи администратор системы использует те средства, которыми он лучше владеет, — собственный макроязык Lotsia PDM PLUS, скрипты на языках VBScript, JScript или и то и другое. Отдельно стоит упомянуть входящий в базовую поставку интерфейс прикладного программирования (API), но поскольку сейчас речь идет о разработках в интерфейсе Lotsia PDM PLUS, на API внимание акцентировать не будем.

Абсолютное большинство администраторов, не являясь профессиональными программистами, используют макроязык Lotsia PDM PLUS. Сохраненный под определенным именем набор команд макроязыка называется действием. Например, действие Создать документ, Присвоить инвентарный номер, Провести изменение. Действия, кроме команд, могут содержать формы для ввода данных. Если действие не содержит формы, то оно выполняется скрыто. Пользователь может выполнить действие из того контекста программы, к которому администратор его привяжет. Абсолютное большинство действий вызывается по кнопкам из атрибутивных форм и меню программы. Также действия привязываются к задачам документооборота и отчетам. Да­да, из отчетов Lotsia PDM PLUS можно вызывать процедуры, которые могут работать с информацией не только в отчете, но и в базе данных! К примеру, в отчете по контролю исполнения можно реализовать ввод комментариев исполнителей. Комментарии и отобразятся в отчете, и будут сохранены в атрибутах задач.

Дополнительным средством разработки прикладной функциональности в Lotsia PDM PLUS являются скрипты на языках VBScript и Jscript. Скрипты, как говорят разработчики, развязывают руки. И это так! Примеры простых скриптов, имеющиеся в документации по Lotsia PDM PLUS, позволяют понять структуру скриптовых объектов и увидеть применение основных методов. Обратная связь с пользователями показывает, что абсолютное большинство скриптов написано на VBScript.

Набор скриптовых функций в Lotsia PDM PLUS очень богат, а возможность обращения к внешним объектам позволяет реализовать практически любое требование к системе. Интересна ситуация, когда администратор, начинающий осваивать скриптовый язык, вставляет в код вызов действия. Получается такая структура: из действия вызывается скрипт, из скрипта другое действие, затем происходит возврат в исходный скрипт, а затем в исходное действие. Такая цепочка вызовов разнородных исполняемых процедур может быть бесконечной и не приведет к отказу программного обеспечения. Другое дело, что она будет неоптимальной с точки зрения производительности, но в условиях невысоких нагрузок (примерно до 300 одновременно работающих пользователей) этого никто не заметит (рис. 1).

Рис. 1. Шаг типа Скрипт в действии

Рис. 1. Шаг типа Скрипт в действии

Таким образом, отсутствие опыта программирования у администратора не ставит под угрозу внедрение Lotsia PDM PLUS и позволяет строить систему, не снижая темпа, оптимизируя код по мере выявления узких мест. Программированием, кстати, легко увлечься, и в этом случае наличие конкретных задач и инструмента в виде Lotsia PDM PLUS дает отличную практику.

В каких же случаях чаще всего используются скрипты? На первом месте, безусловно, стоит личное предпочтение администратора. Если он владеет скриптовым языком, то освоение макроязыка отодвигается на второй план, поскольку с первого же дня разработка ведется на скриптовом языке.

Далее — могут возникнуть ситуации, когда нужно обработать объекты всего дерева (например, состава проекта или изделия). При этом заранее неизвестно ни количество уровней вложенности, ни количество объектов на каждом уровне. Примером такой ситуации является необходимость переформирования обозначения всей проектной документации при изменении номера договора. Да, используя макроязык, можно выполнить рекурсивный SQL­запрос, но, во­первых, не все умеют строить такие запросы, а во­вторых, запрос вернет строку, которую нужно будет в цикле разбирать, что не всегда удобно и может оказаться накладным. Все­таки макроязык, несмотря на свою мощь, — это упрощенное средство разработки. Так что в данной ситуации лучше сразу использовать скрипт. Соответствующая функция для получения объектов дерева и пример скрипта есть в документации. Остается только адаптировать скрипт под свой набор составных частей обозначения (рис. 2).

Рис. 2. Привязка скрипта в документообороте

Рис. 2. Привязка скрипта в документообороте

Обработку достаточно больших массивов информации скрипты могут выполнять в памяти, обращения к базе данных разработчик старается минимизировать. Накладные расходы на выполнение операций в таком случае будут ниже по сравнению с аналогичной реализацией через макроязык.

Без скриптов не обойтись и при необходимости обращения к внешним объектам — например, для выполнения некоторых операций с внешними, по отношению к Lotsia PDM PLUS, файлами или для выполнения команд из командной строки. Также к внешним объектам в скриптах можно обращаться при реализации собственных интеграционных решений.

Приведем пример другой задачи. Допустим, имеется файл Excel с некими данными, которые нужно импортировать в Lotsia PDM PLUS. Импорт можно выполнить напрямую из файла Excel, написав макрос на VBA, обращающийся к Lotsia PDM PLUS (здесь обращение пойдет через API). Но можно и в Lotsia PDM PLUS написать скрипт, который подключится к файлу, получит данные и обработает их. И тот и другой вариант требует навыков программирования, и какому варианту отдать предпочтение — зависит от конкретной задачи. Мы сейчас говорим об использовании скриптов для решения данной задачи, но нельзя не упомянуть вариант применения встроенной в Lotsia PDM PLUS функции импорта из внешних источников данных. Процесс реализации с использованием этой функции более визуальный, и для администраторов, не знакомых с программированием, значительно проще.

Скрипты в Lotsia PDM PLUS могут обрабатывать информацию из полей экранных форм, не обращаясь к базе данных. Это позволяет выполнить некоторые операции быстрее по сравнению с реализацией, использующей обращение к БД.

Не так давно, к примеру, возникла необходимость реализации задачи выгрузки файлов проектной документации для передачи на государственную экспертизу через портал государственных услуг. При этом файлы должны соответствовать ряду требований, в том числе в части именования. Учитывая специфику работы пользователей, было решено использовать функциональность отчетов Lotsia PDM PLUS. Отчет формируется по документам проекта, сортирует документы в соответствии со структурой проектной документации по номерам страниц, будущие имена выгружаемых файлов вычисляются из значений полей отчета с учетом уникальности. Сама выгрузка инициируется пользователем, а вся обработка выполняется скриптом. Во время выгрузки в указанной папке создается структура подпапок, наполненная файлами с именами, вычисленными в отчете. По окончании выгрузки автоматически выполняется командная строка, запускающая внешнюю программу для слияния файлов в фрагменты с размером, не превышающим 80 Мбайт, как того требует регламент. И тем же скриптом запускается процедура формирования по шаблону docx­файла с описанием объединенных документов (информационно­удостоверяющий лист). Вся обработка, кроме первичной загрузки данных, выполняется с использованием данных из формы отчета (рис. 3).

Рис. 3. Скрипт в отчете

Рис. 3. Скрипт в отчете

В нашей публикации мы привели простые примеры использования скриптов в Lotsia PDM PLUS. В системах, внедренных у наших пользователей, скрипты решают множество задач разной степени сложности. Скрипты можно использовать в окнах поиска, если требуется какой­то специфический поиск, а администратору встроенные поисковые запросы кажутся неоптимальными. Скрипты можно использовать в задачах документооборота для любых внутренних и внешних обработок, вплоть до выгрузки данных на Web­портал. Наконец, скрипты точно с такими же целями можно использовать в действиях и отчетах.

В изучении скриптов администратору поможет документация, содержащая более ста страниц и описывающая каждую функцию.

Завершая публикацию, отметим, что абсолютное большинство администраторов Lotsia PDM PLUS используют макроязык, и задачи в самых интересных внедрениях реализованы на встроенном макроязыке. О скриптах же мы рассказали, чтобы напомнить об их доступности для развития систем автоматизации управления данными, электронным документооборотом и архивом, построенных на базе Lotsia PDM PLUS.