July 22, 2024

Введение в классы INCAS


Общие сведения о классах

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

Чтобы создать новый класс, необходимо перейти в раздел Рабочее пространство, и в области Классы объектов нажать кнопку Добавить класс. Появится диалоговое окно с первичными настройками класса:

На этом этапе нужно обязательно присвоить категорию и имя, а также придется определиться окончательно с типом класса.

Классы бывают четырех типов:

  1. Модели данных
  2. Статические модели данных
  3. Модели документов
  4. Модели процессов

Важно: поменять тип класса после подтверждения изменений в этом окне невозможно, поскольку INCAS по-разному инициализирует базы данных для объектов в зависимости от типа класса.

Базовая конфигурация любого класса всегда позволяет настраивать в себе следующие параметры:

Шаблон наименования объекта

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

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

Заявление на увольнение [ФИО]

Разумеется, этот механизм сработает только в том случае, если в классе будет поле с именем [ФИО]. Вместо него подставится то значение, которое было указано в программе.

Показывать карточку объекта

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

Совет: если вы используете систему статусов и состояний, карточку необходимо активировать, в противном случае, у пользователей не будет возможности изменять статусы у объектов.

Пресеты и срезы данных

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

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

Инструмент пресетов выполняет несколько полезных функций:

  1. Разметка данных (пресет порождает срезы для просмотра)
  2. Автоматическое заполнение предопределенных пресетом полей за пользователя и исключение таких полей при редактировании объекта из видимости (для удобства)
  3. Автоматическое обновление всех объектов, привязанных к пресету, при изменении пресета

Важно! INCAS не позволит редактировать напрямую поля, определенные в пресете, в объекте, который к такому пресету привязан.

Не менее важно понимать, что это накладывает небольшие ограничения на массовое ручное редактирование объектов: если выделить объекты, относящиеся к разным пресетам и попытаться открыть их вместе в окне редактирования — INCAS не пропустит это действие и оставит в коллекции редактирования только те объекты, которые подходят под первый обнаруженный пресет:

При включении опции Включить поддержку пресетов у пользователя появится кнопка Определить допустимые поля. На нее нужно обязательно нажать, чтобы отметить те поля, которые впоследствии можно будет использовать в пресетах.

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

Доступ

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

Статусы и состояния

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

При назначении объекту последнего по счету статуса, при условии, что это документ (процесс), программа предложит пометить процесс как завершенный.

Завершенный объект не сможет отредактировать даже его автор. Отменить завершение объекта невозможно.

Завершить процесс может любой пользователь, вне зависимости от настроек класса. Завершенный процесс удаляется из "листа ожидания" автора (если он его туда добавлял).


Поля класса

Поле — это ячейка, хранящая конкретную информацию в определенном виде.

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

Наименование поля должно быть уникальным, не может быть длиннее 30 символов, а также не может содержать символы пробела.

Отображаемое название поля может содержать любые символы, максимальная длина — 50 символов. Если отображаемое название не будет указано пользователем явно, программа присвоит ему значение исходя из значения наименования.

Каждое поле обязательно имеет тип данных. Пользователь должен решить какой из них ему предпочтительнее:

  1. Короткий текст
  2. Многострочный текст
  3. Перечисление
  4. Глобальное перечисление
  5. Объект
  6. Дата
  7. Число
  8. Константа
  9. Глобальная константа
  10. Скрытое поле

Все редактируемые поля (за исключением таблиц) в своих настройках содержат флажок "Обязательно для заполнения". Если установить флажок в положительное значение, пользователь не сможет сохранить или отправить объект в очередь рендеринга до тех пор, пока не заполнит все поля, помеченные в классе как обязательные:

Если обязательное поле не будет заполнено, возможность предпросмотра документа также будет заблокирована.

Короткий текст

Поля короткого текста — самый простой тип заполнения из существующих. Лимит по количеству знаков составляет 120 символов, включая символы пробела. Переносы строк использовать нельзя.

При настройке поля мы можем указать значение по-умолчанию, описание поля (будет показано при создании объекта), а также обязательность поля.

Как выглядит поле с типом заполнения "Короткий текст" на форме редактирования объекта

Многострочный текст

Многострочный текст позволяет вводить более сложную текстовую информацию. Лимит по количеству символов составляет 1200 символов, включая символы пробела. Переносы строки использовать можно.

Многострочный текст позволяет настроить те же параметры, что и короткий текст.

Как выглядит поле с типом заполнения "Многострочный текст" на форме редактирования объекта

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

Перечисление — это ограничение ввода пользователя определенными значениями. Никакие другие, кроме этих, ввести в форму он не сможет, что может быть очень полезно.

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

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

Как выглядит поле с типом заполнения "Перечисление" на форме редактирования объекта

Глобальное перечисление

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

В настройках нам нужно лишь выбрать глобальное перечисление из списка существующих.

Как выглядит поле с типом заполнения "Глобальное перечисление" на форме редактирования объекта

Объект

Классы могут ссылаться на другие классы — это очень полезное свойство INCAS.

Для того, чтобы объяснить INCAS, объекты какого класса ему нужны, существует система привязок. Привязка обязательно включает в себя собственно класс и его поле, которое будет выводиться на форме.

Важно: при удалении поля в классе, INCAS обязательно проверяет так называемые обратные ссылки — привязаны ли поля других классов на удаляемое поле. Если хотя бы одна обратная ссылка будет обнаружена, программа не даст удалить это поле.

Такое сообщение будет показано пользователю при попытке удалить поле, на которое ссылаются поля других классов

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

Как выглядит поле с типом заполнения "Объект" на форме редактирования объекта

Довольно важным дополнением ко всему вышесказанному станет и другая полезная особенность объектов: если мы создаем документ, мы можем использовать все поля объекта, а не только то, к которому привязались.

Например, представим ситуацию: у нас есть два класса — Приказ о приеме работника на работу и Физическое лицо. В поле Сотрудник мы ссылаемся на класс Физическое лицо и поле ФИО. Если нам потребуется в приказе указать какие-то еще данные, помимо ФИО сотрудника, например, дату его рождения, мы сможем это сделать путем обращения к полю класса через точку. Если поле, хранящее привязку к классу Физическое лицо, называется Сотрудник, то мы сможем обратиться к полю этого класса Дата рождения таким образом: [Сотрудник.Дата_рождения].
Мы также можем сделать и другой вывод: если мы привязываемся к классу А и полю Б, то в шаблоне документа запись [А] будет аналогична записи [А.Б].

Дата

Дата позволяет пользователю набирать дату в формате ДД.ММ.ГГГГ или выбирать ее из выпадающего окна, а получать в том формате, в котором необходимо (очень актуально для документов, где требуется вывод даты в формате, например, "15" сентября 2024 года).

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

Как выглядит поле с типом заполнения "Дата" на форме редактирования объекта

Число

Если мы точно знаем, что вводимые данные ограничены исключительно числовым форматом, нам следует использовать тип заполнения "Число".

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

Как выглядит поле с типом заполнения "Число" на форме редактирования объекта

Константа

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

В настройках единственным параметром будет ее значение.

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

INCAS гарантирует, что значение константы будет проставлено в документ в неизменном виде и ничто, включая пользовательские сценарии, не сможет это значение изменить. Единственный способ изменения значения константы — это его изменение на уровне настроек класса.

Глобальная константа

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

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

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

Скрытое поле

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


Модели документов

Класс типа "Модель документа" отличается от модели данных тем, что помимо указанных выше возможностей, предоставляет возможность привязки шаблонов к классу.