Создание ролевого приложения

в статье содержится инструкция и пример по созданию Ролевого приложения и загрузки его в домен.

Введение

Ролевое приложение представляет собой Web-приложение, которое загружается в домен Аксател. Права доступа пользователей определяются ролевыми политиками безопасности в рамках Домена.

Каждое Ролевое приложение имеет связанный SVC сценарий, который выполняет задачи вычислений и предоставления данных для отображения в Ролевом приложении конечному пользователю. Запуск сценария происходит через выполнение REST запроса /exec

Ролевое приложение работает после успешной аутентификации пользователя в домене Аксател.

Файл ролевого приложения

Ролевое приложение представляет из себя zip-архив, который будет распакован на сервере при установке.

Архив содержит в себе две значимые части:

  1. Файл roleapp.json

  2. Непосредственно web-приложение, выполняемое на стороне браузера

Пример структуры файлов Ролевого приложения

Файл roleapp.json в корне архива содержит описание приложения. Как правило все файлы приложения находятся также в корне архива (index.html и другие).

Файл roleapp.json

Должен быть валидным json файлом, размер которого не превышает 10Kb. Пример json файла.

{
"name": "Roleapp Sample",
"description": "Monitor (old) as RoleApp description",
"order": 5000,
"fa-icon": "fa-paw",
"iconPath": "assets/desktop.svg"
}

Название

Описание

name

Название ролевого приложения. Значение поля будет использовано для названия ролевого приложения в списке если администратор оставил поле "title" объекта ролевого приложения пустым.

Тип поля – строка

Обязательная переменная

description

Описание ролевого приложения. Значение будет доступно через /rest/v1/iam/sessions/current.

Тип поля – строка

Обязательная переменная

order

Порядок ролевого приложения при сортировке для отображения в списке. Администратор может принудительно его задать в поле ext.order объекта roleapp.

Тип поля – число

Необязательная переменная

fa-icon

имя класса иконки Font Awesome.

Необязательная переменная

iconPath

путь до иконки для списка приложений относительно папки ролевого приложения.

Обязательная переменная

folder

Подпапка внутри архива в качестве папки с web-документами (по-умолчанию используется весь архив от корня)

Необязательная переменная

Если указан, то в результате по url’у установленного приложения будет доступен не корень архива, а эта подпапка (в url не появляется).

Например, если “folder”:”dist”, то index.html должен быть размещен в подпапке dist и файл roleapp.json нельзя будет получить из прямого URL (/app/appname/roleapp.json )

├── dist

│ └── index.html

└── roleapp.json

Установка ролевого приложения

  1. Необходимо создать SVC сценарий

  2. Создать RoleApp приложение

    • Раздел «Обработка сервиса» - «Ролевые приложения»

    • Новый объект

      • Путь приложения – уникальный путь в рамках текущего домена

      • Название приложения – как приложение будет отображаться на главной странице после авторизации

      • Права доступа – указать все права (роли) которым разрешен доступ к этому приложению

      • SVC сценарий – выбрать необходимый SVC сценарий

  3. Загрузить zip архив с RoleApp

  • Получить ID Ролевого приложения (после создания открыть карточку на редактирование и скопировать id)

  • Открыть Talend API Tester (Restlet) addon в браузере и методом PUT загрузить файл

Также загрузить файл можно через curl (нужна сессионная куки)

curl -b curl-worker.cookies \ -X PUT \ -F '[email protected]_sample.zip' http://demo.axatel.ru/rest/v1/domain/roleapps/daee4ff3-0170-4032-d6ca-fa163eec3818/attachment

4. Проверить корректность загруженного файла можно через запрос на тот же адрес но с Method = GET. В результате браузер должен скачать файл attachment (переименовать в attachment.zip и он будет равен первоначально загруженному файлу)

После установки ролевого приложения И корректной связи по ролевым меткам оно появляется в списке приложений на главной странице (страница после авторизации или по клику на логотипе Аксател).

Результат установки

Приложение становится доступным на основной странице Аксател (после аутентификации и при клике на логотипе Аксател).

URL установки не известен автору приложения заранее – Путь приложения определяет администратором в момент установки. Это позволяет установить, например, разные версии одного ролевого приложения в разные папки и пользоваться ими одновременно.

Для корректной работы необходимо ссылаться на ресурсы ролевого приложения по относительным путям, например:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>R.API Monitor</title>
<link rel="stylesheet" href="css/jsoneditor.min.css">
<script src="js/jsoneditor.min.js"></script>
<script src="js/jquery-3.1.1.min.js"></script>
<script src="js/aes-js.js"></script>
<script src="js/base64.js"></script>
<script src="monitor.js"></script>

Ресурсы будут загружаться из папок …/css/, …/js/ и т.д. или напрямую из папки ролевого приложения как …/monitor.js.

Если есть необходимость использовать полный путь ссылок, то из переменной window.location.pathname в javascript можно это выяснить. Например,

<html>
<body>
<h1>Role Application "Def2".<h1>
<div id="abc"></div>
<script>
console.log('1');
(function() {
var path = window.location.pathname;
console.log('path = ', path);
document.getElementById('abc').innerHTML = path;
})();
console.log('2');
</script>
</body>
</html>