Разработка
14
Июн
6

Выполнение бизнес-процесса с помощью C#

В дополнение к статье о запуске бизнес-процессов с помощью JavaScript рассмотрим как их запускать с помощью .Net кода (к счастью это очень легко 🙂 ). Для этого используется сообщение ExecuteWorkflow. Для примера создадим простейший плагин, который запустит экземпляр бизнес-процесс для записи Контакта:

  • Для начала создайте какой-либо Бизнес-процес для объекта Контакт (выполняющий любое действие;
  • Находясь в открытом окне Бизнес-процесса нажмите Ctrl+N. Откроется новое окно браузера, но уже с адресной строкой – скопируйте из нее GUID Бизнес-процесса (таким же способом добудьте и GUID какого-нибудь Контакта);
  • Создайте новый плагин (подпишите и подключите сборки SDK) и повесьте на него такой код:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Microsoft.Crm.Sdk;  
    using Microsoft.Crm.SdkTypeProxy;  
    
    namespace ClassLibrary7
    {
        public class ExecuteWF : IPlugin  
        {
            public void Execute(IPluginExecutionContext context)
            {
                ICrmService service = context.CreateCrmService(true);
    
                // Создаем запрос
                ExecuteWorkflowRequest request = new ExecuteWorkflowRequest();
    
                // Задаем GUID Бизнес-процесса
                request.WorkflowId = new Guid("75818E9A-6C02-403F-9AB6-D356E7C84F00");
    
                // Задаем GUID записи для которой будет выполняться Бизнес-процесс
                request.EntityId = new Guid("a9e7ee30-af77-df11-8d11-000c29f6b309");
    
                // Выполняем запрос
                ExecuteWorkflowResponse response = (ExecuteWorkflowResponse)service.Execute(request);
            }
        }
    }
    

    Код довольно простой: для начала объявляем экземпляр класса ExecuteWorkflow, затем подсовываем ему бизнес-процесс и запись, в отношении которой он должен отработать 🙂 и все 🙂 ну, и отправяем запрос на сервер;

  • Зарегистрируйте плагин в CRM и вызовите событие на которое он зарегистрирован. Затем открываем экземпляр Контакта (вкладка Бизнес-процессы), GUID которого использовали в коде.



Комментарии (6)
  • Александр 14.06.2010

    ДОбрый день, а не подскажите каким то образом можно запускать БП с помощью плагина зависшие БП? и если можно то объясните как.

  • slivka_83 14.06.2010

    Здрасьте. А они наверное зависли не просто так а по какойто причине? Вы эту причину исправили?

  • Александр 14.06.2010

    Они почему то на сервере блокируют друг друга.
    Нашел в инете такую инфу по решению
    но чет непомогло. Вот думаю что бы периодически както запускать БП по гуиду.
    Deadlocks in MS CRM Database
    To avoid dead locks in MSCRM database, MS suggests two settings to be done.

    • Enable Read Committed Snapshot Isolation Level

    Go

    ALTER DATABASE Org_MSCRM

    SET READ_COMMITTED_SNAPSHOT ON

    Go

    SET TRANSACTION ISOLATION LEVEL SNAPSHOT

    Go

    • Set ‘Max Degree of Parallelism’ to 1

    Set the Max Degree of Parallelism to improve performance which will improve
    query execution for CRM because any given query will only use one processor for
    execution and will prevent unnecessary blocking from taking place.

  • slivka_83 14.06.2010

    Как рестартнуть не знаю. Встрчеал только сценарии их удаления…

  • Aleks 14.06.2010

    А можно передать параметры в бизнес-процесс. Чтобы при обновлении записи или создании, он записывал в поля переданные параметры.

  • slivka_83 14.06.2010

    Насколько мне известно, нельзя.

*

code