Для отправки данных на клиент нужно добавить следующий скрипт в index.html файла:
<script src="http://vnext/mlk/audit/scripts.js"></script>
, где http://vnext/mlk имя базового сервиса.
Особенности скрипта:
- для передачи данных запрос должен быть авторизован
- требуется передавать объект в определенном формате
Пример:
var provider = new __audit({ // (1)
baseUrl: 'http://vnext/mlk',
login: AuthProvider.getUserName(),
token: AuthProvider.getToken(),
app_id: 'my-app'
});
provider.single(type, message || ''); // (2)
// или
provider.many([{type: '', message: ''}]); // (3)
Для инициализации (1) аудита нужно передать следующие параметры:
- baseUrl: string — базовый адрес службы
- login: string — логин пользователя
- token: string — авторизация
- app_id: string — имя приложения
После инициализации можно воспользоваться двумя методами:
- single: (type:string, message: string) — добавление одного события, где type — тип события, message — описание. Например: (‘sign in’, ‘вход пользователя’).
- many: (any[]) — добавление массива событий
Пример кода на ExtJS:
/**
* компонент для передачи информации о действия пользователя. Для корректной работы нужно убедиться, что коды клиента соотвествуют кодам сервера
* @class IServ.Audit
* @unittest
* @example
* Audit.action(code, txt);
*/
Ext.define('IServ.Audit', {
singleton: true,
alternateClassName: ['Audit'],
provider: null,
buffers: [],
/**
* загрузка удаленного скрипта для выполнения команд
*/
load: function () {
if (Utilits.getConf('audit') == true) {
var audit_url = Utilits.getConf('remote_service_url') + Utilits.getConf('virtual_dir_path') + Utilits.getConf('audit_url');
if (audit_url) {
var me = this;
Ext.Loader.loadScript({
url: audit_url,
onLoad: function () {
if (__audit) {
me.provider = new __audit({
baseUrl: Utilits.getConf('remote_service_url') + Utilits.getConf('virtual_dir_path'),
login: AuthProvider.getUserName(),
token: AuthProvider.getToken()
});
}
}
});
}
}
},
/**
* действия
* @param {string} type код действия
* @param {string} message текст действия. Может не указываться
*/
action: function (type, message) {
if (Utilits.getConf('audit') == true) {
try {
if (this.provider) {
if (message != null || message != undefined)
message = message.toString();
this.provider.single(type, message || '');
if (this.buffers.length > 0) {
this.provider.many(this.buffers);
this.buffers = [];
}
} else {
this.buffers.push({
type: type,
message: message
});
}
} catch (exc) {
}
}
}
});