???????-?????? : Cisco Unified Intelligent Contact Management Enterprise

Использование триггеров базы данных вместе с Blended Agent для специализированной обработки

28 июля 2013 - Машинный перевод
Другие версии: PDF-версия:pdf | Английский (29 июня 2006) | Отзыв


Содержание


Введение

Это Описание технологических решений описывает, как использовать триггеры базы данных Сервера SQL для выполнения специализированной обработки, когда ответственные записи в частной базе данных Blended Agent (BA) закрыты или обновлены Менеджером кампании BA.

Предварительные условия

Требования

Компания Cisco рекомендует предварительно ознакомиться со следующими предметами:

  • Cisco Intelligent Contact Management (ICM)

  • Blended Agent программного обеспечения Cisco ICM

  • База данных Microsoft SQL

Используемые компоненты

Информация в этом Описании технологических решений основывается на этих версиях программного и аппаратного обеспечения:

  • Cisco ICM Version 4.6.x и позже

  • Microsoft SQL 7

Информация в этом Описании технологических решений была создана от устройств в определенной лабораторной среде. Все устройства, используемые в этом Описании технологических решений, запустили с чистой (заданной по умолчанию) конфигурацией. При работе в действующей сети необходимо понимать последствия выполнения любой команды.

Условные обозначения

Подробные сведения об условных обозначениях см. в документе "Условное обозначение технических терминов Cisco".

Обзор

BA хранит ответственные записи, которые будут набраны в базе данных Microsoft SQL Server. Использование приложения стандартной базы данных, такого как Сервер SQL, упрощает для третьих сторон и пользователей интегрировать их системы и приложения с BA.

Это Описание технологических решений описывает, как использовать триггеры базы данных Сервера SQL для выполнения специализированной обработки, когда Менеджер кампании BA закрывает или обновляет статус любых, подключают запись в базе данных.

Список дозвона и Список персональных обратных вызовов

BA хранит ответственные записи в таблице Dialing_List. Это хранит персональные записи обратного вызова в таблице Personal_Callback_List. Эти таблицы находятся в частной базе данных BA (customer_inst_baA). В этой таблице CallStatus и CallResult определяют состояние ответственной записи.

Name: Введите ? Размер Описание
CallStatus CHAR 1 Байт CallStatus указывает на состояние записи: P — ответственная запись находится на рассмотрении, чтобы быть вызванной. C — запись была закрыта. Сошлитесь на эти документы для полного описания всех значений CallStatus и их значений:
CallResult SMALLINT 2 Байта CallResult указывает на результат вызова как возвращено Менеджеру кампании BA номеронабирателем BA. Таким образом это указывает, отображает ли номеронабиратель VOICE, ЗАНЯТЫЙ, или НИКАКОЙ ОТВЕТ, когда набран контактный номер. Сошлитесь на эти документы для полных описаний всех значений CallResult и их значений:

Каждый раз, когда Менеджер кампании BA обновляет запись в Dialing_List или в Personal_Callback_List, CallStatus и поля CallResult обновлены. Поэтому просто создать триггеры базы данных Сервера SQL для мониторинга этих полей.

Использование включает таблицы базы данных BA, позволяет вам выполнять неограниченное количество специализированных целей. Это Описание технологических решений демонстрирует некоторые примеры сценария, где спусковые механизмы могут быть полезными.

Типовые триггеры

Примечание. Все примеры триггера в этом Описании технологических решений обращаются к фиктивной таблице, CRM_Table в базе данных CRM_DB.

Выполните эти шаги для создания спусковых механизмов от SQL Server Enterprise Manager:

  1. Перейдите к базе данных BA.

  2. Под базой данных нажмите значок Таблицы.

    Это отображает таблицы, которые привязаны к базе данных.

  3. Выберите таблицу, на которой вы хотите создать спусковой механизм.

  4. Щелкните правой кнопкой мыши выбранную таблицу и выберите All Tasks> Manage Triggers.

    /image/gif/paws/19091/blendedagent-a.gif

