Друзья! Как я и говорил, в данном блоге помимо собственных статей я буду публиковать переводы уже имеющихся статей с зарубежных блогов, с указанием ссылки на первоисточник. Первая из таких статей посвящена подтверждающему диалогу.
Каждый Siebel-профессионал знает, что невозможно получить действие от пользователя, используя серверные скрипты. Обоснование тому: серверные скрипты работают на сервере и нет возможности вывести некий диалог клиенту на экран.
Если погуглить на тему «Siebel Confirm», то получим кучу результатов, общий вывод которых одинаков: это можно сделать только используя браузерные скрипты. Если искать на металинке, то мы наткнемся на эти две статьи:
1. Как реализовать сообщение с входными параметрами в Сибель 7 и Сибель 8 ? [ID 476612.1]
2. Как отобразить сообщение из серверных скриптов в браузере? [ID 477323.1]

Заключение одно:

«Интерактивные диалоговые окна — это особенности, принадлежащие языку JavaScript и могут быть реализованы в браузерных скриптах»

Это звучит, как твердый совет делать именно так! Но поверите ли Вы мне, если я скажу Вам, что есть возможность вызвать подтверждающий диалог с сервера, используя стандартный фукнционал?

Если Вы не верите, то разрешите представить Вам недокументированнй бизнес сервис, который как раз позволяет сделать это.

Бизнес сервис: LS Pharma Signature UI Service
Имя метода: ShowConfirmDialog

Давайте откроем приложение Siebel и зайдем в моделирование бизнес сервисов. введем вышеуказанный сервис и метод и следующие параметры:

Cancel Method Name: MyCustomMethod1
Confirm Text: Шкура, ты выйдешь за меня?
OK Method Name: MyCustomMethod2

Это должно выглядеть так:

cd_1

Нажмите кнопку «Выполнение» и получите:

cd_2

Получился диалог с кнопками «ОК» и «Отмена», который может быть использован во всем приложении. Но самое лучшее — он не требует написания кода.
Теперь давайте нажмем на любую кнопку и получим ошибку.

cd_3

Это произошло потому, что мы не реализовали обработку этих методов. Но давайте попробуем вызвать методы, которые существуют и сделаем это не в симуляторе, а в части какого-то реального функционала.

Найдите Ваш любимый БК и добавьте следующее user property, чтобы включить кастомный метод и вызвать бизнес сервис для показа подтверждающего диалога.

Named Method

«InvokeAction», «INVOKESVC», «WS Transaction Settings», «LS Pharma Signature UI Service», «ShowConfirmDialog», «‘Cancel Method Name'», «‘NewRecord'», «‘Confirm Text'», «‘Hello'», «‘OK Method Name'», «‘DeleteRecord'»

Далее найдите Ваш любимый апплет и добавьте на него новую кнопку со свойством:

Method Invoked: InvokeAction

Объявления методов ОК и Отмена будут инициировать соответствующие события из апплета в БК и из браузера на сервер, как нормальные события, которые в дальнейшем можно перехватывать и обрабатывать в соответствии с требованиями.

Результаты

NewRecord — создает новую запись в апплете
DeleteRecord — этот метод вызывает другой подтверждающий диалог. Он очень похож, на тот, который мы сделали, различается только текстом.

Оригинал статьи: ImpossibleSiebel