3. Объектная модель в ELMA BPM

Разрабатывая бизнес процессы в ELMA BPM — информацию о объектах участвующих в процессе хранят новой объектной модели.

Новые объекты в ELMA

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

Качество объектной модели влияет на скорость работы ELMA и удобство работы объектами и ELMA BPM

В зависимости от того кто делает объекты и какие цели перед собой ставит — получается кардинально отличающаяся объектная модель

  • Разработчики — создают больше связанных объектов для хранения (они знают некоторую правду)
  • Аналитики — создают большие (по количеству полей) объекты, даже не связанные по логике

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

  • Внедренцы — зависит от опыта — чаще делают ближе к аналитикам

Цели объектной модели ELMA BPM

Помните для чего вы делаете объектную модель и думайте на два и на три шага вперед.

Цели — для чего создается правильная объектная модель

  1. Аналитика — правильная структура, дополнительная информация — плюс для статистики работы компании 
    • на основе статистики — улучшают процессы внутри компании
  2. История изменений (версионность) — данные устаревают, но должны отвечать на вопрос:
    • на основе чего год назад мы приняли решение выдать кредит ООО «Ромашка»?
  3. Предотвращение ошибок — больше таблица — выше риск возникновения блокировок (подробнее тут )
    • чаще это касается задач и контрагентов ELMA
  4. Скорость — если много связей «в глубину» — много дополнительных запросов для связанных объектов 
    • для этого нужно оптимизировать запросы в базу данных
  5. Удобство —  удобство для разработки, для пользователя, для ELMA
    •  выбирайте последнее — иначе возникнут проблемы у пользователей и у разработчиков
Письмо, Звонок и Встреча — взаимоотношения

Правильный подход

Имея опыт внедрения ELMA BPM предостерегу — заказчику важно чтобы ELMA работала.

Поэтому строить объектную модель в ELMA нужно постоянно задавая вопрос

— Почему так? и для чего? 

И закладывая фундамент для логичного развития ELMA BPM.

Если лепить — «и так сойдет», потом разберемся — останетесь — «у разбитого корыта».

Большая таблица — проблема, повезет если это крайне редкий процесс

Не продумав фундамент — начнутся проблемы, с производительностью, с доработкой ELMA и далее по наклонной.

Я расскажу как делать правильно на основе ошибок которые встречал и которых удавалось избегать.

Правила объектной модели

Соблюдайте правила построения объектной модели ELMA BPM

Объектная модель должна быть максимально близкой к реальной

Так она будет структурирована и удобна для аналитики.

1. Сохраняйте стандартную объектную модель ELMA BPM

Не добавляйте в стандартные объекты дополнительные поля без крайней необходимости

  • Не добавляйте в контрагента поля вроде «является ИП» — это решается организационно правовой формой

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

  • если контрагент —  клиент, поставщик, агент (и/или) — создайте карточки «Агент», «Поставщик» и поместите туда специфичные поля, и в контрагента добавьте ссылки
Поля явно не для каждого контрагента — плохо для совместной работы транзакций

2. Создавайте объекты «версии» 

Создавайте отдельные объекты для полей которые влияют на расчеты, на риски —  «версии».

Например:

  • Данные по арбитражным делам клиента
    • ситуация у клиента изменится — и указав в расчете версию — будет ответ почему мы решили заключить сделку
  • Данные по комплектации автомобиля
    • стоимость изменилась паралельно заключению сделки — в коммерческом предложении останется та сумма на которую договаривались
При согласовании — будет указана согласованная версия документа

3. Используйте объекты и перечисления

Перечисления — если список конечный и ожидаемо не изменится.

Перечисление — не хранится в базе данных и варианты редко меняются

Объекты — если список периодически обновляется.

Объекты — редактируются пользователями

Используйте документы ELMA BPM только при необходимости — если у вас документ который требует полного функционала документооборота

  1. Существует реальный файл (документ)
  2. Документу требуется версионность (файлов)
  3. Он требует регистрации или согласования стандартным функционалом ELMA BPM

Требуется только для хранения файлов — создайте новый объект и используйте объект вложение.

