Бипуим: Документация
8-800-505-24-05Сайт Бипиум
  • 😎Отвечаем на ваши вопросы
  • 🎂Версии и обновления
  • ❗Обновление до версии 2.0
  • Документация
    • 🆕С чего начать
      • Регистрация и вход
      • Создаем каталоги и записи
      • Формируем отчёты
      • Настраиваем правовую политику
      • Применяем автоматизации
    • ⚙️Конструктор данных
      • Отделы
      • Каталоги
        • Редактирование структуры
        • Настройка отображения
        • Поиск и фильтрация
        • Импорт записей
          • 📗Импорт из Excel
        • Экспорт записей
        • Активность
      • Системные каталоги
        • Сотрудники
        • События
        • Внешние запросы
        • Сценарии
        • Процессы
        • Доступ к сервисам
        • Вебхуки
      • Виды
      • Записи
    • 📊Отчеты
      • Графики
    • 🔑Права
      • Правила
      • Привилегии
      • Правовые группы
      • Правовые виды
      • Права на поля
      • Комбинация прав
    • 🤖Автоматизации
      • События
        • Изменение данных
        • Внешние запросы
      • Сценарии
        • Компоненты
          • Начало процесса
          • Конец процесса
          • Таймер
          • Ошибка
          • Шлюз «ИЛИ» (условное ветвление)
          • Шлюз «И» (распараллеливание)
          • Получить запись
          • Найти записи
          • Изменить запись
          • Создать запись
          • Удалить запись
          • Структура каталога
          • Загрузить файл
          • Сгенерировать документ
          • Назначение переменных
          • Код (Javascript)
          • Веб-запрос
          • SQL-запрос
          • Конвертер
          • Парсер
          • Запуск процесса
          • Получение почты
          • Отправка почты
          • Соединяющая линия
          • Отправить сообщение
        • Переменные
        • Выражения
        • Входные и выходные параметры компонентов
        • Примеры настройки
          • Условие
          • Цикл
      • Ограничения
  • Лицензии
    • 🌐Тип лицензирования
  • Примеры
    • 🔑Права доступа к данным
    • 🤖Автоматизации
      • Выгрузка файлов на Яндекс Диск
      • Отправка на больничный
      • Автоматизация оплаты счетов
      • Создание наименований записей
      • Расчет скидок для клиентов
      • Запрет на создание дубликатов в каталоге
      • Автозаполнение данных по ИНН
      • Переброс данных между связанными каталогами
      • Очередь сценариев
      • Отслеживание заявок с сайта помощью UTM-меток
      • Просрочка задач по дедлайну
      • Реализация механизма согласования записей
      • Массовое изменение записей
      • Создание каталога для рассылки почты
      • Перенос данных между системами Бипиума
      • Импорт данных из Excel
      • Генерация счет-фактуры
      • Генерация excel-отчетов
      • Планировщик задач
      • Импорт банковских выписок
      • Производственный календарь
      • Складской учет
  • Интеграции
    • 🥂Методы интеграции
      • Интеграция данных
        • API
        • Вебхуки (webhooks)
      • Интеграция интерфейса
        • Веб-формы
        • Веб-расширения
      • Примеры интеграций
        • Тильда
          • Прием данных с формы Tilda
          • Интеграция веб-интерфейса в Tilda
        • Интеграция с сервисом «DaData»
        • Интеграция c «Единой информационной системой в сфере закупок»
        • Мессенджеры
          • Интеграция с Telegram-ботом
        • Почтовые сервисы
          • UniSender
          • MailChimp
        • Сервисы Google
          • Google Calendar
        • Телефония
          • Oktell
            • Панель телефонии Oktell
            • Компонент Bpium в Oktell
        • 1C
    • 🔌API
      • Данные
        • Каталоги (Catalogs)
        • Записи (Records)
        • Связи (Relations)
        • Истории (Histories)
        • Файлы (Files)
        • Отделы (Sections)
        • Виды (Views)
        • Сообщения (Messages)
      • Агрегация
        • Разложения (Values)
        • Сводка (Totals)
      • Отчеты
        • Дашборды (Boards)
        • Графики (Widgets)
      • Поисковые выборки
        • Доступные связи (AvailableRecords)
        • Доступные условия фильтра (AvailableFilterRecords)
        • Сотрудники (Users)
        • Контакты (Contacts)
      • Права (Rights)
      • Профиль (Profile/me)
  • Установка на сервер
    • 🧱Архитектура
      • Варианты разворачивания
    • 🖥️Требования
    • 📂Установка как служба
    • 🛳️Установка через Docker
    • 🎛️Мультидоменная среда
    • 🆘Материалы
      • TLS/SSL Сертификат
      • Параметры config.env
        • Для Bpium
        • Для Bpium S3
        • Для Bpium BPM
      • Запуск
      • Обсуживание
        • Активация
        • Обновление
        • Бэкап и восстановление базы
        • Брендирование (Whitelabel)
        • Удаление
      • Перенос базы из облака
      • Возможные проблемы в ходе установки и работы
  • Обучение
    • Базовый курс
      • Урок 1. Отделы
      • Урок 2. Каталоги с данными
      • Урок 3. Карточки записей
      • Урок 4. Связи между данными
      • Урок 5. Фильтры и виды
      • Урок 6. Приглашение сотрудников
      • Урок 7. Права доступа к данным
      • Урок 8. Графические отчеты
      • Урок 9. Бизнес-процессы
      • Урок 10. Интеграции
    • Технический курс
      • Урок 1. Принцип работы автоматизаций
      • Урок 2. Первая автоматизация изнутри
      • Урок 3. Валидация данных
      • Урок 4. Простые вычисления
      • Урок 5. Расчет суммы заказа
      • Урок 6. Генерация счетов/документов
      • Урок 7. Рассылка почтовых сообщений
      • Урок 8. Прием внешних данных
      • Урок 9. Отправка данных на сторонние сервисы
    • Паттерны проектирования ИС
      • Унификация
      • Упорядоченность
      • Разделение
      • Актуализация
      • Вынос параметров
      • Выделение позиций
      • Слияние
      • Дублирование
      • Типизация
      • Информирование
