Category: архитектура

Category was added automatically. Read all entries about "архитектура".

Объектная модель сибеля. Архитектура

Здесь только моё видение и в мелочах оно может быть ошибочно. Здесь только общая информация. Которую, вдобавок, легко получить читая документацию.
С другой стороны это может сильно помочь начинающим быстрее вникнуть в архитектуру сибеля.


Итак, у нас есть таблицы в базе данных. Каждая запись в любой таблице имеет несколько обязательных полей. Как-то её уникальный в пределах всей базы ай-ди(Row Id), "время последнего обновления записи", "кто последний обновил эту запись" и так далее.

На основе одной или нескольких таблиц создаются бизнес компонента (БК). По сути БК это некоторые объекты из реального мира. Например есть БК "Контакт" хранящий информацию о контактных лицах или БК "счёт" или БК "мои настройки" где каждая строка это набор настроек, которые можно получить зная ай-ди записи в таблице настроек и так далее. БК связаны между собой так называемыми связями (Link). Связи бывают разные "один к одному", "многие ко многим" и так далее. Например БК "Контактное лицо" связан с БК "документ" отношением один ко многим ибо у одного человека может быть куча документов, как то права, паспорт или ещё один паспорт.
Также нужно знать, что два БК могут быть реализованы на одной таблице и содержать различные (возможно пересекающиеся частично или полностью) столбцы из базовой таблицы и одинаковые или различные записи из этой таблицы (для БК можно задать фильтр по которому будут отбираться из базовой таблицы записи принадлежащие этому БК).

На основе одного (что глупо) или нескольких (что правильно) БК создаётся один бизнес объект (БО). По сути БО это логическое объединение БК. Например есть у вас БО "Счёт" включающий в себя два БК "Счёт" и "Контактное лицо". Таким образом получив в коде БО "Счёт" и взяв из него БК "Счёт" для определённого счёта по его уникальному номеру счёта (то есть найдя нужный нам счёт). Мы берём из БО "Счёт" БК "Контактное лицо" и получаем контактные лица именно для уже найденного счёта. Понимаете? Разумеется чтобы оно так работало между бк счёт и лицо должны быть настроенные должным образом связи.

Вот схемка иллюстрирующая описанное выше
1

Идём далее.
Иерархия фиговин, предназначенным для отображения информации на экране.
Как вам должно быть уже известно сибель работает через апач-сервер. И тонким клиентом к нему является стандартный веб-браузер IE.

Итак, у нас БК. на основе одного БК рисуется так называемый аплет, который может иметь несколько шаблонов (templete) в терминологии сибеля. Аплеты бывают разных типов, но главные из них два: форм-аплет и лист-аплет, отличающиеся только формой представления информации (в виде форма или в чём-то подобном таблице).

Аплеты сами по себе не могут быть показаны на экране. Они должны объединяться в представления (view). В представления могут быть обледенение только аплеты построенные на базе тех БК, которые включены в один БО. Отношения вида "master-detail" между аплетами на одном представлении реализуются автоматически, если реализованы соответствующие связи между БК. Другими словами представления состоят из аплетов и создаются на базе одного БО.

Одно или несколько представлений включаются в экран (Screen) это как раз те фиговины, которые вы видите в окне навигатора. Также экраном являются каждая вкладка открывающаяся при запуске сибеля.

Экраны объединяются в приложения (application). Конкретное приложение указывается в настройках сибель-сервера (cfg-файлы) и не может быть сменено без перезапуска сервера. Что-то вроде конфигурации в 1с-ке.

Но и это ещё не всё, что я хотел бы затронуть в нашем "галопах по европам".
Некоторые непонятности вызывает иерархия скриптов запускающихся при нажатии какой-то рукотворной кнопки или по иному событию.
Скрипты бывают двух видом: браузерные (выполняющиеся на стороне клиента, то есть внутри веб-браузера) и серверные (выполняющиеся на стороне сервера).
В браузерных скриптах можно изменить имя отображаемого поля, спрятать или показать картинку и так далее. Также можно вызывать другие скрипты, БС или передавать данные в серверный скрипт.
В серверных скриптах можно делать всё, что угодно с объектами сибеля.
Всегда, для любого объекта, сначала запускается бразуерный скрипт, потом серверный. Точнее ищется метод по имени сначала в браузерных скриптах, потом в серверных.
Следует понимать, что скрипты могут быть написаны почти для любого объекта, для аплета, для БК и так далее.
Например если вы на аплете нажали кнопку вызывающую какой-то метод, то он ищется сначала в бразуерных скриптах аплета, потом в его серверных скриптах, потом в браузерных скриптах БК на основе которого сделан аплет, потом в его серверных скриптах.