Терминология

В рамках Системы комплексной автоматизации "Оберон" сложилась некоторая терминоголия, понимание которой сильно упростит и понимание системы в целом.

Сущность

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

Система может одновременно оперировать неограниченным количеством сущностей. Сущности описываются в АРМе Технолога. Со временем количество сущностей и их наборы атрибутов (реквизитный состав) могут изменяться.

Сущности системы могут быть логически связаны между собой. Например, в системе, где есть сущность "Балансовый счет", может быть сущность "Остаток на балансовом счете", объектом которой будет остаток на некотором счете по состоянию на конец некоторого операционного периода (дня или месяца). Понятно, что каждые объект сущности "Остаток" связан с некоторым объектом сущности "Счет". С каждым объектом сущности "Счет" связано, в общем случае, много объектов сущности "Остаток". Это классическая связь "Один ко многим".

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

Для физической имплементации каждой описанной сущности АРМ Технолога строит, помимо таблицы базы данных, еще и некоторую обвязку, которая, в зависимости от используемой СУБД, состоит из нескольких хранимых процедур, а также набор представлений (view) для каждого из описанных гридов сущности.

Помимо уже упоминавшихся атрибутов и гридов, для каждой сущности описывается также набор ключей, форм и лукапов. Описание сущностей и их компонентов, а также ведение истории их изменения выполняется в АРМе Технолога. Физически это описание хранится на жестком диске в файлах формата XML.

Атрибут (поле) сущности

Атрибут, или поле, или реквизит сущности описывает один из параметров объекта (экземпляра) сущности, которыми он может отличаться от других объектов той же сущности. Каждая сущность может иметь неограниченное количество атрибутов.

Для каждого атрибута определяется тип значения, которое этот атрибут может содержать - строка, целое число, сумма, дата и т.д. Тип значения определяет тип поля базы данных, в котором будет храниться значение атрибута, а также экранное представление атрибута при визуализации объекта в пользовательском интерфейсе. Бывают и атрибуты, содержащие графическое изображение.

Помимо типа значения, атрибуты сущности делятся на хранимые, лукапные и вычислимые.

Хранимому атрибуту соответствует поле таблицы, выделенной для хранения объектов сущности, к которой относится атрибут, и его значение хранится там.

Значения лукапных атрибутов автоматически извлекаются системой из таблиц, соответствующих сущностям, связанным с той, к которой относится лукапный атрибут. Правила, по которым производится связывание сущностей и их атрибутов, задаются при помощи механизма лукапов.

Значения вычислимых атрибутов автоматически вычисляются системой при помощи макрозадания триггерного входа.

Каждая сущность ОБЯЗАТЕЛЬНО имеет поле с типом значения "Целое число" с идентификатором "0" и мнемоническим именем "Id". Это поле при создании экземпляра сущности следует оставлять пустым, его значение будет автоматически присвоено системой, и будет содержать уникальный (в рамках сущности и в рамках узла системы) идентификатор объектов. При пересылке объекта с узла на узел система предпринимает специальные меры для перекодирования идентификатором объектов с целью их корректного использования на всех узлах системы.

Грид

В простом случае грид служит для представления перечня экземпляров сущности. Физическим представлением грида в базе данных является представление (view), которое автоматически генерируется АРМом Технолога по мета-данным прикладной системы. Создавая представление, АРМ Технолога производит связывание сущностей в соответствии с правилами, описанными при помощи механизма лукапов, таким образом, поля представления соответствуют не только хранимым, но и лукапным полям.

У сущности может быть описано неограниченное количество гридов. В каждом конкретном гриде не обязаны присутствовать все поля сущности.

Грид может быть использован как для визуализации, так и для получения доступа к перечню объектов из макрозадания. И в том, и в другом случае перечень объектов может быть гораничен и может быть задан порядок их следования.

Одним из способов сужения выборки объектов является параметризация грида. Например, грид остатков по счетам может быть параметризирован счетом - в том случае, если сущность "Остаток по счету" содержит хранимое или лукапное поле с типом значения "Целое число", содержащее идентификатор связанного объекта сущности "Счет". В этом случае грид параметризируется идентификатором объекта типа "Счет" - и на выходе получается срез остатков заданного счета.

Помимо простого случая, когда грид служит для вывода перечня экземпляров сущности, грид может быть агрегированным. В этом случае одному или нескольким полям грида в АРМе Технолога устанавливается атрибут "Агрегация в процедуре" в одно из значений - "Сумма", "Минимум", "Максимум", "Количество", "Среднее". Если в гриде нет неагрегируемых полей, то в таком гриде всегда будет только одна строка - соответствующие значения агрегации по полям грида в целом по всем объектам сущности. Если в гриде присутствуют поля, агрегация в которых задана не была, то значение грида будет сгруппировано по значениям этих полей и агрегация будет проводиться в разрезе этих значений. Агрегированные гриды также могут параметризироваться, к ним можно применять сужения и порядок следования строк.

Форма сущности. Панель

Форма сущности служит для визуализации в пользовательском интерфейсе объекта сущности. Для каждой сущности может быть описано много экранных форм. В конечном приложении объект может быть открыт в любой из форм как в режиме просмотра, так и в режиме редактирования.

