AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Blogs
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.08.2009, 15:05   #1  
Blog bot is offline
Blog bot
Участник
 
25,626 / 848 (80) +++++++
Регистрация: 28.10.2006
Мелкомягкий CRM: Запуск бизнес-процессов с помощью JavaScript
Источник: http://mmcrm.ru/?p=611
==============

Даже при том, что механизм бизнес-процессов в CRM 4.0 поддерживает массу способов срабатывания, могут быть случаи, когда треуется более сложная логика их запуска (чем простые события) или более простая – по кнопке на форме или в представлении (что предпочтительно для рутинных задач).

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

Бизнес-процесс

Создайте бизнес-процесс для объекта Обращение, единственным шагом которого будет изменение статуса на Закрыто! Публикуйте.

Откройте окно настройки бизнес-процесса снова (если Вы его уже закрыли) и нажмите Ctrl + N, откроется новое окно браузера, в котором будет все то же окно настройки бизнес-процесса плюс адресная строка, в которой, в свою очередь, будет GUID бизнес-процесса. Скопируйте его куда-нибудь – он нам позже понадобится (также нужный GUID можно посмотреть в табличке WorkflowBase)!




Вызов с формы

Для этого воспользуемся CRM’ной функцией launchOnDemandWorkflowForm. Добавим кнопку на форму объекта Обращение:
  • Выгрузите файл ISV.Config и откройте его в каком-нибудь тектовом редакторе;
  • Добавьте в него следующий код:
    Пояснение… функции launchOnDemandWorkflowForm мы передали три параметра: первый пустой (всегда), второй это id объекта на который настроен бизнес-процесс (в данном случаи это Обращение), а последний это id самого бизнес-процесса!
  • Экспортируйте ISV.Config обратно!
  • Если Вы этого еще не сделали, то включите отображение настраеваемых меню в CRM системе: Параметры – Администрирование – Системные параметры – вкладка Настройка – секция Настраиваемые меню и панели инструментов – добавьте те клиенты, в которых хотите показывать кастомные кнопки!
  • Откройте какое-нибудь активное Обращение и нажмите на новую кнопку! Появится вопрос с подтверждением, жмите ОК – запусится бизнес-процес (Вы можете наблюдать есо в Системных заданиях или в разделе Бизнес-процессы на левой навигационной панели). Через некоторое время (после того как бизнес-процесс отработает) обращение перейдет в неактивное состояние!





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

Также используем стандартную CRM’ную функцию, но на этот раз она называется launchOnDemandWorkflow! В отличие от предыдущей первый парметр у нее всегда должен быть равен crmGrid (остальные такие же):
  • Снова выгрузите ISV.Config и добавьте в него следующий код:
  • Импортируйте обратно ISV.Config и наблюдает новую кнопочку на панели инструментов представленя объекта Обращения! Там же и протестируйте!
Как Вы понимаете, в представлении можно выбрать несколько записей и применить к ним всем нужный воркфлоу по одной кнопке!

Вызов с помощью Web-сервиса

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

/* объявляем функцию */ExecuteWorkflow = function(entityId, workflowId) {var xml = "" +"" +"" + GenerateAuthenticationHeader() +" " +" " +" " +" " + entityId + "" +" " + workflowId + "" +" " +" " +" " +"" +"";var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Execute");xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");xmlHttpRequest.setRequestHeader("Content-Length", xml.length);xmlHttpRequest.send(xml);var resultXml = xmlHttpRequest.responseXML;return(resultXml.xml);}// вызываем бизнес-процессExecuteWorkflow(crmForm.ObjectId, "82F70D59-8FBA-4809-8178-A3161173440E"); // измените на Id Вашего бизнес-процессаТестируем: создайте новое обращение, введите обязательные поля, сохраните (если не сохраним не будет записи, а не будет записи не сможем применить к ней бизнес-процесс), измените поле Степень удовлетворенности. Все на связанном представлении можете любоваться как постепенно закрывается Вам инцидент!






Этот же скрипт можно встроить и в ISV.Config (для любителей саппорта )! Например, так (измените только id бизнес-процесса в третьей переменной):






Обратите внимание, что все служебные символы для xml-файла заменены, так называемыми, ссылками на сущность (т.е., например, левая угловая скобка < заменена на < и т.д. с дргими заменителями и, вообще, более подробно с форматом xml можете ознакомится в педивикии).



Источник: http://mmcrm.ru/?p=611
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
CRM DE LA CREME! Configuring Microsoft Dynamics CRM 4.0 for Internet-facing deployment Blog bot Dynamics CRM: Blogs 0 18.08.2009 11:05
Microsoft Dynamics CRM Team Blog: CRM Online: Reporting Options Blog bot Dynamics CRM: Blogs 0 18.06.2009 06:14
Microsoft Dynamics CRM Team Blog: Building Rich-Client Dashboards for Microsoft Dynamics CRM with Windows Presentation Foundation Blog bot Dynamics CRM: Blogs 1 31.03.2009 13:24
Microsoft Dynamics CRM Team Blog: List Web Part for Microsoft Dynamics CRM 4.0 Deployment Scenarios Blog bot Dynamics CRM: Blogs 0 30.01.2009 22:05
Импорт бизнес-процессов CRM 4.0 Rus Impulse Dynamics CRM: Администрирование 4 24.10.2008 07:58
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 13:33.