|
19.08.2009, 15:05 | #1 |
Участник
|
Мелкомягкий CRM: Запуск бизнес-процессов с помощью JavaScript
Источник: http://mmcrm.ru/?p=611
============== Даже при том, что механизм бизнес-процессов в CRM 4.0 поддерживает массу способов срабатывания, могут быть случаи, когда треуется более сложная логика их запуска (чем простые события) или более простая – по кнопке на форме или в представлении (что предпочтительно для рутинных задач). Допустим мы хотим облегчить жизнь нашей службе поддержки, которой приходится обрабатывать кучу обращений в день. Посему сократим для них количество щелчков мыши! В данном примере рассмотрим простой бизнес-процесс, который будет просто закрывать Обращение. В Вашем же случаи он конечно же будет сложнее и может, например, управлять потоками обращений между уровнями службы поддержки (ну, или еще что-нибудь ). Бизнес-процесс Создайте бизнес-процесс для объекта Обращение, единственным шагом которого будет изменение статуса на Закрыто! Публикуйте. Откройте окно настройки бизнес-процесса снова (если Вы его уже закрыли) и нажмите Ctrl + N, откроется новое окно браузера, в котором будет все то же окно настройки бизнес-процесса плюс адресная строка, в которой, в свою очередь, будет GUID бизнес-процесса. Скопируйте его куда-нибудь – он нам позже понадобится (также нужный GUID можно посмотреть в табличке WorkflowBase)! Вызов с формы Для этого воспользуемся CRM’ной функцией launchOnDemandWorkflowForm. Добавим кнопку на форму объекта Обращение:
Вызов из представления Также используем стандартную CRM’ную функцию, но на этот раз она называется launchOnDemandWorkflow! В отличие от предыдущей первый парметр у нее всегда должен быть равен crmGrid (остальные такие же):
Вызов с помощью 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, напишите личное сообщение администратору. |
|
|
|