⟵ сюдатуда ⟶
  • Установка
  • Конфигурация на Ubuntu
  • Обновления
  • Бэкапы
  • Multi/no-multi
  • Консольная утилита bin/totum
  • Основы для пользователей
  • Интерфейс и компоновка
  • Таблицы и их параметры
  • Префильтр
  • Поля и их параметры
  • Синтаксис
  • Код, действия, форматирование
  • Реляционные взаимосвязи
  • Порядок расчета и единицы пересчета
  • Сравнения
  • Функции
  • Отладка
  • Автозаполнение расчетных и временных
  • Дублирование строк и циклов
  • Деревья
  • Печать и CSV
  • API
  • Роли и пользователи
  • Нотификации
  • Действия по расписанию
  • Анонимные таблицы
  • Внешние формы
  • Экспорт и импорт таблиц
  • Введение
  • Зарезервированные name
  • Создание выгрузки
  • Загрузка через интерфейс
  • Тип выполняемого действия
  • Настройки соответствия данных внутри таблиц
  • Соответствие ролей, дерева и категорий таблиц
  • Matches для последующих загрузок
  • Коды при загрузке
  • Использование bin/totum для автоматического и массового обновления схем
  • Использование обновлений для создания связки test — prod
  • Системные таблицы
  • Подключение функций
  • Дополнительные интерфейсы
  • Структура файлов
  • Структура базы
  • Обновления и выгрузки

    Введение

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

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

    Этот же механизм используется для обновления core-таблиц.

    Основная таблица для создания и загрузки находится Системные таблицыИмпорт/экспортИмпорт/экспорт

    Импорт/экспорт

    Таблицы выгружаются и загружаются по name. Поэтому если у вас в двух базах имеются разные таблицы имеющие одинаковый name – перенос не удастся тк при загрузке таблица с совпадающим name будет перезаписана.

    Если вы хотите создать выгрузку для тиражного распространения, то при проектировании используйте свой префикс перед названиями таблиц из 3-4 букв и двух нижних подчеркиваний. Для новых системных таблиц мы используем ttm__.

    Зарезервированные name

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

    auth_log
    calc_fields_log
    calcstable_cycle_version
    calcstable_versions
    crons
    log_structure
    notification_codes
    notifications
    panels_view_settings
    print_templates
    roles
    settings
    table_categories
    tables
    tables_fields
    tree
    users
    ttm__... — и таблицы с префиксом ttm__
    

    Создание выгрузки

    Что бы создать выгрузку нажмите СОЗДАТЬ ВЫГРУЗКУ — вам необходимо выбрать какие таблицы в нее попадут, какие настройки этих таблиц выгружаются и какие поля будут в них выгружены, а также настройки выгрузки данных.

    Также задайте Название выгрузки и если требуется Описание.

    Создание выгрузки

    На основании выбранных таблиц в выгрузку будут добавлены элементы Дерева, Роли и Категории таблиц.

    Когда вы нажимаете СОЗДАТЬ ВЫГРУЗКУ в таблицу Системные таблицыИмпорт/экспортИмпорт/экспорт будет добавлена строка содержащая запакованный в gzip json с дополнительным расширением .ttm.

    Этот файл можно скачать и загрузить в другую схему.

    Загрузка через интерфейс

    Для загрузки закачайте файл выгрузки в поле Файл загрузки нажмите на ЗАГРУЗИТЬ ФАЙЛ. Загрузка в схему в этот момент не происходит — файл с данными будет распакован и откроется окно настроек загрузки.

    Настройки загрузки

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

    Тип выполняемого действия

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

    Если name загружаемой таблицы совпадает с name таблицы в схеме — то произойдет обновление настроек таблицы и настроек полей.

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

    Удаление полей не происходит ни при каких обстоятельствах. Поэтому вы можете встраивать дополнительные поля в обновляемую часть решения.

    Настройки соответствия данных внутри таблиц

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

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

    Тип определяет действие — добавлять и изменять, только добавлять, только изменять.

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

    Соответствие ролей, дерева и категорий таблиц

    При загрузке вам необходимо указать соответсвие Ролей, Дерева и Категорий в схеме в которую ведется загрузка и в загружаемом файле.

    Например роль Руководитель в схеме выгрузки и загрузки может иметь разные id (аналогично папки дерева и категории таблиц).

    Вам необходимо указать соответсвия или указать, что необходимо создать новую запись.

    При загрузке эти соответсвия будут записаны в поле matches таблицы Импорт/экспорт для последующих загрузок.

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

    Matches для последующих загрузок

    Поле matches таблицы Импорт/экспорт определяет автоматические соответствия ролей, дерева и категорий для загружаемых схем.

    Описание totum_** является техническим и необходимо для корректной установки обновлений.

    Поле содержит массив:

    • ключи — номера id в загружаемой схеме

    • значения — номера id в текущей схеме

    Если соответсвие не найдено, то загружаемый элемент создается и автоматически обновляется matches.

    Матчесы

    Коды при загрузке

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

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

    В коде передается несколько переменных:

    • $#insertedIdsid добавленных строк, если было добавление данных.

    • $#changedIdsid измененных строк, если было добавление данных.

    • $type

      • install если таблица добавляется в пустую схему БД.
      • update если таблица добавляется в уже существовашшую схему БД.
    • $#is_table_createdtrue если таблица впервые добавлена в схему.

    Коды при загрузке выполняются без всяких ограничений по доступам!

    Использование bin/totum для автоматического и массового обновления схем

    Для обновления схемы можно использовать консольную утилиту bin/totum.

    1. Загрузите на сервер файл загрузки **.gz.ttm.

    2. Выполните из корневой папки тотума:

      Для no-multy
      
      bin/totum schema-update MATCHES_NAME PATH_TO_FILE
      
      Для multy для обновления всех схемы:
      
      bin/totum schemas-update MATCHES_NAME PATH_TO_FILE
      
      Для multy для обновления одной схемы:
      
      bin/totum schema-update MATCHES_NAME PATH_TO_FILE --schema="SCHEMA_NAME"
      

    MATCHES_NAME — если загрузка производится впервые для схемы и соответсвие в Matches не будет найдено, то все элементы Дерева, Ролей и Категорий будут обработаны как добавляемые за исключением роли Создатель и будет создана запись соответствий в Matches с указанным именем.

    Использование обновлений для создания связки test — prod

    Если предполагается тиражируемое решение или проект невозможно модифицировать на боевом сервере — то:

    1. — Создаем PROD и разрабатываем на нем решение. Если вы разрабатывали на TEST то начните с п.3

    2. Для no-multy:

      2.1 — Создаем выгрузку с PROD и включаем туда таблицы относящихся к решению (без системных).

      Некоторые таблицы наверняка будут с данными, тк являются настроечными справочниками. При переносе на prod -> test используйте тип действия Добавлять и ключеыое поле id.
      

      2.2 — Разворачиваем TEST и загружаем созданную выгрузку.

      2.3 — Не забудте отключить кроны для рассылок и синхронизации с внешними серверами если вы их переносили на test.

      Для multy:

      2.1 — Выполняем bin/totum schema-duplicate ИМЯ_КОПИРУЕМОЙ_СХЕМЫ ИМЯ_СОЗДАВАЕМОЙ_СХЕМЫ URL_НОВОЙ_СХЕМЫ

      Кроны в этом случае отключаются автоматически

    3. — Создаем master-выгрузку из TEST — эта выгрузка будет основной, название файла будет использовано в matches в PROD

    4. — Загружаем нашу master-выгрузку в PROD с двумя целями:

      4.1 — Проверка целостности выгрузки

      4.2 — Создание matсhes — для этого надо выбрать соответсвия 1 к 1 ролей, дерева и категорий.

    Если вы разрабатывали на TEST и переносите проект на PROD то создайте master-выгрузку с TEST, создайте чистый PROD и загрузите на него master-файл.

    Если через интерфейс, то в соответсвиях выберите создать.

    Matches будут созданы по имени файла — переименуйте если необходимо.

    1. — Для обновления:

      5.1 — Разрабатываем на TEST.

      5.2 — Обновляем master-файл при помощи Создать по текущим настройкам

      5.3 — Загружаем файл в схему или схемы через интерфейс или bin/totum.

    Если загружаете на multy в котором у вас и PROD-базы и тестовая, то необходимо исключить TEST из обновления:

    bin/totum schemas-update MATCHES_NAME PATH_TO_FILE --exclude="schema1,schema2" --exclude="schema3"