Клиент (Ultima-S.exe) работает исключительно через объектный протокол обмена. Приведем его типичные действия, ниже описаны таблицы объектного протокола.
Действие | Вызов API процессора событий с клиента | Рассылаемое событие процессором | Примеры хранимых процедур сработавших как обработчики события ('Doc' – базовый класс) | Используемая таблица для обмена данными между клиентом и сервером |
Получить список объектов в ветке дерева | exec FillTree @Folder | Обрабатывается ядром, ядро читает структуру из Docs, также обрабатывает фильтрующие папки и колонки дополнительной информации об объектах | Tree | |
Получить свойства объекта | exec GetProperties @UDN | getp | edit_getp_Doc_ edit_getp_MyClass_ |
Properties |
Создать новый объект класса MyClass и получить его пустую форму | exec GetSchema 'MyClass' | gets | edit_gets_Doc_ edit_gets_MyClass_ |
Detailed |
Вызвать объект на редактирование (получить форму с данными) | exec DoDetail @UDN, 'edit' | edit | edit_read_Doc_ edit_read_MyClass_ |
Detailed |
Записать объект | exec PutDown @UDN | put | edit_put_Doc_ edit_put_MyClass_ |
Detailed |
Подробное описание таблиц обмена будет приведено в последующих публикациях.
Таблица для обработки дерева объектов
CREATE TABLE #Tree (
u int,
No smallint,
Typ smallint,
ClassName varchar (32),
UDN int,
Stamp binary (8),
Dat datetime NULL,
Number varchar (128) NULL,
Name varchar (255) NULL
)
GO
Таблица для обработки свойств объекта
CREATE TABLE #Properties (
u int,
No smallint,
ProcName varchar (32),
Name varchar (128),
Flag smallint
)
GO
Таблица для обработки форм (данных) объекта
CREATE TABLE #Detailed (
u int,
UDN int,
No int,
Lev smallint,
ValueId varchar (32),
ValueFormat varchar (255),
ValueType smallint,
IntValue int NULL,
StringValue varchar (255) NULL,
DateValue datetime NULL,
FloatValue float NULL,
MoneyValue money NULL,
IntOld int NULL,
StringOld varchar (255) NULL,
DateOld datetime NULL,
FloatOld float NULL,
MoneyOld money NULL,
AccMode smallint,
Recycable smallint,
Stamp binary (8) NULL,
ChangeMode smallint NULL,
DocName varchar(128) null,
DocClass varchar(32) null
)
GO