Введение В предыдущих статьях ( часть 1 , часть 2 ) Я рассмотрел особенности запуска и обработки основных событий бизнес-компонента: SetFieldValue и WriteRecord. Теперь я хочу перейти к пользовательскому интерфейсу и посмотреть, как апплет обрабатывает нажатия кнопок.
Практически на каждом апплете мы видим набор стандартных кнопок, позволяющих выполнять основные операции, такие как создание, удаление, запрос.
Помимо них часто встречаются кнопки, вызывающие более конкретные процедуры: сложный расчет параметров, проверка и генерация данных, запрос данных из внешней системы и т. д. Принцип работы всех кнопок одинаков, как стандартных, так и специфических.
Фактически каждый из них вызывает событие InvokeMethod апплета, которому в качестве параметра передается метод, предопределенный для конкретной кнопки:
Схема обработки событий
Схема обработки событий выглядит следующим образом:1. Система проверяет, есть ли обработчик событий в ветке Pre-Branch этого события на уровне апплета.
Если этого обработчика не существует или он существует и работал без ошибок, то система обращается к стандартному обработчику апплета.
2. Стандартный обработчик апплета проверяет, может ли он обработать вызванный метод. Если не может, или может и обработчик сработал без ошибок, то стандартный обработчик апплета инициирует событие InvokeMethod на бизнес-компоненте, на котором базируется апплет. 3. Система еще раз проверяет, существует ли обработчик Pre-Branch для данного события для данного бизнес-компонента.
После этого управление передается на уровень процессора стандартной бизнес-компоненты.
4. Стандартный обработчик просматривает метод, который был ему передан вместе с событием InvokeMethod, и если не распознает его, система прекратит обработку и выдаст ошибку.
Если этот метод знаком бизнес-компоненту, то он его обработает, и после этого управление перейдет к ветке Post-Branch события InvokeMethod на уровне бизнес-компонента.
5. Если в этой ветке определен обработчик, он выполнит свою работу.
Если здесь ошибок не произошло, то управление перейдет в ветку Post события InvokeMethod на уровне апплета.
Нажмите кнопку Доступ
Зная эту схему, можно легко расширить функционал любых стандартных обработчиков и задать собственную бизнес-логику, но чаще всего разработчики определяют совершенно новые методы, о которых не знают стандартные обработчики событий InvokeMethod ни на апплете, ни на бизнес-компоненте.Судя по диаграмме, получается, что если обработка такого метода дойдет до уровня бизнес-компонента, пользователь получит ошибку.
Помимо этой проблемы существует еще проблема доступа к вызову события InvokeMethod для конкретного метода.
По умолчанию Siebel, если ему неизвестен метод, определенный для кнопки, кнопка недоступна для нажатия.
Есть несколько способов решить эту проблему.
Одним из наиболее распространенных методов является скрипт на уровне апплета:
Теги: #siebel crmfunction WebApplet_PreCanInvokeMethod (MethodName, &CanInvoke) {
-
Qiwi В Малайзии
19 Oct, 24 -
Коммуникаторы И Неофициальные Прошивки
19 Oct, 24 -
Дж.а.р.в.ис. - Невидимый Помощник Лео
19 Oct, 24