Описание

Клиентские приложения имеют возможность получать доступ к развернутым в D365O по умолчанию сервисам типа REST Metadata, которых не было в AX2012. Эти веб-сервисы позволяют просмотреть метаданные по имеющимся в D365O меткам и data entity, передавая их в формате JSON.

Для просмотра метаданных по меткам нужно сформировать URL запрос вида «АДРЕС D365O»/metadata/Labels(Id=’«КОД МЕТКИ»’,Language=’«ЯЗЫК МЕТКИ»’). Например, https://oit-adm-boryseda2b5401719f08ddevaos.cloudax.dynamics.com/metadata/Labels(Id=’@SYS1′,Language=’en-us’). При этом возвращается следующая информация:

  • 1. id – код метки.

  • 2. language – язык метки.

  • 3. value – текст метки.

  • 4. @odata.context –адрес источника данных.

То есть, такой запрос позволяет получить текст метки, код и язык которой мы ввели.

Для вывода информации по конкретной data entity, нужно сформировать запрос следующим образом: «АДРЕС D365O»/metadata/DataEntities(Name=’«ИМЯ DATA ENTITY»’). Например: https://ualoc- boryseda2b5401719f08ddevaos.cloudax.dynamics.com/metadata/DataEntities(Name=’ACOJournalNameEntity’). При этом возвращается следующая информация:

  • 1. Name – название data entity в AOT.

  • 2. PublicEntityName – название класса, который используется со стороны клиента в качестве контракта данных отдельной записи data entity.

  • 3. PublicCollectionName – название data entity, используемое со стороны клиента.

  • 4. LabelId – код метки названия.

  • 5. dataServiceEnabled – показатель того, доступна ли data entity из веб-сервисов.

  • 6. dataManagementEnabled – показатель того, доступна ли data entity из Data management воркспейса D365O.

  • 7. entityCategory – категория data entity.

  • 8. isReadOnly – boolean значение, которое определяет возможность модификации данных (важно при использовании OData веб-сервисов).

  • 9. @odata.context –адрес источника данных.

Для просмотра метаданных по всем data entity нужно сформировать URL запрос вида «АДРЕС D365O»/metadata/DataEntities. Например, boryseda2b5401719f08ddevaos.cloudax.dynamics.com/metadata/DataEntities. При этом возвращается следующая информация:

  • 1. value – массив, содержащий информацию по каждой data entity системы в том же виде, как при запросе для отдельной data entity, но без их @odata.context.

  • 2. @odata.context –адрес источника данных.

Полученная информация может быть использована для помощи в создании клиентских приложений, вызывающих веб-сервисы OData, так как содержит используемые со стороны клинта названия data entity, а также позволяет понять, возможно ли только считывать данные data entity, или же можно их модифицировать.

Вызов веб-сервиса D365O из Desktop приложения

Подготовительный этап

  • 1. value – массив, содержащий информацию о каждой возвращенной записи data entity. Данные в массиве содержат все public поля data entity, а также хеш код записи @odata.etag.

  • 2. @odata.context –адрес источника данных.

Вызов только считывающего данные веб-сервиса D365O из Desktop приложения

Подготовительный этап

Основной код

При использовании вспомогательного проекта JsonRequestSender, вызов веб-сервиса сводится к одной команде. Для этого сначала нужно создать объект класса RequestSender_OAuth, так как в вебсервисах D365O используется аутентификация OAuth.

Copy to Clipboard

Далее, так как REST Metadata веб-сервисы D365O используют GET запросы, отправляем GET запрос, по правилам запросов REST Metadata.

Copy to Clipboard

В метод sendGETRequest() передаются один дженерик класс и один аргумент.

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

Аргумент определяет относительный адрес вызываемого метода вебсервиса в ресурсе. В данном случае относительный адрес показывает, что нужно вернуть метку с ID равным значению переменной labelId и языком равным значению переменной labelLanguage.

Пример

В качестве примера приведено приложение Microsoft forms для получения значений меток и информации о data entity системы.

Для получения значения метки нужно в двух верхних полях ввести ID и код языка метки, после чего нажать кнопку Get label value.

Для получения информации о data entity нужно нажать кнопку Get data entity information, при желании указав AOT-название конкретной data entity над кнопкой.

Copy to Clipboard

Подготовил статью:

Дыкуха
ДыкухаБорис Александрович
Senior Software Developer, OntargIT
Published On: 16 апреля, 2021 / Рубрики: Blog /

Следите за новостями компании OntargIT

    Ознакомиться с Политикой конфиденицальности можно здесь.