/subsystem-compile — создание подсистемы
MCP routing
- Preferred path: use MCP
unicatoolunica.applyс операциямиsubsystem.create,props.setиcontent.add. - Do not call internal MCP/CLI adapters directly. They are hidden behind
unicaand synchronized by the orchestrator. - Всегда сначала
dryRun: true. ПрименяйdryRun: falseтолько когда пользователь явно попросил внести именно эту правку, и только сifRevиз предпросмотра. - Проверка поддержки поставщика работает внутри
unica.
Куда метит создание. Подсистемы верхнего уровня — args.at вида
<набор>:Configuration. Вложенной подсистемы — адрес родителя
<набор>:Subsystem.<Родитель>. Имя новой подсистемы лежит в values.name:
адреса, которого ещё нет, назвать нельзя. Каталогов выгрузки и путей к XML
родителя тут нет — их место занял адрес.
Создание заводит и файл подсистемы, и запись о ней у родителя. Это одна правка, а не две.
Что задаётся чем
| Что | Операция | args |
|---|---|---|
| Сама подсистема | subsystem.create |
values: {name} |
Синоним, комментарий, пояснение, картинка, IncludeInCommandInterface, UseOneCommand |
props.set |
values: {…} |
| Состав | content.add |
items: [{object}] |
Минимально нужно только имя. Всё остальное — умолчания платформы.
Операции одного вызова публикуются одной транзакцией: подсистема со своим составом и свойствами появляется целиком либо не появляется вовсе.
Примеры
Минимальная подсистема
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.apply",
"arguments": {
"at": "main:Configuration",
"ops": [
{
"op": "subsystem.create",
"args": {
"at": "main:Configuration",
"values": {"name": "Тест"}
}
}
],
"dryRun": true
}
}
}
С составом и свойствами
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.apply",
"arguments": {
"at": "main:Configuration",
"ops": [
{
"op": "subsystem.create",
"args": {
"at": "main:Configuration",
"values": {"name": "Продажи"}
}
},
{
"op": "props.set",
"args": {
"at": "main:Subsystem.Продажи",
"values": {
"Synonym": "Продажи",
"Picture": "CommonPicture.Продажи",
"IncludeInCommandInterface": true
}
}
},
{
"op": "content.add",
"args": {
"at": "main:Subsystem.Продажи",
"items": [{"object": "Catalog.Товары"}, {"object": "Report.Продажи"}]
}
}
],
"dryRun": false,
"ifRev": "<rev из предпросмотра>"
}
}
}
Вложенная подсистема
Родителя называет адрес, а не путь к его XML.
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.apply",
"arguments": {
"at": "main:Subsystem.Продажи",
"ops": [
{
"op": "childSubsystem.add",
"args": {
"at": "main:Subsystem.Продажи",
"items": [{"name": "Дочерняя"}]
}
}
],
"dryRun": true
}
}
}