Например:

  • Коммерческое предложение — делать документом целесообразно если у него несколько версий и требует согласования (функционал документооборота)
  • Сделка — не может быть документом если не подразумевается договор (имеет версии)
  • Анкета клиента — подумайте потребуется ли функционал документооборота?

4. Упрощайте объекты

В жизни все просто — и в объектной модели должно быть все понятно.

Разделяйте большие объекты на связанные объекты — на разнородную информацию

  • Не раздувайте объекты 

Большие, популярные таблицы — причина блокировок на уровне базы данных — без изменения объектной модели, проблему не решить

Трудоемко менять фундамент в функционирующей ELMA

5. Для простых механизмов — простые решения

Простая задача — простое решение

Не тащите экскаватор — для того чтобы выкопать ямку

Например:

Дело у юристов движется по судам, меняются обстоятельства и статусы дела:

  • требуется механизм статусов (событий для аналитики) 

Такие статусы делайте отдельным объектом и плагином для его установки

6. Удобство — неудобство

К сожалению в ELMA BPM существуют нюансы которые нужно помнить.

Удобно пользователю — неудобно разработчику

И наоборот, удобно разработчику — неудобно пользователю.

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

Отстаивать права пользователей — до того как им огласили правила

К сожалению некоторые пишут костыли — из- за того что не знают как правильно или не умеют.

Если выполняется одно из условий

  • Данные хранятся в двух местах (блок и объекты)
  • Если запросы выполняются долго (выборка из базы данных)
  • Не удается построить выборку (механизм не поддерживает)
  • Начались проблемы со скоростью работы и постоянными ошибками

Пишите мне — составим план исправления

Нюансы построения объектной модели ELMA BPM

При описании и проектировании объектной модели — возникают вопросы и главный

— Как сделать правильно?

  • Я расскажу несколько критичных нюансов — будут вопросы пишите в комментариях

Блок или список объектов?

Популярный вопрос — рассмотрим плюсы и минусы

Блок

— это список связанных объектов доступных только с привязанным к нему объектом. (для коллег из 1С — аналог табличной части 1С)

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

Блоки используют в двух случаях

  1. Для удобства редактирования пользователем 
  2. Для хранения записей — к которым не планируется писать сложные выборки и они всегда используются только в связке с объектом который содержит блок
    • например объект «Шаблон» и в блоке «Поля шаблона»

Используйте блоки при выполнении обоих условий

Связанные объекты

Связи в ELMA BPM  — покрывают все возможные варианты которые могут понадобиться.

Если не требуется функционал блока — НЕ ИСПОЛЬЗУЙТЕ БЛОКИ ELMA 

Разница между блоком и связью 1-N
  • Более того связь 1-N это аналог связи в блоке ELMA (в блоке ключевая колонка Parent аналогично связи 1-N — заполняется автоматически)
Связь с элементами блока 1-N

Чем больше связанных объектов, отделенных по логике и времени изменений — тем меньше вероятность взаимоблокировок

Читайте Unit Of Work ELMA

— если транзакция изменила поле в строке — остальные транзацкии не смогут выполнить выборку по этой таблице

Если данные хранятся в 2 ух таблицах — доступ ко второй останется и ELMA продолжит работать (вывод — не делайте большие таблицы)

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

Наследование

ELMA BPM поддерживает наследование объектов — яркий пример с контрагентом описан тут.

Структура наследования задач в ELMA BPM

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

  • Скорость работы — почему уже описано выше
  • Фундамент для развития и удобство расширения

Простой пример справочника «Заключение службы» — результат проведенной проверки.

Заключения от двух служб:

  1. Cодержат разный набор параметров
    • у кредитного комитета это результаты голосования
    • у отдела верификации — чек-лист проверки документов
  2. И имеют общие поля
    • результат и объект к которому относится заключение

Новички решат сделать один объект — без наследования (кто то не знает и такого понятия)

В результате:

  • Поля в кучу — в один объект
  • Лишние поля «признаки» — «является заключением верификатора» и «является заключением кредитного комитета»

