01.01.2015 Views

Основы программирования Autodesk Vault

Основы программирования Autodesk Vault

Основы программирования Autodesk Vault

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Основы</strong> <strong>программирования</strong> <strong>Autodesk</strong> <strong>Vault</strong><br />

Когда перед вами стоит вопрос внедрения PDM-системы, важно чтобы у неё был открытый интерфейс<br />

<strong>программирования</strong> приложений (API), так как практически невозможно получить систему, полностью<br />

соответствующую требованиям производственного процесса, пользуясь только её базовым функционалом.<br />

Особенно, если стоит задача совместной работы с другими бизнес-системами.<br />

<strong>Autodesk</strong> <strong>Vault</strong> является системой с открытым API. Система построена на основании тех же функций, которые<br />

доступны пользователю. В программировании подобная ситуация обозначается термином “dogfudding” – так<br />

разработчики шутливо говорят: «мы едим то, чем кормим нашу собаку». Так, <strong>Vault</strong> Explorer и надстройки <strong>Vault</strong><br />

для CAD построены на основании этого же API.<br />

Для удобства разработчиков и в целях стандартизации <strong>программирования</strong>, API представлены в виде<br />

динамически подключаемых библиотек (DLL), подробной справочной системой и примерами программ на<br />

нескольких языках <strong>программирования</strong>. Все это объединено в комплект средств разработки (SDK)<br />

автоматически устанавливается вместе с <strong>Vault</strong>. В соответствии с политикой <strong>Autodesk</strong>, не обязательно быть<br />

членом <strong>Autodesk</strong> Development Network для того, чтобы писать приложения с использованием <strong>Vault</strong> API.<br />

Модель <strong>Vault</strong><br />

<strong>Autodesk</strong> <strong>Vault</strong> представляет собой клиент-серверную систему, которая состоит из нескольких подсистем. Для<br />

удобства понимания, опишем данную структуру, используя понятные образы (Рисунок 1).<br />

Ключевой узел системы – «Робот» (ADMS), который расположен на сервере. Управление им осуществляется<br />

при помощи полнофункционального «Пульта управления» (<strong>Vault</strong> Explorer), возможности которого могут<br />

расширяться «Дополнительными модулями» (Пользовательские надстройки), либо при помощи<br />

«Малогабаритных раций» (Пользовательские приложения) по сетевому каналу.<br />

Сервер<br />

Клиент<br />

Условные обозначения<br />

<strong>Autodesk</strong> Data<br />

Management Server<br />

Console<br />

«Системное меню»<br />

<strong>Autodesk</strong> Data Management<br />

Server<br />

(ADMS)<br />

<strong>Vault</strong><br />

Explorer<br />

«Пульт<br />

управления»<br />

Autoloader<br />

Веб-сервер<br />

Расширения<br />

интерфейса<br />

«Дополнительные<br />

модули»<br />

«Погрузчик»<br />

«Пресса»<br />

«Имя»<br />

Область<br />

использования<br />

API<br />

Неофициальное<br />

обозначение<br />

Серверные<br />

коммуникации<br />

«Робот»<br />

Job Processor<br />

«Микропроцессор»<br />

Прямой доступ<br />

запрещен<br />

База<br />

данных<br />

Файловое<br />

хранилище<br />

Надстройки<br />

САПР<br />

САПР<br />

«Картотека»<br />

«Библиотека»<br />

Пользовательские<br />

приложения<br />

«Рации»<br />

«Инструментарий»<br />

Рисунок 1Системная модель <strong>Autodesk</strong> <strong>Vault</strong><br />

Доступ к системному меню происходит через «Системное меню» (ADMS Console). Для обработки запросов<br />

клиента, «Робот» имеет доступ к «Картотеке» (База данных), и «Библиотеке» (Файловое хранилище).


«Картотека» содержит в себе ссылочную информацию о файлах, а также дополнительную служебную<br />

информацию.<br />

Звучит, согласитесь, как минимум, странно. Однако, довольно удобно для понимания архитектуры <strong>Vault</strong>, что<br />

пригодится нам впоследствии.<br />

<strong>Vault</strong> использует технологию веб-служб, что значительно упрощает клиент-серверное взаимодействие. По<br />

сути, <strong>Vault</strong> API позволяет программам взаимодействовать с компонентом <strong>Vault</strong> Server (ADMS).<br />

Серверная часть <strong>Autodesk</strong> <strong>Vault</strong><br />

Серверные коммуникации – позволяют открыть собственное подключение к серверу для получения и<br />

выгрузки данных, запуска серверных операций. Данные передаются по HTTP в XML-формате. Операции<br />

