Разработка
25
Май
0

Передача данных между плагинами

Одно из нововведений 4 версии CRM – концепция Общих переменных (shared variables) для плагинов.

Свойство SharedVariables позволяет плгинам предоставлять общий доступ к своим данным. Т.е. плагин, который будет запущено первым, может поместить некоторые данные в SharedVariables propertybag (контекстная переменная), к которой в последствии сможет обратиться плагин, который будет запущен после. Порядок выполнения плагинов зависит от значения ранга установленного для них.

Для примера создадим два плагина (в одной сборке) и передадим произвольное значение из одного в другой:

  • Создайте новый плагин;
  • Добавьте в него сборки из SDK и подпишите его;
  • Поместите в плагин такой код:
    using System;
    using System.Web;
    using System.Web.Services.Protocols;
    using System.Collections.Generic;
    using Microsoft.Crm.Sdk;
    using Microsoft.Crm.SdkTypeProxy;
    
    namespace ClassLibrary1
    {
        public class CreateShareVar : IPlugin
        {
            public void Execute(IPluginExecutionContext context)
            {
                // Объявляем Общую переменную и помещаем туда произвольное значение
                context.SharedVariables["SomeVar"] = "Слон!";
            }
        }
        public class ReadShareVar : IPlugin
        {
            public void Execute(IPluginExecutionContext context)
            {
                // Проверяем что искомая Общая переменная существует
                if (context.SharedVariables.Contains("SomeVar"))
                {
                    // Выводим сообщение содержащее полученную Общую переменную
                    throw new Exception((string)context.SharedVariables["SomeVar"]);
                }
            }
        } 
    }
    

    В данном коде объявляются два класса (читай два плагина 🙂 ): CreateShareVar и ReadShareVar. В первом мы создаем Общую переменную, а во втором ее считываем и выводим в сообщении;

  • Соберите проект. Запустите Plugin Registration Tool и зарегистрируйте сборку (с обоими плагинами) в CRM;
  • Далее создайте два новых шага (на одно событие, например, на Update) – по одному для каждого плагина. Причем в шаге для первого плагина (CreateShareVar) укажите в параметре Execution Order значение 1, а в шаге для второго плагина (ReadShareVar) значение 2;
  • Вызовите событие на которые зарегистрированы плагины в CRM 🙂



Комментарии (0)

*

code