![]() |
Мобильная Торговля
|
Версия
|
Расширения данного типа предназначены для объединения нескольких расширений с заданными правилами и вызова нескольких скриптов на одну точку расширения. На данный момент объединению доступны расширения типа 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), то оно не влияет на условие для нижестоящих расширений.