Вставьте ряд во внешнюю базу данных

Пример триггера в этом разделе вставляет строку в таблицу, CRM_Table (в базе данных CRM_DB) каждый раз, когда Менеджер кампании BA обновляет ответственную запись в Dialing_List.

СОЗДАЙТЕ СПУСКОВОЙ МЕХАНИЗМ insert_crm_data
CREATE TRIGGER insert_crm_data ON Dialing_List FOR UPDATE AS
/* Proceed only if EXACTLY ONE Record is updated */

!--- See next Note for an explanation.

IF (SELECT COUNT (*) FROM INSERTED) = 1
BEGIN

     INSERT CRM_DB..CRM_Table
     SELECT
     inserted.AccountNumber,
     GETDATE (),
     inserted.CallStatus
     FROM inserted

END

Примечание. Кроме записей контакта обновления, когда контакты вызывают, Менеджер кампании также выполняет некоторые массовые обновления. Они должны быть отфильтрованы спусковым механизмом. См. раздел Рекомендованных правил эксплуатации этого Описания технологических решений для получения дополнительной информации.

Контактная информация обновления во внешней базе данных

Пример триггера в этом разделе обновляет запись в CRM_Table таблицы (в базе данных CRM_DB) через соответствие номера учетной записи контакта. Например, если Менеджер кампании BA обновляет запись в Dialing_List с Номером учетной записи 1A2B3C4, то запись в CRM_Table с тем же номером учетной записи обновлена одновременно.

СОЗДАЙТЕ СПУСКОВОЙ МЕХАНИЗМ updt_customer_by_acctnum
CREATE TRIGGER updt_customer_by_acctnum ON Dialing_List FOR UPDATE AS
/* Proceed only if EXACTLY ONE Record is updated */
IF (SELECT COUNT (*) FROM INSERTED) = 1
BEGIN

     DECLARE @CS CHAR (1)
     DECLARE @ACCTNUM VARCHAR (25)
     SELECT
     @CS = inserted.CallStatus,
     @ACCTNUM = inserted.AccountNumber
     FROM inserted
     UPDATE Northwind..CRM_Table
     SET Status = @CS
     Where Northwind..CRM_Table.AccountNumber = @ACCTNUM

END

Удалите ряд из внешней базы данных

Если та ответственная запись была закрыта в Dialing_List, пример триггера в этом разделе удаляет запись из CRM_Table таблицы (в базе данных CRM_DB) через соответствие номера учетной записи контакта. Например, если Менеджер кампании BA закрывает запись в Dialing_List с Номером учетной записи 1A2B3C4, то запись в CRM_Table с тем же номером учетной записи удалена.

СОЗДАЙТЕ СПУСКОВОЙ МЕХАНИЗМ del_customer_by_acctnum
CREATE TRIGGER del_customer_by_acctnum ON Dialing_List FOR UPDATE AS
/* Proceed only if EXACTLY ONE Record is updated */
IF (SELECT COUNT (*) FROM INSERTED) = 1
BEGIN

     DECLARE @CS CHAR (1)
     DECLARE @ACCTNUM VARCHAR (25)
     SELECT
     @CS = inserted.CallStatus,
     @ACCTNUM = inserted.AccountNumber
     FROM inserted
     IF @CS = 'C'
     BEGIN
          DELETE Northwind..CRM_Table
          WHERE Northwind..CRM_Table.AccountNumber = @ACCTNUM
     END
END

Выполните внешний исполняемый файл от спускового механизма

Пример триггера в этом разделе выполняет программу C:\MYAPP.EXE. Спусковой механизм передает AccountNumber и CallStatus обновленной записи как параметры командной строки к MYAPP.EXE. Это происходит каждый раз, когда Менеджер кампании BA обновляет статус точно одной записи.