Powered by GitBook
On this page
  • Описание
  • Проблематика
  • Невозможность множественных связей
  • Дублирование информации между записями
  • Необходимость множественной актуализации
  • Применение паттерна
  1. Обучение
  2. Паттерны проектирования ИС

Разделение

PreviousУпорядоченностьNextАктуализация

Last updated 9 months ago

Описание

Храните информацию по каждому бизнес-объекту в отдельном каталоге

Паттерн разделения рекомендует хранить каждый бизнес-объект системы в отдельном каталоге.

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

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

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

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

Проблематика

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

В системе настроен каталог “Клиенты”:

В настроенном каталоге фиксируется информация по двум бизнес-объектам:

Клиент
Контактное лицо

Наименование

ФИО

Статус

Телефон

Комментарии

Email

Создано

Создал

Нарушение паттерна разделения может привести к следующим проблемам:

  • Невозможность множественных связей

  • Дублирование информации между записями

  • Необходимость множественной актуализации

Невозможность множественных связей

В рассмотренном выше примере для каждого клиента возможно указать только одно контактное лицо. Таким образом, если у клиента есть несколько контактов, то в записи не удастся указать их все.

Проблема может решаться добавлением новых полей в каталог (ФИО 1, ФИО 2 и так далее), но в таком случае при каждом новом увеличении максимального числа контактов будет необходимо добавлять новые поля в каталог.

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

Дублирование информации между записями

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

Таким образом информация контактного лица будет дублироваться между записями разных клиентов: для каждого клиента с тем же контактом нужно повторно заполнять поля, относящиеся к контакту (ФИО, Телефон, Email).

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

Необходимость множественной актуализации

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

Например: в системе заведено три клиента с одним контактным лицом. Если у контактного лица изменился адрес электронной почты, то его необходимо заменить во всех трех записях “Клиентов”.

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

Применение паттерна

Рассмотрим реализацию того же функционала учета клиентом с учетом паттерна разделения.

Запись каталога “Клиенты”:

Запись каталога “Контактные лица”:

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

Если это же контактное лицо нужно указать у другого клиента, то достаточно выбрать уже существующую запись из выпадающего списка:

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

В одном каталоге информация по двум бизнес-объектам
В одном каталоге информация по одному бизнес-объекту
В поле "Контакты" каталога "Клиенты" выведены расширенные поля с ФИО, телефоном и почтой контактного лица для большей наглядности