Oracle siebel crm что это
Чтобы рассказать обо всех особенностях Siebel CRM одной статьи точно не хватит, нужно написать как минимум книгу. Поэтому в данной статье мы постараемся осветить самые главные моменты, расскажем об основных составляющих, архитектуре и функциональных возможностях одной из самых востребованных на рынке управления взаимоотношениями с клиентами системе – Siebel CRM.
Компания Siebel Systems была одной из первых, вышедших на рынок CRM систем, в 2000-х годах ее доля относительно остальных вендоров подобных решений составляла 45%. Ее заказчиками в разное время становились такие компании как Cisco Systems и Compaq. В 2005 Siebel Systems была поглощена компанией Oracle и теперь полное название системы управления взаимоотношениями с клиентами выходит под брендом Oracle Siebel CRM.
Стоит сразу оговориться, что Siebel CRM ориентирована на большие компании, с численностью 10 000 и более сотрудников, а значит должна быть легко масштабируема и абсолютно совместима с различными платформами, обеспечивая одновременный доступ тысяч пользователей к корпоративным данным. Поэтому современные версии Siebel CRM имеют стандартную вэб-ориентированную, модульную архитектуру.
Схема обработки события
Схема обработки события выглядит следующим образом:
1. Система проверяет, есть ли обработчик события на ветке Pre-Branch данного события на уровне апплета. Если этого обработчика нет, или он есть и отработал без ошибок, то система обращается к стандартному обработчику апплета.
2. Стандартный обработчик апплета смотрит, умеет ли он обрабатывать вызванный метод. Если не умеет, или умеет и обработчик отработал без ошибок, то стандартный обработчик апплета инициирует событие InvokeMethod на бизнес-компоненте, на которой основан апплет.
3. Система опять проверяет, есть ли обработчик на Pre-Branch данного события для данной бизнес компоненты. Уже после этого управление передается на уровень стандартного обработчика бизнес компоненты.
4. Стандартный обработчик смотрит на метод, который ему передали вместе с событием InvokeMethod, и, если он его не узнает, то система остановит обработку и отобразит ошибку. Если этот метод знаком бизнес-компоненте, то она обработает его, и после этого управление перейдет на ветку Post-Branch события InvokeMethod на уровне бизнес компоненты.
5. Если на данной ветке определен какой-то обработчик, то он сделает свою работу. В случае если тут не случилось никаких ошибок, то дальше управление перейдет уже на ветку Post Branch события InvokeMethod на уровне апплета.
Выводы
1. При создании новых бизнес-компонент всегда указывайте имя класса CSSBCBase. Он дает достаточно много полезных вещей, в том числе функциональность, связанную с EventMethod.
2. При создании кнопок, которые автоматизируют функционал системы, рекомендую использовать в названии метода EventMethod для её активации и CanInvokeMethod для разграничения правил доступа. Это существенно поможет сократить количество скриптов и облегчит процесс разработки.
3. При условии соблюдения предыдущего пункта, обработчики нажатия кнопок можно вешать на любую ветку, как на Pre-Branch, так и на Post-Branch. Желательно задавать логику именно на уровне апплета.
4. С помощью свойства CanInvokeMethod можно ограничивать по заранее заданному условию доступ к стандартным методам апплета: NewRecord, DeleteRecord, NewQuery, ExecuteQuery. При этом при ограничении доступа к методу NewRecord не стоит использовать поля текущей сущности. Скорее всего, там будет обращение к профильным атрибутам через функцию GetProfileAttr() или к полям родительской записи через функцию ParentFieldValue().
Oracle Siebel CRM - система управления взаимоотношениями с клиентами, позволяющая построить комплексную корпоративную информационную систему, автоматизирующую как операции фронт-офиса: управление продажами, сервисом, маркетингом и взаимоотношения с партнерами; так и бэк-офисные: аналитика, управление заказами и персоналом, расчет компенсаций сотрудникам и т.п., а также интеграция с любыми ИТ-системами клиента [1] .
В маркетинге с помощью Oracle Siebel CRM оценивают эффективность затрат. Позволяя анализировать не только первичный отклик от различных акций, но и окончательную прибыльность, даже если реальное заключение контракта занимает несколько месяцев. Помимо этого, Oracle Siebel CRM предоставляет инструменты формирования целевой аудитории, управления привлечением клиентов от телемаркетинга до проведения полномасштабной рекламной кампании и передачи выявленных потенциальных клиентов в отдел продаж.
Oracle Siebel CRM позволяет организовать системное управление продажами – распределение потенциальных клиентов, отработку и подготовку контрактов, управление мотивацией сотрудников.
Сервисные модули Oracle Siebel CRM обеспечат информированность и повысят профессионализм сотрудников, контроль сроков и ответственности за каждый клиентский запрос.
Прозрачность и контролируемость процессов реализованных в Oracle Siebel CRM, позволяет четко и быстро адаптировать компанию к новым условиям, конкурентной борьбы и развитию.
По данным Oracle на 2011 г., ее CRM-систему используют более 7 млн пользователей по всему миру. Клиентами Siebel во всем мире уже стали самые передовые компании: 3M, AOL, Bank of America, BASF, Bosch Telecom, British American Tobacco, BBC, Cisco Systems, Citibank, Compaq, Daimler Chrysler, Dell, DHL, Ford, General Electric, Hewlett-Packard, IBM, Johnson & Johnson, Marriott, Panasonic, Microsoft, NASA, Nestle, Nokia, Philip Morris, Philips, PriceWaterhouseCoopers, Renault, Siemens, Sun, Warner Brothers, Xerox.
2019: Исправление 4 уязвимостей
17 октября 2019 года стало известно, что компания Oracle исправила 219 опасных уязвимостей в разных линейках продуктов. Oracle Siebel CRM получила 4 исправления. Подробнее здесь.
ОСНОВНЫЕ СОСТАВЛЯЮЩИЕ АРХИТЕКТУРЫ SIEBEL CRM
Хранит в себе клиентскую и административную информацию, а также репозитории (различные версии конфигураций Siebel CRM). В качестве такой базы данных может использоваться MS SQL, Oracle Enterprise Server, IBM D2B и др.
Хранит нереляционную и бинарную информацию, например: вложения, документы и временные файлы.
В системе может быть один или несколько Siebel серверов, вместе они образуют Enterprise сервер. Enterprise сервер – это некое логическое объединение, которое обеспечивает доступ ко всей базе данных и файловой системе и которое управляется одним Siebel Gateway Name Server’ом.
Обеспечивает управление всеми Siebel серверами, входящими в Enterprise и, соответственно, хранит его конфигурацию.
Устанавливается на вэб-сервер, осуществляет взаимодействие web-браузеров с объектами Siebel серверов, обеспечивает аутентификацию пользователей и балансировку нагрузки.
Обеспечивает графическое отображение объектов Siebel CRM и доступ к интерфейсу пользователя. Полный доступ обеспечивает только Internet Explorer, в ограниченном режиме поддерживаются Mozilla Firefox и Safari.
Эта статья пишется для того, чтобы дать представление о довольно специфическом программном комплексе, который используется во многих крупных предприятиях по всему миру, но при этом остается малоизвестным широкому кругу IT-специалистов, даже в сравнении с подобными ему продуктами, как, например, SAP.
Доступной литературы по ней довольно немного, или она настолька туманна и запутанна, что человеку «с улицы» может быть нелегко понять, что это вообще такое. Здесь мы попробуем прояснить этот вопрос.
Весь этот комплекс я буду называть просто Siebel, официально он называется Oracle Siebel CRM. Название Siebel представляет собой фамилию основателя компании (Thomas Siebel). В 2006 году компания была продана корпорации Oracle.
Siebel в первую очередь представляет собой систему управления взаимоотношениями с клиентами (Customer Relationship Manаgement — CRM). Эта система может быть установлена во множестве уже готовых «из коробки» конфигураций, как-то Siebel Call Center, Siebel Finance, Siebel Loyalty (с движком для системы программ лояльности клиентов), Siebel Hospitality (для гостиничного бизнеса) и многих других. Тем не менее, потребители продуктов Siebel (обычно это достаточно крупные компании, работающие по крайней мере с десятками тысяч клиентов), как правило, требуют «заточки» системы под нужды не только отрасли, но и конкретного предприятия. Поэтому создатели системы старались обеспечить максимальную гибкость настройки и разработки.
С точки зрения пользователя (сотрудника компании-заказчика) Siebel, как декларируется, представляет собой практически zero-footprint application, т.е для работы не требуется установка какого-то специального клиента. Работа с Siebel осуществляется просто в окне Internet Explorer. На самом деле при первом обращении к серверу устанавливаются соответствующие ActiveX компоненты, обеспечивающие действия с элементами управления.
К сожалению, на данный момент другие броузеры (кроме IE) не поддерживаются. Как легко понять, это привязывает пользователей к Windows (что касается серверов Siebel, то они могут работать как под Windows, так и под Linux, а также Solaris, HP-UX и т.д.).
Графический интерфейс пользователя выглядит примерно так:
Разумеется, доступны модули поддержки множества языков, включая русский.
Основной объект GUI Siebel — так называемый апплет. Это часть экрана, отображающая таблицу (list-applet) или данные из одной записи в виде формы (form-applet). Апплет обычно содержит меню и элементы управления в виде кнопок на экране. С их помощью пользователь добавляет или удаляет записи, совершает запросы (query) и другие действия, например, запуск какого-либо бизнес-процесса. Как уже говорилось, Siebel представляет огромные возможности для кастомизации, ограниченные разве что фантазией заказчика/разработчика. На картинке мы можем видеть один лист-апплет и один форм-апплет.
Здесь мы не можем вдаваться в тонкости работы с GUI, лучше опишем, как все это реализовано технически.
Как уже стало понятно, Siebel в первом приближении представляет собой некую графическую надстройку над БД, работающую, как веб-приложение. Базой может быть не только Oracle, но и, например, MS SQL Server или что-то еще. При установке системы автоматически создается огромное количество таблиц — создатели старались включить в комплект все, что кому-то может понадобиться. Тем не менее, всегда можно добавить и кастомные таблицы и колонки. Подавляющая часть информации о конфигурации самого Siebel (списки элементов GUI, кастомные скрипты, взаимосвязи между объектами) также хранится в той же базе, причем там может находиться множество репозиториев (версий конфигурации Siebel) сразу. Тем не менее, та конфигурация, которая реально используется сервером в данный момент, должна быть скомпилирована в специальный файл с расширением SRF. Без этого файла сервер работать не может.
Серверы Siebel объединяются в логические группировки (Enterprises). Работой энтерпрайза управляет служба под названием Siebel Gateway Name Server. К этому серверу обращается веб-сервер (Оracle, IIS..), снабженный специальными «расширениями» (SWSE — Siebel Web Server Extensions). Таковы основные элементы среды Siebel.
Основной инструмент разработчика Siebel — программа под названием Siebel Tools, которая и осуществляет компиляцию.
В простых случаях разработка осуществляется декларативно, посредством «перетаскивания мышкой» ЭУ GUI на форму и заполнения соответствующих полей данными, наподобие того, как создается приложение Windows Forms в Visual Studio. Для программирования более сложного поведения системы обычно используется либо встроенный язык (фактически это JScript или VBScript, на выбор разработчика), либо графический Workflow Designer.
Основной инструмент отладки — Siebel Dedicated Web Client (на жаргоне его называют «толстым клиентом», в отличие от «тонкого клиента», с которым работают пользователи работающей системы). Несмотря на название, «толстый клиент» представляет собой некий мини-сервер Siebel, запускаемый, как и Siebel Tools, на машине разработчика. Обычно работа разработчика представляет собой последовательность следующих действий:
Данная статья предназначена для тех, кто знаком с системой Oracle Siebel CRM и кто хорошо понимает её трехуровневую архитектуру.
При проектировании системы важно хорошо понимать, как она будет реагировать на различные действия пользователя: создание или удаление записи бизнес-компоненты, нажатие на кнопку на апплете, редактирование поля, сохранение данных и т.д. Чтобы создать именно ту архитектуру, которая с одной стороны реализует требования заказчика, а с другой не будет увеличивать издержки на дальнейшую поддержку и масштабирование, нужно знать, как Oracle Siebel CRM обрабатывает каждое событие, которое инициирует пользователь либо процедура.
- Pre-Branch
- Стандартный обработчик
- Post-Branch
Фактически Pre-Branch и Post-Branch – это заглушки, внутри которых у разработчиков есть возможность написать свои обработчики, то есть заложить свой алгоритм обработки события. Выбор ветки, в которой пишется этот алгоритм, зависит от того, что делает стандартный обработчик. В данной статье подробно разбираются два самых часто используемых события на уровне бизнес-компонент: SetFieldValue (обновление значения поля) и WriteRecord (сохранение изменений в базу данных).
ОСНОВНЫЕ СОСТАВЛЯЮЩИЕ АРХИТЕКТУРЫ SIEBEL CRM
Хранит в себе клиентскую и административную информацию, а также репозитории (различные версии конфигураций Siebel CRM). В качестве такой базы данных может использоваться MS SQL, Oracle Enterprise Server, IBM D2B и др.
Хранит нереляционную и бинарную информацию, например: вложения, документы и временные файлы.
В системе может быть один или несколько Siebel серверов, вместе они образуют Enterprise сервер. Enterprise сервер – это некое логическое объединение, которое обеспечивает доступ ко всей базе данных и файловой системе и которое управляется одним Siebel Gateway Name Server’ом.
Обеспечивает управление всеми Siebel серверами, входящими в Enterprise и, соответственно, хранит его конфигурацию.
Устанавливается на вэб-сервер, осуществляет взаимодействие web-браузеров с объектами Siebel серверов, обеспечивает аутентификацию пользователей и балансировку нагрузки.
Обеспечивает графическое отображение объектов Siebel CRM и доступ к интерфейсу пользователя. Полный доступ обеспечивает только Internet Explorer, в ограниченном режиме поддерживаются Mozilla Firefox и Safari.
Эта статья пишется для того, чтобы дать представление о довольно специфическом программном комплексе, который используется во многих крупных предприятиях по всему миру, но при этом остается малоизвестным широкому кругу IT-специалистов, даже в сравнении с подобными ему продуктами, как, например, SAP.
Доступной литературы по ней довольно немного, или она настолька туманна и запутанна, что человеку «с улицы» может быть нелегко понять, что это вообще такое. Здесь мы попробуем прояснить этот вопрос.
Весь этот комплекс я буду называть просто Siebel, официально он называется Oracle Siebel CRM. Название Siebel представляет собой фамилию основателя компании (Thomas Siebel). В 2006 году компания была продана корпорации Oracle.
Siebel в первую очередь представляет собой систему управления взаимоотношениями с клиентами (Customer Relationship Manаgement — CRM). Эта система может быть установлена во множестве уже готовых «из коробки» конфигураций, как-то Siebel Call Center, Siebel Finance, Siebel Loyalty (с движком для системы программ лояльности клиентов), Siebel Hospitality (для гостиничного бизнеса) и многих других. Тем не менее, потребители продуктов Siebel (обычно это достаточно крупные компании, работающие по крайней мере с десятками тысяч клиентов), как правило, требуют «заточки» системы под нужды не только отрасли, но и конкретного предприятия. Поэтому создатели системы старались обеспечить максимальную гибкость настройки и разработки.
С точки зрения пользователя (сотрудника компании-заказчика) Siebel, как декларируется, представляет собой практически zero-footprint application, т.е для работы не требуется установка какого-то специального клиента. Работа с Siebel осуществляется просто в окне Internet Explorer. На самом деле при первом обращении к серверу устанавливаются соответствующие ActiveX компоненты, обеспечивающие действия с элементами управления.
К сожалению, на данный момент другие броузеры (кроме IE) не поддерживаются. Как легко понять, это привязывает пользователей к Windows (что касается серверов Siebel, то они могут работать как под Windows, так и под Linux, а также Solaris, HP-UX и т.д.).
Графический интерфейс пользователя выглядит примерно так:
Разумеется, доступны модули поддержки множества языков, включая русский.
Основной объект GUI Siebel — так называемый апплет. Это часть экрана, отображающая таблицу (list-applet) или данные из одной записи в виде формы (form-applet). Апплет обычно содержит меню и элементы управления в виде кнопок на экране. С их помощью пользователь добавляет или удаляет записи, совершает запросы (query) и другие действия, например, запуск какого-либо бизнес-процесса. Как уже говорилось, Siebel представляет огромные возможности для кастомизации, ограниченные разве что фантазией заказчика/разработчика. На картинке мы можем видеть один лист-апплет и один форм-апплет.
Здесь мы не можем вдаваться в тонкости работы с GUI, лучше опишем, как все это реализовано технически.
Как уже стало понятно, Siebel в первом приближении представляет собой некую графическую надстройку над БД, работающую, как веб-приложение. Базой может быть не только Oracle, но и, например, MS SQL Server или что-то еще. При установке системы автоматически создается огромное количество таблиц — создатели старались включить в комплект все, что кому-то может понадобиться. Тем не менее, всегда можно добавить и кастомные таблицы и колонки. Подавляющая часть информации о конфигурации самого Siebel (списки элементов GUI, кастомные скрипты, взаимосвязи между объектами) также хранится в той же базе, причем там может находиться множество репозиториев (версий конфигурации Siebel) сразу. Тем не менее, та конфигурация, которая реально используется сервером в данный момент, должна быть скомпилирована в специальный файл с расширением SRF. Без этого файла сервер работать не может.
Серверы Siebel объединяются в логические группировки (Enterprises). Работой энтерпрайза управляет служба под названием Siebel Gateway Name Server. К этому серверу обращается веб-сервер (Оracle, IIS..), снабженный специальными «расширениями» (SWSE — Siebel Web Server Extensions). Таковы основные элементы среды Siebel.
Основной инструмент разработчика Siebel — программа под названием Siebel Tools, которая и осуществляет компиляцию.
В простых случаях разработка осуществляется декларативно, посредством «перетаскивания мышкой» ЭУ GUI на форму и заполнения соответствующих полей данными, наподобие того, как создается приложение Windows Forms в Visual Studio. Для программирования более сложного поведения системы обычно используется либо встроенный язык (фактически это JScript или VBScript, на выбор разработчика), либо графический Workflow Designer.
Основной инструмент отладки — Siebel Dedicated Web Client (на жаргоне его называют «толстым клиентом», в отличие от «тонкого клиента», с которым работают пользователи работающей системы). Несмотря на название, «толстый клиент» представляет собой некий мини-сервер Siebel, запускаемый, как и Siebel Tools, на машине разработчика. Обычно работа разработчика представляет собой последовательность следующих действий:
Данная статья предназначена для тех, кто знаком с системой Oracle Siebel CRM и кто хорошо понимает её трехуровневую архитектуру.
При проектировании системы важно хорошо понимать, как она будет реагировать на различные действия пользователя: создание или удаление записи бизнес-компоненты, нажатие на кнопку на апплете, редактирование поля, сохранение данных и т.д. Чтобы создать именно ту архитектуру, которая с одной стороны реализует требования заказчика, а с другой не будет увеличивать издержки на дальнейшую поддержку и масштабирование, нужно знать, как Oracle Siebel CRM обрабатывает каждое событие, которое инициирует пользователь либо процедура.
- Pre-Branch
- Стандартный обработчик
- Post-Branch
Фактически Pre-Branch и Post-Branch – это заглушки, внутри которых у разработчиков есть возможность написать свои обработчики, то есть заложить свой алгоритм обработки события. Выбор ветки, в которой пишется этот алгоритм, зависит от того, что делает стандартный обработчик. В данной статье подробно разбираются два самых часто используемых события на уровне бизнес-компонент: SetFieldValue (обновление значения поля) и WriteRecord (сохранение изменений в базу данных).
2012: Типовая схема интеграции в телекоме - возможности Oracle Siebel CRM
Как правило, ИТ-инфраструктура любой компании, работающей в сфере телекоммуникаций, представляет собой разрозненный набор информационных систем, которые нацелены на автоматизацию специфических задач и плохо согласованы между собой. В то же время, компания не всегда готова отказываться от подобных систем, так как инвестировала в них значительные средства.
Достаточно часто именно этот фактор становится препятствием для внедрения промышленной CRM-системы. Предполагается, что придется заново автоматизировать даже те процессы, выполнение которых вполне удовлетворяет и в имеющихся приложениях.
Пример схемы взаимодействия Oracle Siebel CRM с системами телекоммуникационной компании:
- Интеграция Oracle Siebel CRM с системой обработки Trouble Ticket
В данном случае интеграция Siebel CRM реализована на уровне приложений с использованием протокола SOAP, позволяющего передавать из системы в систему не весь массив данных, а лишь их атрибуты.
Достаточно часто в системах обработки Trouble Ticket (задачи/проблемы, требующие привлечения технических специалистов) существует стандартный WEB-сервис, который создает/обновляет сервисное обращение. При этом настройка интеграции для передачи информации из Oracle Siebel CRM выполняется в три шага:
- Импорт WSDL-файла, предоставляемого системой обработки Trouble Ticket (выполняется стандартными средствами Siebel CRM с использованием Wizard)
- Создание через интерфейс карты преобразования данных между существующими полями CRM-системы и импортированного описания WSDL
- Создание простого Workflow-процесса с помощью Siebel Workflow
Для создания сервисного обращения в Oracle Siebel CRM можно использовать преднастроенный WEB-сервис, описание и WSDL-файл к которому можно найти в документации или на официальном сайте Oracle. В этом случае задача по преобразованию данных для приема информации в Siebel CRM ляжет на систему обработки Trouble Ticket.
Другой вариант - создание еще более простого Workflow с использованием обратной карты преобразования данных и публикация его как WEB-сервиса. На входе такой Workflow получает XML.
- Импорт списков клиентов для маркетингового воздействия
При этом используется стандартный механизм Oracle Siebel CRM - Lists Marketing Import, принимающий текстовый файл с разделителем. Данный способ интеграции целесообразно применять в том случае, когда формирование целевой аудитории для маркетинговой кампании производится не в Oracle BI, а с помощью сторонних инструментов. Например, алгоритм отбора клиентов, склонных к оттоку, может быть достаточно сложным и его расчет не целесообразно переносить в CRM-систему.
Перед импортом TXT-файла есть возможность проставить соответствие столбцов файла с полями в CRM-системе. Таким образом, в Siebel CRM будет сформирован отдельный список клиентов, который можно будет включить в маркетинговую кампанию, дополнить, обработать и т.п.
В данном случае интеграция выполняется с помощью драйвера между call-центром и специализированным программируемым интерфейсом Oracle Siebel CRM - Siebel Communication Layer, который используется при интеграции с телефонией. Как правило, данный драйвер должен предоставляться поставщиками телекоммуникационного оборудования, но на практике далеко не каждый вендор имеет работоспособный коннектор. К тому же, для этого нередко необходимо отдельное лицензирование на каждое рабочее место агента call-центра.
При правильном подходе к интеграции агент call-центра должен выполнять все операции по управлению звонком непосредственно в CRM-системе без дополнительной загрузки приложений типа Agent Desktop. Например, Oracle Siebel CRM поддерживает "login-logout" агента в call-центре, управление статусом агента, а также выполняет обработку кампаний исходящего обзвона в режимах Preview и Predictive.
Siebel CRM позволяет выполнять обработку событий в call-центре в зависимости от процесса. Например, при входящем звонке происходит идентификация клиента и открывается его профиль в CRM-системе. При ответе на звонок может быть автоматически создано сервисное обращение, которое будет привязано к текущему профилю клиента. После окончания звонка автоматически будет установлен статус "завершен" и определена длительность разговора. Также при переадресации звонка между агентами в Oracle Siebel CRM можно выполнять передачу полного содержания текущего экрана другому агенту.
В текущей схеме приведен метод отправки SMS через вызов хранимой процедуры, но это лишь один из частных случаев. Siebel CRM позволяет использовать различные методы, вплоть до передачи текстового файла. Кроме того, стандартная функциональность Oracle Siebel CRM позволяет отправлять как одиночные SMS-сособщения, так и выполнять рассылку в рамках маркетинговой кампании с типом Wireless Message через Email Server, имеющий SMS-шлюз.
Для получения Email c общих почтовых ящиков (info, support и т.п.) используется модуль Siebel Email Response. Данный модуль имеет возможность настройки получения электронной почты с нескольких серверов, по разным протоколам, различными методами авторизации и поддержки безопасных соединений. При этом существуют коннекторы для серверной интеграции с Microsoft Exchange и Lotus Notes.
- Интеграция Siebel CRM с геоинформационной системой
При этом интеграция выполняется с помощью стандартного инструмента Siebel Symbolic URL, который позволяет передавать параметры с координатами в URL при загрузке карты.
- Загрузка и обновление профиля клиента из биллинга
Для загрузки и обновления полного профиля клиента используется модуль Enterprise Integration Manager (EIM), который является стандартным инструментом Oracle Siebel CRM для интеграции на уровне данных. Данный модуль содержит перечень преднастроенных "плоских" таблиц для всех основных бизнес-объектов Siebel CRM. EIM поддерживает импорт и экспорт, удаление объектов в пакетном режиме и может быть запущен командой или по расписанию. Каждая преднастроенная таблица может модифицироваться на предмет добавления новых атрибутов, целых дочерних бизнес-объектов и связей между ними. При этом EIM самостоятельно выполняет проверку на корректность форматов предоставляемых данных и справочников, а также оценивает правильность организации связей между бизнес-объектами CRM-системы. Кроме того, работа с Enterprise Integration Manager подробно документирована, что освобождает от необходимости написания кодов для загрузки данных на уровне СУБД со стороны Oracle Siebel CRM [1] .
Выводы
С учетом того, как Oracle Siebel CRM обрабатывает события, я рекомендую запускать валидацию данных на ветке Pre-Branch события WriteRecord. В этом случае при попытке пользователя сохранить созданную им запись система говорит, в каких полях данные не соответствуют определенной бизнес-логике. Пользователь вносит соответствующие корректировки и вновь пробует всё сохранить.
Проверка значений каждого поля потребует написания скрипта, так как Run-Time Event не имеет доступа к новому значению, когда находится на ветке Pre-Branch события SetFieldValue.
В предыдущих статьях (часть 1, часть 2) я рассмотрел особенности запуска и обработки основных событий бизнес-компонент: SetFieldValue и WriteRecord. Теперь я хочу обратиться к пользовательскому интерфейсу и посмотреть на то, как апплет обрабатывает нажатие на кнопку.
Практически на каждом апплете мы видим набор стандартных кнопок, которые позволяют выполнять базовые операции, такие как создание, удаление, запрос. Кроме них часто встречаются кнопки, которые вызывают более специфичные процедуры: сложный расчет параметров, верификация и генерация данных, запрос данных из внешней системы и т.д.
Принцип работы всех кнопок одинаковый, как стандартных, так и специфических. Фактически, каждая из них вызывает на апплете событие InvokeMethod, которому в качестве параметра передается тот метод, который заранее определен на конкретной кнопке:
Immediate Post Change
Свойство поля Immediate Post Change, в случае если оно равно «Y», говорит системе о том, что событие SetFieldValue для соответствующего поля нужно запустить в тот момент, когда пользователь внес изменения и пытается перевести курсор в другое место. Если оно не выставлено, а у большинства полей это так, то событие SetFieldValue происходит в рамках обработки события WriteRecord. То есть система смотрит, какие данные с уровня апплета не были перенесены на уровень бизнес-компонента, и для каждого поля запускает SetFieldValue, а уже потом запускается WriteRecord.
Ошибка стандартного обработчика
Как только кнопка становится доступной для нажатия, появляется возможность написать собственный обработчик. Тем не менее, как я указывал ранее, мы получим ошибку, которую возвращает стандартный обработчик события InvokeMethod на уровне бизнес-компоненты:
Есть два подхода к тому, как избежать этой ошибки. Первый основан на том, чтобы не дать системе дойти до стандартного обработчика на уровне бизнес-компоненты. Это можно сделать, если остановить обработку на Pre-Branch апплета либо бизнес-компоненты через скрипт:
Оператор return (CancelOperation); останавливает всю дальнейшую обработку.Второй подход основан на том, чтобы сказать стандартному обработчику, что на данный метод никаких ошибок выводить не надо. Тут опять появляется два способа это сделать. Первый связан с использованием User Property “Named Method n” на уровне апплета или на уровне бизнес компоненты. Использование этого свойства я планирую рассмотреть в следующей статье. Здесь же мы посмотрим на самый простой и интересный способ, связанный с использованием префикса EventMethod в имени метода.
Суть очень простая: когда указываете название метода для кнопки, если он не является стандартным, его нужно начинать с EventMethod. Когда стандартный обработчик события InvokeMethod на бизнес компоненте получает такое название метода, он просто ничего сам не делает, а передает управление дальше по схеме. Если в рассмотренном здесь примере название метода изменить на EventMethodTestMethod, то получим следующую картину:
Кнопка активна, и нажатие на неё не приводит к ошибкам. Можно ещё заметить тот факт, что я никаким образом не менял логику активации кнопки: скрипта никакого нет, свойство CanInvokeMethod занимается активацией строго метода TestMethod. Таким образом, это решение сразу двух проблем.
Используя такой подход, мы меняем основную парадигму. Теперь всё, что не запрещено, разрешено. Значит, после добавления такой кнопки нужно обязательно задуматься на тему того, как ограничить доступ к данной кнопке. Для этого можно использовать уже рассмотренный выше CanInvokeMethod.
Важное замечание: для того, чтобы трюк с EventMethod работал правильно, необходимо, чтобы класс бизнес-компоненты, на котором основан апплет, был равен либо CSSBCBase, либо любому унаследованному от него. Это означает, что для класса CSSBusComp, который по умолчанию прописывается для каждой новой бизнес-компоненты, такое решение работать не будет.
SetFieldValue – скрипт
Что именно делает это свойство, мы увидим позже.
Далее рассмотрим такой скрипт на уровне бизнес-компоненты Contact:
Было до ввода нового значения:
Ввод нового значения:
После перехода на другое поле:
Повторяем все те же самые действия и видим немного другой результат:Во-первых, в тексте ошибки отображается новое значение. Во-вторых, несмотря на ошибку, которую видит пользователь, введенное значение осталось на месте.
Если система дошла до выполнения Post Branch, то можно утверждать, что стандартный обработчик закончил свое выполнение без ошибок. Значит, из приведенного примера можно сделать вывод, что стандартный обработчик SetFieldValue обновляет значение поля на уровне бизнес-компоненты. Тут важно заметить, что на уровне таблицы в этот момент ничего не поменялось. Убедиться в этом можно, выполнив простой запрос в базу данных. Из приведенного примера можно сделать вывод: если обращаться к полю бизнес-компоненты на Pre-Branch события SetFieldValue, то система вернет текущее значение поля, которое там было до ввода нового значения. С другой стороны, если обращаться к полю бизнес-компоненты на Post-Branch события SetFieldValue, то система вернет введенное пользователем значение.
SetFieldValue – Run-Time Event
Все приведенные принципы работают и в том случае, если обработчики для Post-Branch и для Pre-Branch будут запускаться через механизм Run-Time Events, а не через скрипты.
Для демонстрации этого рассмотрим вот такое простое правило валидации (Administration – Data Validation):
Чтобы запустить это правило, нужно создать Action Set (Administration – Runtime Events) с одним действием. Параметры для этого действия приведены таблице:
Action Type BusService Business Service Name Data Validation Manager Business Service Method Validate Business Service Context «Rule Set Name», «SBL Contact Dummy Validation»
В результате обработчик готов и его нужно прицепить к соответствующему событию. Для этого потребуется создать Event:В данном случае обработчик будет запущен на ветке Pre-Branch события SetFieldValue бизнес-компоненты Contact, если будет обновляться поле [Email Address]. Тут важно обратить внимание на Conditional Expression. В его рамках система должна считать значение из поля [Email Address] и убедиться, что длина этого значения меньше 3 символов. Только в случае выполнения условия обработчик будет запущен.
Теперь можно проверить, как система будет реагировать на внесение изменений почтового адреса физического лица.
Ввод нового значения, длина которого меньше 3-х символов:
После перехода на другое поле:
Если теперь ввести старое значение в это поле:
и перейти на другое поле:
то, во-первых, пользователь увидит ошибку, во-вторых, значение в поле не изменится. Фактически мы получили сразу две ошибки: первая – системная, вторая – ошибка от Data Validation. Если кто-нибудь знает, как избавиться от первой в данном случае, напишите в комментариях. Если понимать принцип работы стандартного обработчика для события SetFieldValue, то полученный результат окажется вполне логичным.
Теперь можно внести маленькое изменение в рассмотренный Event:
В данном случае обработчик привязан к Post-Branch события SetFieldValue. Всё остальное остается, как было, но поведение системы будет существенно другим.
Но если попытаться внести значение меньше 3-х символов, то произойдет следующее:
2014: Обязанности специалистов по администрированию и поддержке Siebel CRM
Можно выделить такие категории специалистов, которые будут задействованы в поддержке Oracle Siebel CRM:
- DataBaseAdministrator - администратор баз данных
Эта категория специалистов нужна для поддержки любой промышленной системы. Из-за своей трехуровневой структуры и большого количества стандартных вспомогательных инструментов объем задач по поддержке базы данных Oracle Siebel CRM для DBA незначительный. Поэтому DataBase Administrator может параллельно поддерживать БД нескольких систем. Как правило, в зону его ответственности будет входит обеспечение высокой производительности серверов, администрирование пользователей, создание backups, а также восстановление системы. К специфическим задачам можно отнести помощь в интеграции на уровне данных, но для облегчения этих задач есть отличный инструмент - Siebel EIM.
Как и ранее, объем задач ИТ-администратора ничем особо не отличается от других промышленных систем. Это поддержание работы CRM-системы в штатном режиме и администрировании пользователей. Для администрирования Oracle Siebel CRM квалифицированному администратору не нужны и специализированные навыки, а в отдельных случаях может быть достаточно и технической документации. Для новых специалистов наших клиентов у нас есть разработанная программа обучения Oracle Siebel CRM, которая позволяет минимизировать риски.
Если CRM-система охватывает большое количество бизнес-процессов и в ней работают большое количество пользователей, то мы рекомендуем введение отдельного администрирования Siebel, но нередко ИТ-администраторы совмещают работу с несколькими системами.
WriteRecord
Если стандартный обработчик события SetFieldValue фактически спускает значения с уровня апплета на уровень бизнес-компоненты, то стандартный обработчик WriteRecord спускает данные с уровня бизнес-компоненты на уровень таблицы. То есть происходит обновление данных в соответствующих таблицах, которые потом смогут увидеть другие пользователи системы.
Разница между SetFieldValue и WriteRecord заключается ещё в том, что в первом случае обновление полей происходит по отдельности, а во втором случае в базу данных спускаются изменения сразу по всем полям.
Если разработчик напишет свой обработчик и привяжет его к Pre-Branch события WriteRecord, то все действия система выполнит до записи данных в базу, в другом случае запись в базу данных уже будет произведена. Соответственно, если на ветке Pre-Branch произойдет ошибка, то данные в базе не изменятся, и наоборот, если ошибка произойдет на ветке Post-Branch, то это не повлияет на стандартный обработчик и данные в базе обновятся.
Доступ к нажатию кнопки
Зная эту схему, можно легко расширять функциональность любых стандартных обработчиков и задавать свою бизнес-логику, но чаще всего разработчики определяют совершенно новые методы, которые стандартные обработчики события InvokeMethod ни на апплете, ни на бизнес компоненте не знают. Исходя из схемы, получается, что если обработка такого метода дойдет до уровня бизнес-компонент, то пользователь получит ошибку.
Помимо этой проблемы, возникает ещё вопрос доступа к вызову события InvokeMethod для конкретного метода. По умолчанию Siebel, если он не знает метод, определённый на кнопке, то кнопка не доступна для нажатия.
Решить эту проблему можно несколькими способами. Одним из самых распространённых способов является скрипт на уровне апплета:
Такое решение является достаточно гибким и позволяет писать сложную логику для определения доступа к данному методу, а, соответственно, и к нажатию кнопки. Тем не менее, есть более элегантные варианты решения. Например, это можно определить User Property на уровне апплета CanInvokeMethod: . Значением этого свойства может быть любое логическое выражение, написанное на языке Siebel Query Language, включая использование функции ParentFieldValue для доступа к полям родительской бизнес-компоненты.
Читайте также: