Сравнение версий
Ключ
- Эта строка добавлена.
- Эта строка удалена.
- Изменено форматирование.
Информация | ||
---|---|---|
| ||
Корневой элемент handler, async-handler. Пространство имен: <ui xmlns="http://www.intertrust.ru/schema/palette/tn-ui"> |
Информация | ||||
---|---|---|---|---|
| ||||
Используется для подключения JavaBean или написание JavaScript кода |
Блок кода | ||||||
---|---|---|---|---|---|---|
| ||||||
<?xml version='1.0' encoding='UTF-8'?> <ui xmlns="http://www.intertrust.ru/schema/palette/tn-ui"> <!-- Асинхронный обработчик--> <async-handler id="{id}" name="{name}" name-process="{process name}"> <script lang="JavaBean"><![CDATA[...]]></script> </async-handler> <handler id="{id}" name="{name}"> <script lang="JavaScript"><![CDATA[...]]></script> </handler> </ui> |
handler
attributes
Параметры | Описание |
---|---|
id | Идентификатор |
name | Название |
use-by-link | Можно ли подписывать обработчик для использования пользователем без прямых прав чтения |
script
Параметры | Описание |
---|---|
lang | Язык программирования JavaScript/подключение JavaBean |
Параметры/Функции |
---|
Описание |
---|
language | js |
---|---|
collapse | true |
importClass(Packages.ru.intertrust.cmj.af.core.AFSession);
importClass(Packages.ru.intertrust.cmj.af.exceptions.AFDaoBadParameterException);
importClass(Packages.ru.intertrust.cmj.rest.tunable.object.TunableObjectREST);
importClass(Packages.ru.intertrust.cmj.rest.tunable.object.TunableObjectREST.Resource);
importClass(Packages.ru.intertrust.cmj.rest.tunable.object.action.TunableOperation);
importClass(Packages.ru.intertrust.cmj.tunable.object.AnyTunableObject);
importClass(Packages.ru.intertrust.cmj.tunable.object.TunableObjectApplication);
importClass(Packages.ru.intertrust.cmj.tunable.object.TunableObjectApplication.ClientContextKey);
importClass(Packages.ru.intertrust.cmj.tunable.object.common.TunableObjectHelper);
importClass(Packages.ru.intertrust.cmj.rest.tunable.object.action.OperationJScriptREST);
importClass(Packages.ru.intertrust.cmj.rest.tunable.object.action.OperationJScriptREST.ReturnParamsResource);
importPackage(Packages.java.util);
importPackage(Packages.java.lang);
function process(paramsResource, returnResource) {
if (paramsResource == null) {
throw new IllegalArgumentException("paramsResource must no be null.");
}
var paramPackageId = TunableObjectHelper.getAFInstanceValue(paramsResource.tuning().getValues()
.get("counter"));
if (paramPackageId.equals("context")) { // обработка первого пакета данных
process_context(paramsResource, returnResource);
} else if (paramPackageId.equals("answer1")) { // обработка данных первого диалога
process_dialog1(paramsResource, returnResource);
}
}
/**
* Обработка первого пакета данных с клиента.
* @param paramsResource
* @return ресурс первого диалога сценария
*/
function process_context(paramsResource, returnResource) {
var appTNObject = AFSession.get().getApplication(TunableObjectApplication.class);
var ids = appTNObject.getClientContextIds(paramsResource.tuning());
if (ids.isEmpty()) {
throw new AFDaoBadParameterException("Не выбраны документы!");
}
/* do something */
/* здесь указывается имя Схемы диалога который нужно показать клиенту */
var message = appTNObject.composeDialog("TestDialogScheme", null, null, null);
TunableObjectHelper.putAFInstanceValue(message.tuning(), "ids", ids);
TunableObjectHelper.putAFInstanceValue(message, "counter", "answer1");
returnResource.resource = Resource.create(message);
}
/**
* Обработка данных первого диалога сценария.
* @param paramsResource
* @return ресурс второго диалога, или, иначе пустой ответ, как сигнал о завершении операции.
* В случае пустого ответа клиент должен закрыть документ, если контекст - открытый документ.
*/
function process_onePersonDelete_dialog1(paramsResource, returnResource) {
/* do something */
returnResource.setResource(null);
}
paramsResource | Экземпляр класса TunableObjectREST.Resource, при первом |
вызове содержит данные о том, сколько и какие документы выделены, при последующий вызовах это ресурс диалога, в котором было произведено действие submit. Также содержит |
свойство "counter" которое нужно для определения того, на каком шаге сценария операции находимся. |
При первом вызове свойство counter= "context", при последующих действиях оно определяется вручную(можно кодом положить нужное значение). |
returnResource | Экземпляр класса TunableObjectREST.ReturnParamsResource, содержит в себе единственное поле - |
resource, в которое нужно установить либо:
|
process | function process(paramsResource, returnResource) |
Функция вызывается при первом нажатии кнопки и при последующих нажатиях кнопки с action=submit в диалогах операции. Через параметр returnResource.resource должна передать диалог/null клиенту. В общем случае используется для вызова нужной функции в зависимости от шага сценария. |
process_ |
<name> | function process_ |
Функция вызывается из process(paramsResource, returnResource) при первом вызове, в ней формируется ресурс диалога с нужным значением в поле "counter" и кладется в поле returnResource.resource.
process_<dialog_name>
<name>(paramsResource, returnResource) Функция вызывается из process(paramsResource, returnResource) при определенном значении поля "counter". Переподбирается один или несколько объектов(по полю ids), в зависимости от того, на основании данных пришедшего диалога, над объектами проводятся определенные действия, включая сохранение. Заполняется поле returnResource.resource. |
Примечание | ||||
---|---|---|---|---|
|
Для добавления диалога создаётся схема и секция с mode=dialog по определённым правилам:
|
async-handler
Асинхронный процесс - последовательность операций(шагов), в которой результат работы одной операции сохраняется на сервере для использования следующей операцией, причём переход к следующей операции(шагу) в общем случае инициируется пользователем.
attributes
Параметры | Описание |
---|---|
id | Идентификатор |
name | Название |
use-by-link | Можно ли подписывать обработчик для использования пользователем без прямых прав чтения |
name-operation | Название выполняемой операции (для отображения пользователю) |
name-process | Название процесса, в котором используется обработчик (для отображения пользователю) |
script
Параметры | Описание |
---|---|
lang | Язык программирования JavaScript/подключение JavaBean |
Функции/Методы | Описание |
---|---|
paramsResource | Экземпляр класса TunableObjectREST.Resource, при первом вызове содержит данные о том, сколько и какие документы выделены, при последующий вызовах это ресурс диалога, в котором было произведено действие submit. Также содержит свойство "counter" которое нужно для определения того, на каком шаге сценария операции находимся. При первом вызове свойство counter= "context", при последующих действиях оно определяется вручную(можно кодом положить нужное значение). |
processAsync | function processAsync(String monitorId) Функция вызывается при первом нажатии кнопки. |
process_<name> | function process_<name>(String monitorId) Функция вызывается из processAsync(monitorId) |
rollback | function rollback(String monitorId) Запускает код откатывающий изменения, произведенные обработчиком если это необходимо и возможно. Этот метод вызывается в случае если процесс был прерван или если в обработчике была возникла ошибка. |
Примечание | ||
---|---|---|
| ||
Весь обмен данными происходит через так называемый монитор процесса. На вход обработчика поступает ID монитора, и на выходе из обработчика Tunable-ресурс не возвращается, а записывается в монитор |
Свойства страницы | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
панель | |
---|---|
Теги и атрибуты:
|