рекомендуется производить посредством динамических .NET библиотек (DLL) из <strong>Vault</strong> SDK.<br />

Серверная структура является неизменной даже при помощи API. Однако, при наличии разрашений,<br />

пользоватлеь имеет право на чтение и запись данных, размещенных на сервере.<br />

<strong>Autodesk</strong> Data Management Server (ADMS) – также известный как сервер <strong>Vault</strong>, этот компонент содержит<br />

большую часть бизнес-логики для системы <strong>Vault</strong>. Он является посредником между слоем хранения данных<br />

(база данных и файловое хранилище) и клиентом. Как отмечено выше, ADMS использует веб-службы для<br />

предоставления API связи с сервером. Это единственный способ подключения клиентов <strong>Vault</strong> к серверу.<br />

Файловое хранилище – этот компонент представляет собой иерархию папок, которая хранит все файлы,<br />

загруженные в хранилище. Изменение вручную текущего и следующего компонентов запрещено. Сеть<br />

разработчиков <strong>Autodesk</strong> и служба поддержки <strong>Autodesk</strong> не предоставляет никакой поддержки при<br />

обнаружении таких изменений.<br />

База данных – этот компонент хранит всю не-файловую информацию.<br />

Клиентская часть <strong>Autodesk</strong> <strong>Vault</strong><br />

Напротив, является гибко настраиваемой структурой.<br />

<strong>Vault</strong> Explorer – это приложение является основным инструментом для просмотра и управления хранилищем<br />

данных. Технически существует 4 типа <strong>Vault</strong> Explorers, 1 для каждого вида продукта. Так что есть "<strong>Vault</strong> Basic",<br />

"<strong>Vault</strong> Workgroup", "<strong>Vault</strong> Collaboration" и "<strong>Vault</strong> Professional" версии <strong>Vault</strong> Explorer. Для удобства все их будем<br />

называть "<strong>Vault</strong> Explorer". API позволяет: добавлять команды, добавить вкладки просмотра, подписываться на<br />

события команд (Рисунок 2).<br />

Гибкая настройка <strong>Vault</strong> Explorer доступна во всей продуктовой линейке <strong>Vault</strong>, за исключением <strong>Vault</strong> Basic, и<br />

реализуется «надстройкой» – динамической .NET библиотекой (DLL). Данный формат позволяет использовать<br />

все возможности платформы .NET, в частности: изменять пользовательский интерфейс, диалоги, и пр. по<br />

своему желанию; подключаться к внешней базе данных; использовать другие API (например, Inventor<br />

Apprentice); подгружать элементы управления (COM Interop); использовать WPF.<br />

