Расширения данного типа предназначены для объединения нескольких расширений с заданными правилами и вызова нескольких скриптов на одну точку расширения. На данный момент объединению доступны расширения типа action.
Метафайл расширения типа union:
{
"uri": String,
"type": "union",
"union": {
"list": [
{
"uri": String,
"condition": String // Опциональный параметр, по-умолчанию "none". Доступные значения: "none", "prev_success", "prev_failed"
},
...
]
}
}
union - структура содержащая информацию и правила объеденения, на данный момент имеет одно свойство - list
union.list - список, содержащий элементы (union item) объединения, порядок вызова определяется порядком в списке; если по указанному URI расширение отсутствует, то элемент будет проигнорирован
union.list[i] (union item) - элемент, определяющий расширение и условия (condition) вызова
union.list[i].condition - условие вызова, где "none" - без условий, "prev_success" - вызвать, если предыдущее расширение завершилось успешно, "prev_failed" - вызвать, если предыдущее расширение завершилось неуспешно
Предположим, у нас есть три расширения, которые нужно вызвать в определённом порядке при открытии документа. Очевидно, что у всех одинаковый URI (например, stmobile://action/preorder/preopen).
Если положить все три расширения в папку расширений МТ, то все они будут вызваны, но порядок их вызова не определён.
Чтобы иметь возможность определять порядок вызова и условия вызова, необходимо:
Назначить расширениям разные URI, чтобы отличать их друг от друга, удобно добавить к URI ещё один ключ, например:
stmobile://action/preorder/preopen/checkdoc
stmobile://action/preorder/preopen/addrestcolumn
stmobile://action/preorder/preopen/updaterestСоздать метафайл для расширения union
{
"uri": "stmobile://action/preorder/preopen",
"type": "union",
"union": {
"list": [
{ "uri": "stmobile://action/preorder/preopen/checkdoc" },
{ "uri": "stmobile://action/preorder/preopen/addrestcolumn" },
{ "uri": "stmobile://action/preorder/preopen/updaterest" }
]
}
}
Порядок в списке определяет прядок вызова. Если стоит задача управления цепочкой вызова, то можно добавить условия, при которых конкретный action-скрипт будет вызываться
{
"uri": "stmobile://action/preorder/preopen",
"type": "union",
"union": {
"list": [
{
"uri": "stmobile://action/preorder/preopen/checkdoc"
},
{
"uri": "stmobile://action/preorder/preopen/addrestcolumn",
"condition": "prev_success"
},
{
"uri": "stmobile://action/preorder/preopen/updaterest",
"condition": "prev_success"
}
]
}
}
Внимание! Если какое-то из расширений является асинхронным (async), то оно не влияет на условие для нижестоящих расширений.