Такие объекты трудно использовать, они создают риски взаимоблокировок — и на форме будет много лишней логики.

Опытные применят наследование

Наследование в этом случае необходимо как воздух, продумав на 2 шага вперед и заложив фундамент на развитие получим:

  1. Объект «Базовое заключение службы»
    •  содержит только общие поля
  2. Дочерние объекты (в будущем появятся новые)
    • Заключение кредитного комитета — дополнительно содержит результаты голосования
    • Заключение верификатора — дополнительно — чек-лист верификатора

Итого

  • получим 3 таблицы вместо одной, 2 из которых могут редактироваться паралельно 
  • в коде удобно проверять типы заключений и не думать — какое поле к какому заключению относится (в отличие от простого варианта)

Иерархические справочники

Справочники которые хранят одновременно обычные элементы справочника и категории (папки).

Например: документы и папки документов — имеют один иерархический базовый объект.

Такие справочники создавают крайне редко — создавать и администрировать категории (папки) — лишняя работа.

  • Если вложенность не больше 1 уровня и не нужен специфичный вид справочника — для отличия добавляют атрибут категория в объект.

Когда использовать иерархический справочник:

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

Атрибуты

Я рассмотрю только острые моменты с которыми столкнулся при работе коллег — ошибки которые не стоит повторять.

Вы не первые встречаетесь с новыми задачами и до вас уже все решалось и как правильно — известно.

Уникальный идентификатор

Для уникальных объектов используйте тип Guid — лучше использовать стандартный механизм ELMA BPM и использовать поле Uid

Uid — используется для импорта — экспорта и имеет индекс по этому полю

Если использовать другие типы полей для уникальности —
возникнут проблемы

  • Поле придется индексировать отдельно — иначе выборка будет по всей таблице (если выберите тип строка — это сложная задача)
  • Для получения записи по этому полю придется использовать условия для загрузки (например брать одну первую запись ) — иначе поиск будет просматривать все записи, хотя нужно первая
Лишняя работа для разработчика и базы данных

Все атрибуты — типа объект (в базе данных это ссылка по Id) — автоматически индексируются ELMA BPM

Выводы

  • Объектная модель — фундамент который закладывают с запасом на развитие и его сложно изменять в последствии
  • Используйте каждый вариант — там где они подходят. 
    (Связанные объекты, Наследование, Блоки и Иерархические справочники)
  • Правильная объектная модель — ускорит работу ELMA и отдалит риск взаимоблокировок на уровне базы данных

Статьи для прочтения

Статьи из базы знаний ELMA BPM

  1. Архитектура объектной модели
  2. Структура модели данных и менеджеры сущностей (объектов)

Мои статьи

  1. Связь между объектами (одиночная, многие ко многим) ELMA BPM
  2. UnitofWork и ELMA BPM
  3. Как устроена сущность ELMA (Entity)

Задания

В заданиях нужно описать структуру объектной модели которую вы бы создали в ELMA BPM

  1. Согласование технического задания (ТЗ) на разработку
    • актуальное ТЗ должно храниться в ELMA
    • ТЗ согласовывается паралельно (сотрудниками более 2- ух)
    • окончательное решение принимает руководитель проекта, ему важны мнения коллег
  2. В ELMA необходимо добавить информацию по контрагентам
    • Поставщик — регион доставки груза, работает ли он с НДС, рейтинг (от 1 до 5)
    • Клиент — заключенные договоры, является вип клиентом, доступный лимит закупки
  3. Завести в ELMA геометрические фигуры, круг, треугольник, прямоугольник
    • В карточке должны отражаться — площадь и периметр
    • Размеры фигуры — каждый из параметров
      • круг — радиус
      • треугольник — длины трех сторон 
      • прямоугольник — ширина и длина
  4. Завести в ELMA — продукты и категории
    • Овощи
      • Огурцы
        • Корнишон
        • Зозуля
      • Помидоры
        • Черри
        • Зеленые
    • Фрукты
      • Яблоки
        • Анис
        • Антоновка

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

%d такие блоггеры, как:

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: