home chevron_right
Actions (/simai/wizard/action): список и назначения

Действия мастера: где находятся и как используются в реальных сценарияхlink

В SIMAI Framework 4 (SF4) action — это единица работы мастера: отдельная папка в /simai/wizard/action/<code>/, которую шаг мастера вызывает по значению code. Внутри action обычно присутствует описание (.description.php) и исполняемая часть.

По данным поставки SF4 в текущем наборе локальных материалов видно, что исполняемая часть action может быть оформлена двумя способами:

  • как action.php (классический вариант — большинство действий);
  • как class.php (в поставке точно встречается для импорта инфоблоков из архива).

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

Отдельно важно для практики: у тебя в .wizard.config.php используется цепочка действий, которая реально демонстрирует «рабочий скелет» мастера SF4. В ней задействованы следующие actions (в порядке выполнения):

  1. site.choice.install
  2. file.copy (копирование системных частей решения)
  3. urlrewrite.add
  4. site.update
  5. file.copy (копирование файлов сайта в выбранную директорию #dir#)
  6. replace.code
  7. data.import.fileoption.import.data
  8. data.import.fileusergroup.import.data
  9. data.import.fileiblocktype.import.data
  10. iblock.import.archive
  11. redirect

Группы actions и краткое назначение (по поставке SF4)link

Ниже — краткий справочник действий, сгруппированный так, как принято в SF4. Я намеренно не помечаю “устаревшие” (ты написал, что не хочешь), но факт наличия/отсутствия исполняемой части отмечаю, потому что это критично для разработчика мастера: иначе можно включить действие в сценарий и получить “пустой шаг”.

file.* — операции с файлами и каталогамиlink

  • file.copy — копирование файлов/каталогов (исполняемая часть: action.php). В твоём мастере используется дважды:

    • копирование шаблонов в /bitrix/templates/ и файлов в /;
    • копирование файлов сайта в директорию #dir# (подставляется по выбранному сайту/директории).
  • file.create — создание файла по параметрам (исполняемая часть: action.php).

  • file.delete — удаление файлов/каталогов (исполняемая часть: action.php).

  • file.rename — переименование файлов/каталогов (исполняемая часть: action.php).

  • file.unzip, file.zip, file.encode.win1251, file.add — в поставке присутствуют как описания, но исполняемой части нет (только .description.php).

data.* — загрузка/выгрузка данных мастераlink

  • data.import.file — загрузка массива данных из файла в хранилище мастера (исполняемая часть: action.php). В твоём мастере используется для поочерёдной загрузки:

    • .option.config.php → в option;
    • .usergroup.config.php → в usergroup;
    • .iblocktype.config.php → в iblocktype.
  • data.export.file — выгрузка данных мастера в файл (исполняемая часть: action.php).

  • data.add.config — “добавить/подмешать” конфигурацию в данные мастера (исполняемая часть: action.php).

  • data.add.property — в поставке присутствует как описание, но исполняемой части нет.

option.* — перенос/применение опцийlink

  • option.import.data — применить импортированные опции (исполняемая часть: action.php). В твоём мастере идёт сразу после data.import.file (который загрузил .option.config.php).
  • option.export.data — экспорт опций в пакет мастера (исполняемая часть: action.php).

usergroup.* — группы пользователейlink

  • usergroup.import.data — применить импортированные группы (исполняемая часть: action.php). В твоём мастере идёт после загрузки .usergroup.config.php.
  • usergroup.export.data — экспорт групп (исполняемая часть: action.php).

site.* — операции уровня сайтаlink

  • site.choice.install — шаг выбора сайта/директории установки и формирование site_config (исполняемая часть: action.php). Это “вход” твоего мастера.

  • site.update — обновление/применение решения к выбранному сайту (исполняемая часть: action.php). В твоём сценарии передаются параметры:

    • template = simai.framework;
    • name = SOLUTION_NAME (через локализацию).
  • site.choice, site.create, site.import.data, site.translate — в поставке присутствуют как описания, но исполняемой части нет.

  • Также в поставке есть site.export.data и site.update.sveden (исполняемые), но они не используются в твоём конкретном .wizard.config.php.

iblock.* и iblocktype.* — инфоблокиlink

  • iblock.import.archive — импорт инфоблоков из архивов (в поставке реализовано через class.php, то есть “класс-реализация”, а не action.php). В твоём сценарии action получает список архивов: source (zip), destination (код/цель), site (ru).

  • iblock.export.archive — экспорт инфоблоков в архив (исполняемая часть: action.php).

  • iblock.import.archive.sveden — импорт по специализированному сценарию (в поставке тоже через class.php).

  • iblock.translate — действие, связанное с переводом/локализацией данных инфоблоков (исполняемая часть: action.php).

  • iblocktype.export.data — экспорт типов инфоблоков (исполняемая часть: action.php).

  • iblocktype.import.data — в твоём .wizard.config.php действие присутствует как шаг, но в поставке есть только описание без action.php. Это важная практическая деталь: такой шаг в мастере требует либо:

    • вашей проектной реализации (своё действие), либо
    • подключения другой исполняемой логики (если она хранится в мастере отдельно). Иначе шаг будет “пустым” или завершится ошибкой в зависимости от того, как stage-компонент обрабатывает отсутствие исполняемого файла.

urlrewrite.* — правила маршрутизацииlink

  • urlrewrite.add — добавление правил urlrewrite из файла-источника (исполняемая часть: action.php). В твоём мастере параметр:

    • source = .../data/config/urlrewrite.php.

shortlink.* — короткие ссылкиlink

  • shortlink.import.data, shortlink.export.data — импорт/экспорт коротких ссылок (исполняемая часть: action.php). В твоём .wizard.config.php не используются, но в поставке присутствуют.

misc — сервисные шаги мастераlink

  • agreement — шаг подтверждения/соглашения (исполняемая часть: action.php).

  • info — информационный шаг (исполняемая часть: action.php).

  • redirect — перенаправление по завершению (исполняемая часть: action.php). В твоём мастере параметры:

    • link = /simai/wizard/master/simai.sveden/
    • master = simai.sf4university
  • dir.make — создание каталога (исполняемая часть: action.php).

  • install.check, language.choice, dir.choice, cut.names, restore.names — присутствуют как описания, но без исполняемой части.

Как документировать actions в SF4 так, чтобы это было полезно разработчикуlink

Самый практичный формат описания action в документации SF4 — не “пересказ кода”, а контракт шага:

  • Что делает (в 1–2 предложениях).
  • Что принимает на вход: data_input_code (какой массив ожидается в $arResult["DATA"][...]).
  • Что пишет на выход: data_output_code (куда кладёт результат).
  • Какие параметры нужны: структура parameter (это самое ценное для сборщика мастера).
  • Какие файлы/каталоги затрагивает: чтобы понимать риски (особенно для file.copy, replace.code).

На примере твоего мастера это особенно хорошо видно:

  • site.choice.install формирует site_config.
  • file.copy использует site_config и массив parameter[] с source/destination/name.
  • data.import.file превращает файл-конфиг в массив в DATA[...].
  • option.import.data и usergroup.import.data применяют эти массивы.
  • iblock.import.archive применяет список архивов, где каждый элемент описан одинаково.