Как создать домен на Jasper через PHP-клиент

Моя проблема:

у меня есть клиент PHP http://community.jaspersoft.com/wiki/php-client-sample-code#About_the_Class из сообщества Джаспер.
Я хочу добавить домен с PHP в репозиторий Jasper, и у меня есть необходимые данные в формате XML, такие как метка и т. Д.
В этом клиенте PHP я должен использовать класс SemanticLayerDataSource для создания домена.
Этот класс получил схему открытых переменных.
Но я не могу найти то, что эта схема должна работать и добавить правильный домен в хранилище. Нет информации ни на сайте, ни в классе.

$semLayer = new SemanticLayerDataSource();
$semLayer->schema = ?????
$semLayer->label = (string)$xml->label; //SimpleXml
.
.
.

Каким данным нужна схема? Массив, ресурс или что-то еще? Спасибо.
Также пример кода с PHP Client был бы действительно хорош, потому что документация не очень хороша в этом пункте.

Редактировать: я пытался создать XML как локальный файл набор для схемы URI этого XML. Для создания XML я использовал это: http://community.jaspersoft.com/wiki/php-client-sample-code#Creating_Binary_Resources
Я могу создать домен, но не работает AdHoc. Я получаю нулевое исключение от Джаспера.

-1

Решение

Согласно REST API документы вам нужно предоставить ресурс схемы:

<schemaFileReference>
<uri>{schemaFileResourceUri}</uri>
</schemaFileReference>

Этот ресурс представляет всю структуру, как написано в описание службы метаданных домена (согласно абзацу Работа с доменными схемами):

Служба v2 / domains / metadata возвращает только отображаемую информацию о Домене, а не его внутреннее определение. Поля, объединения, фильтры и вычисляемые поля, которые определяют внутреннюю структуру домена, составляют дизайн домена. XML-представление конструкции домена называется схемой домена.

В настоящее время нет службы REST для взаимодействия со схемами домена, но вы можете использовать службу v2 / resources для получения необработанной схемы. Сначала получите дескриптор ресурса для домена. Например, чтобы просмотреть дескриптор для домена Supermart, используйте следующий запрос (при входе в систему как jasperadmin):

GET http://<host>:<port>/jasperserver-pro/rest_v2/resources/Domains/supermartDomain

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<semanticLayerDataSource>
<creationDate>2013-10-10 15:30:31</creationDate>
<description>Comprehensive example of Domain (pre-joined table sets for complex reporting, custom query based dataset, column and row security, I18n bundles)</description>
<label>Supermart Domain</label>
<permissionMask>1</permissionMask>
<updateDate>2013-10-10 15:30:31</updateDate>
<uri>/organizations/organization_1/Domains/supermartDomain</uri>
<version>1</version>
<dataSourceReference>
<uri>/organizations/organization_1/analysis/datasources/FoodmartDataSourceJNDI</uri>
</dataSourceReference>
<bundles>
<bundle>
<fileReference><uri>/organizations/organization_1/Domains/supermartDomain_files/supermart_domain.properties</uri></fileReference>
<locale></locale>
</bundle>

(отрывок) […]

Схема домена представляет собой файл XML со структурой, описанной в Руководстве пользователя сервера JasperReports. Если вы хотите изменить схему программно, вы должны написать свой собственный анализатор для доступа к его полям и определениям. Затем вы можете заменить файл схемы в Домене одним из способов обновления файла, описанных в.

1

Другие решения

Ну, я нашел решение.
Если вы хотите создать схему для каждого php-клиента, создайте новый объект file.

$file = new \Jaspersoft\Dto\Resource\File();
$file->type = "xml";
$file->label = "MyDomain_schema";
$file->content = base64_encode((string)$schemaXML);

Содержимое файла — это кодированная (действительная) схема домена base64.
Сейчас установлено $semLayer->schema = $file, Этот способ работает довольно хорошо.
Также есть способ создать домен с помощью многокомпонентного запроса, но этот способ довольно сложен для клиента php. В клиенте PHP есть функция multipartrequest, но, похоже, эта функция состоит из устаревшего кода.

0

По вопросам рекламы [email protected]