Функция.
| Название | Тип | Описание |
|---|---|---|
| id | id_name | Уникальный, в рамках приложения, идентификатор объекта. Доступ к объекту с помощью AppScript выполняется через этот идентификатор. Если id не задан, то интерпретатор автоматически заполнит его некоторым случайным в момент запуска приложения. В этом случае appxml-программист лишается возможности обращаться к объекту. |
| args | string | Список имен переменных, принимающих передаваемые аргументы и разделенных запятой. |
| execute | boolean | Возвращает true, если функция в данный момент выполняется. |
| source | @source | |
| timer | boolean | Запуск/остановка генерации события по таймеру. По умолчанию, false. Чтобы запустить выполнение по таймеру, необходимо динамически выполнить установку для функции атрибута timer=«true». |
| timer-timeout | number | Период генерации события в милисекундах. По умолчанию, 60000 (1 минута). |
| timer-init-timeout | number | Первичная задержка при запуске таймера. По умолчанию, 0. |
| timer-bind | minute | hour | none | Выравнивание запуска функции по началу минуты или часа (т.е. после задания fn_id.timer=true интерпретатор подождет начало заданного временного интервала и после этого повесит функцию на таймер). |
| threaded | boolean | Запуск данной функции в отдельном потоке. Подразумевается, что в этом случае возвращаемый результат нас не интересует. |
| synchronized | boolean | Гарантированное выполнение одного вызова данной функции в один момент времени. Подразумевается, что при многопоточной работе и множестенных вызовах функции будет выполнена синхронизация последовательности выполнения этих вызовов. |
| gui | boolean | поддержка корректного обращения к визуальным элементам GUI из функций (<fn>), запущенных по таймеру или в отдельном потоке. |
| Название | Тип | Описание |
|---|---|---|
| onBeforeAction | code | Если возвращает false, то функция не выполняется. Правила описания см. (Описание событий в ApplicationXML). |
| onAferAction | code | Выполняется только после успешного выполнения функции. Правила описания см. (Описание событий в ApplicationXML). |
| onCreated | code | Выполняется только при создании объекта. Правила описания см. (Описание событий в ApplicationXML). |
В AppXML поддерживаются поименованные самостоятельные блоки кода, называемые функции. Если return отсутствует, то функция вернет последнее вычисленное значение.
waitForAll() - ожидание окончания работы всех запущенных экземпляров данной appxml-функции. Используется при многопоточном программировании.
getRunning() - возвращает кол-во работающих на текущий момент экземпляров данной appxml-функции. Используется при многопоточном программировании.
Вызов функции в событии onaction кнопки. Функция должна быть описана в секци .
<button text="Применить">
<onaction>
msg('Сумма 10 + 20 = ' + func_sum(10, 20));
</onaction>
</button>
<common>
<fn id="func_sum" args="value_1, value_2">
<![CDATA[
var res = 0;
res = value_1 + value_2;
return res;
]]>
</fn>
</common>