Единицей экранной формы является поле формы. Как правило, поле формы связано с полем сущности. Помимо поля сущности, которое в нем отображается, поле формы характеризуется типом экранного элемента (поле для ввода значения, поле для ввода многострочного текста, специализированное поле для ввода даты или времени, поле просмотра графического изображения и т.д.) и его расположением на экранной панели.

Все поля формы располагаются на панели. В АРМе Технолога существует специальный режим редактирования панели экранной формы сущности. На этапе эксплуатации конечного приложения, заранее разработанная панель экранной формы может быть использована для вывода на экран в самостоятельном окне типа "Панель" или для использования в "подвале" для отображения текущего объекта в окне типа "Грид". Варианты использования панели экранной формы описываются при помоща АРМа Администратора

Помимо полей формы, связанных с полями сущности, бывают еще два типа полей. Первый из них - это квази-поля, описывающие "декоративные" элементы экранной формы: линии, строчные литералы, панельки.

Второй - это мини-гриды, в которые выводятся мини-гриды связанных сущностей.

Большинство полей формы располагаются на панели экранной формы. Однако, форма сущности может содержать одно или несколько полей типа "Многострочный текст" или "Связанный грид", которые располагаются в "подвале" экранной формы. "Подвал" имеет ту отличительную особенность, что его размеры изменяются вместе с размерами окна. Если полей формы, расположенных "в подвале", более одного, то в "подвале" создается несколько "закладок", на каждой из которых располагается одно экранное поле "подвала".

Иерархия сущностей

Сущности системы могут быть связаны между собой связью типа "Один к многим". При этом может оказаться, что эти связи выстраиваются в цепочку, например, сущности "Область", "Район", "Населенный пункт", "Улица" представляют собой классическую цепочку, постепенно детализирующую адрес.

В АРМе Технолога есть режим, позволяющий описать такие цепочки сущностей прикладной системы. В рамках СКА "Оберон" они называются иерархиями сущностей. Первая, самая "общая" сущность иерархии называется корневой, последняя - листьевой.

На этапе эксплуатации прикладной системы, построенной базе СКА "Оберон", иерархия сущностей может быть использована для отображения всего "дерева" объектов всех сущностей иерархии и/или выбора объекта листьевой сущности. Для этого в АРМе Пользователя предназначена экранная форма типа "Иерархия", разделенная на два поля: в слевом, в "дереве" располагаются объекты всех сущностей кроме листьевой (на первом уровне "дерева" располагаются объекты корневой сущности, которых по определению не может быть много, при "открытии" узла "дерева" открываются объекты следующей сущности иерархии, связанные с объектом "открываемого" узла); в правом поле экрана располагается грид объектов листьевой сущности, связанных с текущим объектом предыдущей сущности иерархии.

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

Рекурсия

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

Для визуализации рекурсивной сущности в Системе комплексной автоматизации "Оберон" предусмотрена специальная экранная форма типа "Рекурсия", внешне напоминающая экранную форму типа "Иерархия" с той разницей, что правое поле экранной формы содержит не грид "листьевой" сущности, а панель указанной формы сущности, в которой отображается текущий элемент "дерева" из левого поля.

Пользовательский диалог

Пользовательские диалоги описываются в АРМе Технолога, в отдельном режиме. Внешне они имеют много общего с экранной формой объекта, но не предполагают связи экранной формы с некоторым объектом базы данных.

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

Внутренним представлением пользовательского диалога является объект Dialog, экспортированный в макроязык исполняющим ядром СКА "Оберон".

Перечисление

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

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

Перечисления описываются в АРМе Технолога и хранятся в файлах формата XML вместе с прочими метаданными прикладной системы.

Активный отчет

Активный отчет описывается в АРМе Технолога, хранится с метаданными прикладной системы и используется для вывода на экран результатов выполнения и организации простейшего пользовательского диалога, в рамках которого могут быть осуществлены дополнительные действия (например, осуществлена детализация выбранного пользователем фрагмента отчета).

Активный отчет состоит из разделов и переменных отчета. Разделы, в свою очередь, содержат поля, расположенные определенным образом на панели раздела. На этапе выполнения отчета формируется его экранное представление, состоящее из последовательно выведенных в выходной спул разделов с предварительно заполненными полями и переменными. Над этим экранным представлением, по окончании выполнения отчета, организуется пользовательский диалог. Один раздел отчета может быть выведен в выходной спул и, соответственно, попасть в экранное представление многократно, с различными или одинаковыми значениями полей и переменных.

Поля раздела активного отчета имеют визуальное представление в рамках графической модели раздела. Переменные отчета заполняются на этапе выпуска отчета и фиксируются в таком состоянии на время выполнения пользовательского диалога над его экранным представлением.

На этапе выполнения пользовательского диалога над выпущенным и выведенным на экран в специальной оконной форме активным отчетом, вызываемые через триггерные точки входа отчета макрозадания имеют доступ как к значениям полей раздела, так и к значениям переменных, активным на момент вывода соответствующего раздела в выходной спул.

Внутренним представлением активного отчета является объект ActRep, экспортированный в макроязык исполняющим ядром СКА "Оберон".

© СКА -=Оберон=-