СОЗДАЙТЕ СПУСКОВОЙ МЕХАНИЗМ run_executable
CREATE TRIGGER run_executable ON Dialing_List FOR UPDATE AS
/* Proceed only if EXACTLY ONE Record is updated */
IF (SELECT COUNT (*) FROM INSERTED) = 1
BEGIN
     DELCARE *CMD VARCHAR (100)
     SELECT
     @CMD = 'C:\MYAPP.EXE ' + inserted.AccountNumber + ' ' + inserted.CallStatus
     FROM inserted
     EXEC master ..xp_cmdshell @CMD
END

Примечание. В предыдущей таблице, вместо того, чтобы вызвать xp_cmdshell сохраненную процедуру для начала исполняемого файла спусковой механизм может также выполнить любую другую сохраненную процедуру.

Вопросы производительности

  • Спусковые механизмы Сервера SQL выполняются синхронно. Это означает, существует ли обновление, включают таблицу, команда обновления на той таблице не возвращается, пока более аккуратное выполнение не закончено. Если спусковые механизмы оптимально не разработаны, то обновления базы данных BA замедляют. Кроме того, Менеджер кампании BA мог бы встретиться с таймаутами подключения открытых баз данных (ODBC), в то время как это выполняет инструкции SQL для обновления таблиц. Как правило спусковой механизм должен сделать минимальную возможную обработку и должен быть оптимизирован для скорости выполнения.

  • Результат более аккуратного выполнения мог бы повлиять на результат исходной операции SQL. Например, предположите, что спусковой механизм обновления определен на Dialing_List. если сбои спускового механизма обновления, в Dialing_List с неверным состоянием вызова (CallStatus), то операция обновления на Dialing_List могла бы также отказать и рассматриваемая запись можно оставить

  • Если спусковой механизм вложен, то операция SQL не завершает, пока все гнездовые триггеры не выполнены. Поэтому, сбой любого спускового механизма мог бы отказать исходную операцию SQL.

  • Если спусковой механизм выполняет внешнее приложение или другую сохраненную процедуру, то более аккуратное выполнение не завершено до внешнего приложения, или сохраненная процедура закончена.

  • Использование курсоров в спусковых механизмах не рекомендуется из-за потенциально негативного воздействия на производительности.

  • Спусковые механизмы не должны выполнять ЦПУ или с большой загрузкой памяти задачи.

  • Все спусковые механизмы должны быть хорошо протестированы и подчеркнуты перед развертываниями.

Рекомендуемые методы

  • Всегда проверяйте, что только одна запись обновлена перед переходом. Это препятствует тому, чтобы спусковой механизм действовал на массовые обновления, сделанные Менеджером кампании. Они - примеры массовых обновлений, которые обычно отфильтрованы спусковым механизмом:

    • Изменение в CallStatus записи от A (АКТИВНОГО) к (НЕИЗВЕСТНОМУ) U, когда номеронабиратель с АКТИВНЫМИ записями разъединяет от Менеджера кампании.

    • Менеджер кампании периодически обновляет записи в CallStatus U к P (PENDING).

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

  • Проверьте для значения CallStatus перед переходом. Например, когда Менеджер кампании передает запись на номеронабирателя BA, Менеджер кампании устанавливает CallStatus в (АКТИВНЫЙ) A. Спусковой механизм может проверить для CallStatus. Если Обновленным CallStatus является A, он не продолжается дальше.

  • Чтобы оптимизировать производительность во время обновлений базы данных BA, время и операции загруженности ресурсов не должны быть выполнены в спусковом механизме. Можно создать таблицу для приложения в другой базе данных для служения в качестве очереди. Это ускоряет более аккуратное выполнение. Можно использовать спусковой механизм, чтобы вставить, обновить, или удалить данные в той таблице для приложения. Затем, другое приложение может опросить ту таблицу для замен и выполнить дальнейшие задачи как необходимый.

Связанные обсуждения сообщества поддержки Cisco

В рамках сообщества поддержки Cisco можно задавать и отвечать на вопросы, обмениваться рекомендациями и совместно работать со своими коллегами.


Дополнительные сведения


Document ID: 19091