New version QSystem 21.1 is available!

twitter  

Функциональность QSystem

 API

Иногда необходимо реализовать взаимодействие с СУО QSystem программно из другой программы или системы. Это полезно для интеграции, получения каких-то данных из СУО. Рассмотрим пути как это можно сделать. API взаимодействия с сервером СУО основано на открытом протоколе на основе Json. По этому все что требуется программисту для работы с API это знание что такое формат Json, как с ним работать и описание самих протоколов взаимодействия. Про Json можно узнать из множества сетевых ресурсов, например, http://www.json.org/

Библиотека для использования API из Java.

На Google Code выложена библиотека QAPI.jar. Добавляйте ее к себе в проект и отправляйте запросы к серверу QSystem. Требуется Java7. Пример:

QConfig.setCfg(config);

RpcGetAllServices.ServicesForWelcome sw = NetCommander.getServiсes(new INetProperty() {...});

System.out.println(sw.getRoot().getChildren());

Схема взаимодействия с сервером QSystem.

Сервер СУО QSystem принимает команды и отвечает. Передать команду можно двумя способами. Первый - по TCP, второй - по HTTP. Второй способ нужен если нет возможности использовать обычное сетевое TCP соединение, для этого нужно при старте сервера СУО добавить параметр -http <port>. Этот параметр указывает, что при старте сервера запустится встроенный http-сервер и он сможет принимать соединения. В любом случае нужно свормировать json-сообщение и передать его в сервер СУО, после этого ожидать ответа. Ответ выдается тоже в формате json.

Изучения протокола взаимодействия.

Протокол взаимодействия основан на JsonRPC2.0 Все json-структуры для взаимодействия изучаем самостоятельно. Для этого изучаем логи. К примеру, удалим все старые логи, запускаем сервер СУО. В логе qsys.log пока ничего интересного нет. Теперь запустим приложение пункута регистрации. Теперь видим в логе запрос на сервер СУО и ответ.

 ...
 [TRACE] Задание "Получить перечень услуг" на 127.0.0.1:3128# {"jsonrpc":"2.0","id":"1346999224565","method":"Получить перечень услуг"}
...
 [TRACE] Ответ: {"result":{"root":{"id":1,"status":1,"point":0,"advance_limit":1, ...
...

 Изучаем структуру запроса и ответа, формируем аналогичные вещи в своей программе. Для изучения json и форматирования удобно пользоваться этим сервисом.

 

Работаем с QSystem