Контролер
Документ "Контролер" призначений для створення обробників дій користувача, які виконуються при взаємодії користувача з представленнями, які розташовані на графічних інтерфейсах. Контролери можуть виконувати як просту логіку з одним - двома типами операцій так і багатоцільовий сценарій роботи.
X-Fiber
використовує підхід "Композиція" при створені контролерів. Так, валідація даних можлива лише в документі
"Валідатор", а функції запиту по мережі тільки в документі "Картограф" тощо. Цей підхід полягає в групуванні
бізнес-логіки обробника на стадії і віднесенні цих стадій до відповідних документів.
Архітектура
При потребі створення системних обробників дій чи подій, або обробників дій чи подій кінцевого користувача, необхідно створити документ "Контролер" з переліком необхідних методів.
Документ "Контролер" повинен бути зареєстрований в документі "Реєстр" предметної області, який в свою чергу повинен бути зареєстрований в відповідному сервісі включеному до бізнес-схеми. Це гарантує, що при запуску ядра обчислень будуть завантажені всі функції контролера. Функції контролера необхідно використовувати в графічних представленнях предметних областей. Відповідно при використанні графічного представлення та безпосередньої взаємодії кінцевого користувача з відповідним блоком розмітки, де задіяна функція контролера, ця функція виконається.
При запуску програми веб-клієнта відбудеться завантаження бізнес-схеми в ядро відображень формуючи знімок бізнес-схеми. Після чого відбувається візуалізація сторінки запиту. Якщо на сторінці запиту наявні представлення з використанням контролерів, та кінцевий користувач зробить дію виклику, то контролер цієї дії виконається.
Дії та обробники подій, такі як onClick
, onSelect
тощо, повинні описуватись в рамках функцій контролера.
Склад
Помічник відображає структуру даних у форматі "ключ-значення", де кожен ключ відображає назву функції, а йому відповідає власне сама функція. Цей підхід дозволяє зручно організувати та керувати функціональними можливостями системи, заб езпечуючи швидкий доступ до потрібного функціоналу через імʼя функції як ключ.
Аргумент агентів функціональності
Аргумент агентів функціональності являє собою обʼєкт з переліком агентів:
type IFunctionalityAgent = {
// agent functionality description
}
type ISchemaAgent = {
// agent functionality description
}
export type Agents = {
fnAgent: IFunctionalityAgent;
schemaAgent: ISchemaAgent;
};
де:
fnAgent
- агент з переліком просторів імен функціональності, які надають функціональні компоненти ядра обчислень.schemaAgent
- агент з переліком функціональності для доступу до інших складових бізнес-схеми.
Деталі структури кожного агента функціональності описується в розділі "Агенти"
📄️ Агент функціональності
📕 Опис можливостей агента функціональності
📄️ Агент бізнес-схеми
📕 Опис роботи агента бізнес-схеми
Аргумент контексту
Опис контексту виконання контролера знаходиться в активній розробці.
Аргумент даних
Функція контролера може як потребувати дані для виконання, так і здійснювати логіку без даних. Структура даних функції контролера визначається бізнес-логікою та безпосереднім застосуванням цієї функції.
Результат
Результат виконання контролера може мати результат, або може нічого не повертати, при цьому сама функція контролера може бути як синхронна, так і асинхронна. Структура результату виконання контролера визначається бізнес-логікою та безпосереднім застосуванням цієї функції.
Реалізація
Опис реалізації знаходиться в активній розробці.
Реєстрація
Щоб успішно використовувати функції контролера, документ "Контролер" повинен бути зареєстрований в документі "Реєстр"
цієї
предметної області. Наприклад для предметної області - агрегат "Користувачі", необхідно в опис документів функції
setRegistry
для встановлення посилання на контролер та інші компоненти модуля:
import {setRegistry} from '@x-fiber/display';
import {BusUsersAggController} from './BusUsers.controller';
type BusDomains = 'BusUsersAgg' | 'BusUsersAuthSpec'
export const BusUsersAggPointer = setRegistry<BusDomains>('BusUsersAgg', {
controller: BusUsersAggController,
// ... other documents
});
Використання
Опис використання функцій контролера в графічних представленнях знаходиться в активній розробці.