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

Описание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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