Бипуим: Документация
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 10 months ago

Описание

Выносите статичные параметры сценариев автоматизации за их пределы.

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

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

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

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

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

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

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

Спустя некоторое время сотрудники пытаются получить данные по очередной организации, но что-то идет не так:

Отображается системная ошибка выполнения сценария типа “Изменено поле во время редактирования”. В контексте рассматриваемого примера такое может произойти, если авторизационный токен сервиса стал недействительным.

Теперь рассмотрим сценарий, который производит получение данных по организации. Видим, что в компоненте “Назначение переменных” есть переменная “token” с фиксированным значением:

Следствием подобной реализации могут быть следующие проблемы:

  • Корректировка сценария при изменении фиксированных значений

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

Корректировка сценария при изменении фиксированных значений

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

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

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

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

При этом сам процесс с поиском сценария, нужного компонента и тестирования занимает некоторое время.

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

Невозможность настройки автоматической актуализации

Из-за того, что в реализации выше токен по сути “зашит” в сам сценарий, его невозможно автоматически актуализировать. Это некоторое статичное значение, изменить которое может только сотрудник.

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

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

Решить обе проблемы можно используя паттерн выноса параметров.

Для примера выше необходимо добавить новый каталог “Токены” с перечнем полей, содержащим сам токен и данные, необходимые для его обновления:

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

Далее в сценарии для заполнения данных по ИНН нужно добавить компонент “Получить запись” и вместо “зашитого” в сценарий токена использовать значение из поле “Токен” созданной в каталоге записи.

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

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

В своей работе сотрудники не заполняют все поля вручную. Вручную заполняется только ИНН, а остальная информация подставляется автоматически при нажатии на соответствующую кнопку (пример такой автоматизации описан в статье ).

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

Автозаполнение данных по ИНН
Планировщика задач
Вместо указания переменных в сценариях
Выносите их в интерфейс системы