Панель додаткових інструментів для розробника на InterSystems IRIS

Панель додаткових інструментів для моніторингу та дослідження помилок додатків та інтеграційних рішень на платформі даних InterSystems IRIS, інтеграційній платформі Ensemble та СУБД Caché, або історія ще одного велосипеда.

У цій статті я хочу розповісти про додаток, яким, поряд зі стандартними засобами адміністрування, користуюся щодня при моніторингу додатків та інтеграційних рішень на платформі InterSystems IRIS та знаходженні помилок при їх виникненні.
Рішення включає перегляд та редагування глобальних масивів, виконання запитів (включаючи JDBC/ODBC), відправлення результатів пошуку електронною поштою у вигляді архівованих XLS-файлів. Перегляд об'єктів класів із можливістю редагування. Декілька простих графіків за протоколами системи.

Це CSP-додаток, на основі jQuery-UI, chart.js, jsgrid.js
Якщо цікаво, то прошу під кат і в репозиторій.

Все почалося з вивчення питання, як логувати зміни об'єктів у InterSystems IRIS, Ensemble та СУБД Caché.

Прочитавши чудову статтю про це, я форкнув проект. і почав його допилювати для своїх потреб.

В результаті вийшло рішення, яке реалізовано як панель підкласу %CSP.Util.Pane, в якому є основне вікно для команд та кнопка «Виконати» плюс налаштування уточнень для команд.

При введенні "?" отримуємо короткий опис цих команд:

Панель додаткових інструментів для розробника на InterSystems IRIS

Глобали

Найчастіша моя команда — перегляд глобалу. Як правило, це глобал протоколу при налагодженні свого або чужого проекту. Його можна подивитися і у зворотному порядку, а також наклавши фільтр як на посилання, так і на дані. Знайдені вузли можна редагувати та видаляти:

Панель додаткових інструментів для розробника на InterSystems IRIS

Можна видалити весь глобал, ввівши в команді після імені мінус ^logMSW-
Але видалити так можна лише глобали, що починаються на ^log (протокольні глобали), тобто. реалізовано обмеження від випадкового видалення.

Якщо після імені вводити "*", то отримаємо список глобалів з додатковими характеристиками. Друга "*" - додасть нове поле "Allocated MB", а ще одна зірочка - "Used MB" Це об'єднання двох звітів і поділ на "зірочки" зроблено, щоб розділити звіт, що часто довго формується, по зайнятих блоках великих глобалів.

Панель додаткових інструментів для розробника на InterSystems IRIS

З цієї таблички можна за активними посиланнями перейти до перегляду самого глобалу або його перегляду/редагування стандартним способом з порталу управління клікнувши в поле Permission на R або W.

запити

Конвертування звіту у формат Excel

Друга функція, частотою використання, це виконання запитів. Для цього sql-ствердження вводимо як команду.

Основне, чого мені вистачало в стандартному Порталі керування системи, це виконання запитів щодо налаштованих в СУБД JDBC-/ODBC-джерел і виведення результатів у форматі XLS, архівування та надсилання файлу на пошту. Для цього в моєму інструменті перед виконанням команди потрібно включити чек-бокс "Вивантажити файл Excel".

Ця можливість заощаджує мені багато часу в повсякденній текучці, а готові модулі я успішно вбудовую в нові програми та інтеграційні рішення.

Панель додаткових інструментів для розробника на InterSystems IRIS

Але для цього потрібно налаштувати шлях створення файлів на сервері та облікові дані користувача та поштового сервера, для цього в свою чергу потрібно редагувати вузли глобалу налаштування програми ^%App.Setting.

Панель додаткових інструментів для розробника на InterSystems IRIS

Збереження звітів у глобалі

Найчастіше потрібно результати виконання звіту зберегти у глобалі. Для цього я застосовую процедури:

Для JDBC:
##class(App.sys).SqlToDSN

Для ODBC:
##class(App.sys).SaveGateway

Для SQL виразів:
##class(App.sys).SaveSQL

Для Query:
##class(App.sys).SaveQuery

Наприклад, якщо в панелі командою
xec do ##class(App.sys).SaveQuery("%SYSTEM.License:Counts","^GN",0)
збережемо в масиві ^GN результат запиту підрахунку використання ліцензій, а подивитися, що зберегли на панелі можна командою: result ^GN("%SYSTEM.License:Counts",0)

Панель додаткових інструментів для розробника на InterSystems IRIS

Модулі доповненої функціональності

І друге покращення, яке сильно спростило та автоматизувало мені роботу — це реалізація можливості виконувати спеціально написані модулі при формуванні кожного рядка запиту. Цим самим я можу на льоту за один прохід вбудовувати у звіт новий функціонал, наприклад активні посилання для додаткових операцій над даними.

Приклад 1: Робота з класом App.Parameter

Створити параметр через "Таблічний навігатор"

Редагувати параметр через "Параметри"

Панель додаткових інструментів для розробника на InterSystems IRIS

Приклад 2: Перегляд глобалу за посиланням «Історія»

Панель додаткових інструментів для розробника на InterSystems IRIS

Графіки

Під враженням від статті [9] та для візуалізації зростання баз даних створено сторінку, на яку виводиться помісячний графік розмірів баз даних, створений за файлом iris.log(cconsole.log) за записами Expand ретроспективно від поточного дня.

Для прикладу ще створено графік подій у InterSystems IRIS, який також формується за файлом протоколу:

Панель додаткових інструментів для розробника на InterSystems IRIS

Посилання на матеріали:

[1] підсистема логування у Каші
[2] Каша швидкого приготування – робимо CRUD у Caché за допомогою jqGrid
[3] Альтернативні SQL-менеджери для СУБД Caché
[4] Приклади генерації та відправлення Email засобами СУБД Caché
[5] Cache+jQuery. Швидкий старт
[6] Розгортання додатків
[7] UDL-підтримка
[8] Перегляд глобалів у Порталі Управління СУБД Caché
[9] Prometheus з Caché
[10] Локалізація в СУБД Caché

Дякую авторам цих та інших статей, які допомогли мені створити цей інструмент.

PS Цей проект розвивається і багато задумів ще не реалізовано. Найближчим часом планую зробити:

1. Шаблон програми на фреймворку uikit
2. Автодокументування коду форматом Doxegen з інтеграцією в CStudio

Джерело: habr.com

Додати коментар або відгук