При этом надстройка может быть написана на любом языке .NET (C#, VB.NET, PowerShell)


Определять меню<br />

Связь с другими<br />

командами/<br />

представлениями/<br />

свойствами<br />

Скрывать<br />

существующие<br />

меню<br />

Менять<br />

существующие<br />

команды<br />

Создавать<br />

подменю<br />

Вызывать<br />

другие<br />

команды<br />

Задавать<br />

контекст<br />

видимости<br />

Вызывать обновление по<br />

завершению команды<br />

Выбирать элементы<br />

Рисунок 2Возможности настройки <strong>Vault</strong> Explorer<br />

САПР – например: AutoCAD, Inventor и Civil 3D. Фактически это приложения CAD с плагином, который<br />

взаимодействует с сервером <strong>Vault</strong>. Эти плагины отправляют на сервер не только файлы, а и соответствующие<br />

мета-данные файлов.<br />

Job Processor – утилита, которая получает рутинные задания из очереди и выполняет их. Несмотря на то, что<br />

технически это не служба Windows, Job Processor ведет себя подобным образом. Она разработана для<br />

непрерывной работы практически без вмешательства пользователя. API позволяет: добавлять собственные<br />

типы работ и нестандартные обработчики работ.<br />

В <strong>Vault</strong> Workgroup/Collaboration/Professional есть возможность распределить работу посредством<br />

использования централизованной очереди. Работа – это элемент очереди, и он представляет хорошо<br />

определенную единицу работы. Очередь обслуживается сервером <strong>Vault</strong>. Взаимодействие с очередь<br />

производится посредством веб-служб.<br />

JobProcessor.exe – приложение для размещения обработчиков работ. Работа – это элемент очереди, и он<br />

представляет хорошо определенную единицу работы. Очередь обслуживается сервером <strong>Vault</strong>.<br />

Взаимодействие с очередью производится посредством веб-служб.<br />

Описание работы выглядит следующим образом:<br />

class IJob {<br />

Long Id; { get; }<br />

String <strong>Vault</strong>Name; { get; }<br />

String JobType; { get; }<br />

String Description; { get; }<br />

System.Collections.Generic.Dictionary Params; { get; }<br />

}<br />

JobType – строка, которая отображает потребности для обработки задачи. Обработчик работ настроен для<br />

обработки определенных типов работ, которые позволяет JobProcessor направлять работы нужным<br />

обработчикам. Не существует обязательной структуры строки, однако рекомендуется добавлять имя вашей<br />

фирмы перед любым типом работ.


Params – это коллекция пар Имя-Значение, которые предоставляют дополнительную информацию о задаче.<br />

Не существует фиксированного набора параметров – он зависит от типа работы. Другими словами,<br />

интерпретация – это ответственность за организацию очередей и обработку клиентов.<br />

Сервер <strong>Vault</strong> разрешит вам добавить работу в очередь, даже если отсутствуют обработчики для данного типа.<br />

Администратор должен обеспечить проверку соответствия поставщиков и обработчиков работ. Иначе вся<br />

очередь будет заполнена работами, которые нельзя обработать.<br />

Время и место обработки работы не гарантировано, равно как и порядок обработки. Если работа А находится<br />

перед работой Б в очереди, это не означает, что вначале будет обработана работа А. Если вам необходимо<br />

гарантировать порядок, вы можете запрограммировать обработчик работы А на добавление работы Б.<br />

Пользовательские приложения – веб-службы API является общедоступными, следовательно, каждый может<br />

написать <strong>Vault</strong>-клиент. Теоретически, пользовательское приложение может делать все, что и <strong>Vault</strong>-клиент, так<br />

как они используют один и тот же API для связи с ADMS.<br />

Глобальные настройки – позволяют изменять бизнес-логику для всех клиентов. Обработчики событий могут<br />

быть написаны для определенных операций в веб-службах API. Эти события будут срабатывать для всех<br />

клиентов. Например, если вы пишите обработчик для файлов на событие получения, обработчик будет<br />

получать уведомления всякий раз, когда AutoCAD получает файл и всякий раз, когда <strong>Vault</strong> Explorer получает<br />

файл. API позволяет расширить существующие команды посредством пред- и пост-обработки.<br />

Специальные вызовы веб-службы будут запускать события, в которые может внедриться пользовательский<br />

код.<br />

Глобальные настройки позволяют: осуществлять операции до и после вызова веб-службы; блокировать<br />

вызовы веб-службы до того, как они отправляются на сервер; встраиваться в конкретный клиент <strong>Vault</strong>, либо<br />

во все клиенты <strong>Vault</strong> на заданном компьютере.<br />

Ход вызова<br />

GetRestrictions Pre Вызов веб-службы Post<br />

Рисунок 3Процесс бизнес-логики<br />

Так, можно перехватывать события, которые сопутствуют вызову службы и выполняются в следующей<br />

очередности (Рисунок 3):<br />

• GetRestrictions – Позволяет пользовательскому коду блокировать вызовы веб-служб<br />

• Pre – Позволяет пользовательскому коду выполняться до вызова веб-службы<br />

• Вызов веб-службы – собственно, выполнение запроса к серверу<br />

• Post – Позволяет пользовательскому коду выполняться после вызова веб-службы<br />

Глобальная настройка доступна во всей продуктовой линейке <strong>Vault</strong>, за исключением <strong>Vault</strong> Basic. Надстройки<br />

представляют собой динамические .NET библиотеки (DLL).


Службы <strong>Autodesk</strong> <strong>Vault</strong><br />

Все описанные выше операции осуществляются путём вызова функций. В API функции сгруппированы в<br />

коллекции (службы) по признаку их функциональности и уровня продукта.<br />

На диаграмме (Рисунок 4) представлено сравнение служб по степени доступности (0 – недоступна, 1 –<br />

функции частично доступны, 2 – доступна в полном объеме) и версии клиента по убыванию<br />

«распространенности» (сумма доступностей для всех версий).<br />

Степень доступности службы<br />

2<br />

1<br />

0<br />

PackageService<br />

Knowledge<strong>Vault</strong>Service<br />

InformationService<br />

DocumentService<br />

AdminService<br />

SecurityService<br />

RevisionService<br />

PropertyService<br />

LifeCycleService<br />

JobService<br />

CategoryService<br />

BehaviorService<br />

ReplicationService<br />

DocumentServiceExtensions<br />

WinAuthService<br />

ItemService<br />

ForumService<br />

CustomEntityService<br />

<strong>Vault</strong> Professional<br />

<strong>Vault</strong> Collaboration<br />

<strong>Vault</strong> Workgroup<br />

ChangeOrderService<br />

<strong>Vault</strong> Basic<br />

8<br />

7<br />

6<br />

4<br />

2<br />

Название и распространенность службы<br />

Рисунок 4Распространенность и доступность служб<br />

Каждый вызов функции является транзакцией и автономен. Для вызова большинства функций требуется<br />

авторизация. В объектах содержатся только структурированные данные, а не методы. Так что мы имеем дело<br />

не с Объектно-Ориентированной среда, в полном понимании этого термина.<br />

Описанные ниже (Таблица 1) службы содержатся в сборке <strong>Autodesk</strong>.Connectivity.WebServices, которая<br />

представляет собой DLL. Помимо неё в SDK представлены также следующие сборки:<br />

<strong>Autodesk</strong>.Connectivity.Explorer.Extensibility – содержит необходимые перехватчики событий для написания<br />

расширений <strong>Vault</strong> Explorer.<br />

<strong>Autodesk</strong>.Connectivity.Explorer.ExtensibilityTools – предоставляет доступ к бизнес-логике <strong>Vault</strong> Explorer. Она<br />

предоставляет простой интерфейс для вызова комплексной функциональности путём повторного<br />

использования компонентов <strong>Vault</strong> Explorer.<br />

<strong>Autodesk</strong>.Connectivity.Extensibility.Framework – содержит общие классы и утилиты, которые доступны во всех<br />

расширениях <strong>Vault</strong>.<br />

<strong>Autodesk</strong>.Connectivity.JobProcessor.Extensibility – содержит необходимые перехватчики событий для<br />

написания расширений Job Processor.


Таблица 1Службы <strong>Vault</strong> API<br />

Операция Служба Объект Примечание<br />

Вход/выход в<br />

хранилище<br />

SecurityService Аутентификация Установка<br />

безопасности<br />

на<br />

определенные<br />

объекты<br />

WinAuthService<br />

Аутентификация Windows<br />

Импорт/экспорт PackageService<br />

Элементы<br />

данных<br />

Передача между ReplicationService<br />

Права владения<br />

группами<br />

Получение<br />

информации<br />

InformationService<br />

Сервер и поддерживаемые<br />

продукты<br />

Knowledge<strong>Vault</strong>Service Расположенные на сервере<br />

хранилища<br />

Публикация ForumService Сообщения Для запросов<br />

на изменение<br />

Управление AdminService Пользователи и группы<br />

BehaviorService<br />

CategoryService<br />

ChangeOrderService<br />

CustomEntityService<br />

DocumentService<br />

Объекты. Поведение<br />

Категории<br />

Запросы на изменение<br />

Пользовательские объекты<br />

Файлы и папки в хранилище<br />

DocumentServiceExtensions Файлы и папки в хранилище Доп. Методы<br />

ItemService<br />

JobService<br />

LifeCycleService<br />

PropertyService<br />

RevisionService<br />

Элементы<br />

Очередь работ<br />

Объекты. Жизненные циклы<br />

Объекты. Свойства<br />

Объекты. Значения и схемы<br />

ревизий.<br />

Правила разработки приложений под <strong>Autodesk</strong> <strong>Vault</strong><br />

При разработке приложений обязательно надо учитывать приведенные ниже Правила разработки.<br />

<strong>Vault</strong> не бесплатен. <strong>Vault</strong> Workgroup, Collaboration и Professional используют сетевое лицензирование, которое<br />

основано на клиентах. Для подключения к серверу, клиент должен иметь лицензию.<br />

Соответствующее CAD-приложение должно быть установлен на той же машине, что и клиент. Список<br />

приложение приведен в документации к <strong>Vault</strong>.<br />

API не должен использоваться для получения доступа к <strong>Vault</strong> без лицензии <strong>Vault</strong>.<br />

Требования к CAD-приложениям отсутствуют: любое приложение может работать с <strong>Vault</strong>, пока есть<br />

свободные лицензии. Лицензиями управляет сервер. Все лицензии однородны: регистрация в <strong>Vault</strong><br />

Collaboration всегда потребляет лицензию Collaboration. Лицензия всегда потребляется при обычной<br />

регистрации, даже если клиент осуществляет операции <strong>Vault</strong> Basic.<br />

Лицензии <strong>Vault</strong> Office не настраиваются.<br />

Лицензия потребляется, как только вы войдете, и освобождается при выходе. Через 30 минут отсутствия API<br />

вызовов, сервер автоматически производит отключение пользователя. Если вы имеете несколько


подключений с одним именем пользователя с одного компьютера (Inventor и <strong>Vault</strong> Explorer запущены<br />

одновременно), потребляется одна лицензия. Если у вас несколько подключений с различным именем<br />

пользователя, каждое подключение потребляет отдельную лицензию.<br />

Есть возможность подключиться только для чтения. Для этого не требуется сетевой лицензии. <strong>Vault</strong> Basic<br />

требуется соответствующее CAD -приложение, даже для подключения только на чтение.<br />

Пользовательские надстройки изолированы от прочих команд/представлений/свойств: невозможно<br />

изменить другие команды, за исключением скрытия их, либо добавления пре- или пост- обработки. Также<br />

невозможно вызвать другие команды, выбирать элементы, менять виды, и пр.<br />

Развертывание приложений<br />

Готовую программу можно установить на компьютер:<br />

• простым копированием в каталог расширений (%ProgramData%/<strong>Autodesk</strong>/<strong>Vault</strong> 2013/Extensions/),<br />

• при помощи установочной программы, в которой приложение и поставляется пользователю<br />

• посредством диспетчера приложений <strong>Autodesk</strong> Exchange, который встроен в <strong>Vault</strong> Explorer (Рисунок 5).<br />

• посредством инструментария развертывания Project Thunderdome (ниже по тексту)<br />

Рисунок 5Диспетчер приложений <strong>Autodesk</strong> Exchange<br />

Примеры<br />

Использование <strong>Vault</strong> API очень многогранно, ниже приведены лишь некоторые примеры его использования.<br />

DECO. Приложение позволяет определить свой собственный диалог, который будет вызываться при создании<br />

нового пользовательского объекта (Рисунок 6). В том числе, определить свой собственный диалог<br />

редактирования. А также позволяет получить пользовательские вкладки для просмотра данных объектов.


Рисунок 6Диалог пользовательского объекта, разработанный при помощи DECO<br />

vLogic. Приложение для настройки <strong>Vault</strong> посредством скриптов. За основу взят PowerShell, для написания<br />

скриптов используется PowerShell ISE. Для выполнения скриптов не требуется Visual Studio, компиляция и<br />

развертывание. Применение изменений при редактировании скриптов осуществляется без перезагрузки <strong>Vault</strong><br />

Explorer (Рисунок 7).<br />

Рисунок 7vLogic в интерфейсе <strong>Vault</strong> Explorer<br />

Project Thunderdome. Приложение позволяет сохранять и централизованно развертывать настройки <strong>Vault</strong> на<br />

клиентских машинах (Рисунок 8): пользовательские; папки поиска; расширения; файлы DECO; скрипты vLogic.


Рисунок 8Интерфейс Project Thunderdome<br />

Drawing Compare. Производит сравнение версий чертежа в <strong>Vault</strong>, либо двух различных чертежей. Основана<br />

на Design Review (Рисунок 9).<br />

Рисунок 9Интерфейс Drawing Compare<br />

Заключение<br />

Получить SDK Вы можете в каталоге [Путь установки Сервера/Клиента <strong>Vault</strong>]\SDK после установки <strong>Vault</strong>.<br />

На ваши вопросы по разработке приложений под <strong>Vault</strong> Вам всегда ответят:<br />

−<br />

в блоге «<strong>Autodesk</strong> <strong>Vault</strong> по-русски»: http://vault-ru.blogspot.com


−<br />

−<br />

на форуме <strong>Autodesk</strong>, группа обсуждения <strong>Vault</strong> API: http://forums.autodesk.com/t5/<strong>Autodesk</strong>-<strong>Vault</strong>-<br />

Customization/bd-p/301<br />

в сети разработчиков <strong>Autodesk</strong>, группа обсуждения <strong>Autodesk</strong> <strong>Vault</strong>:<br />

http://usa.autodesk.com/adsk/servlet/indexsiteID=123112&id=13433205<br />

Готовые программы вы можете получить здесь:<br />

−<br />

−<br />

<strong>Autodesk</strong> Exchange, <strong>Autodesk</strong> <strong>Vault</strong>: http://apps.exchange.autodesk.com/VLTC/Home/Index<br />

блог о настройке <strong>Vault</strong>: http://justonesandzeros.typepad.com<br />

Теоретические аспекты PDM/PLM систем и API рассматриваются:<br />

−<br />

−<br />

−<br />

в блоге Олега Шиловицкого http://beyondplm.com/<br />

в блоге TechCrunch http://techcrunch.com/<br />

в блоге Jim McKinney http://plmjim.blogspot.com/

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!