Аддоны
30
Май
9

Общий доступ к записям с помощью бизнес-процесса

Бизнес-процессы в MS CRM 4.0 предоставляют функциональные фозможности для создания, обновления и переназначения записей. Но в них нет ни одного способа для включения/отключениия общего доступа к записям. Но к счастью, это можно сделать спомощью SDK и кастомных плагинов.

Сегодня мы рассмотрим простой бизнес-процесс (написанный в Visual Studio – да-да, такое тоже возможно 🙂 ), расшаривающий любую запись (которая вообще может быть расшарена), а также снимающий с них общий доступ.

Скачайте Infusion.CRM.WF.CRM40ShareStep.dll (это плагин) и поместите его в папку C:\Program Files\Microsoft Dynamics CRM Server\Server\bin\assembly.

Теперь нужно зарегистрировать плагин:

  • Скачайте Plugin Registration Tool и запустите;
  • Введите параметры подключения к CRM серверу и жмите Connect (Вас попросят ввести пароль – не отказываейтесь 🙂 );
  • Кликните Register — Register New Assembly. В открывшемся окне регистрации новой сборки, вверху справа, щелкните «…» и укажите путь к CRM.WF.CRM40ShareStep.dll, который Вы скопировали в самом начале (т.е. по умолчанию он будет C:\Program Files\Microsoft Dynamics CRM Server\Server\bin\assembly\CRM.WF.CRM40ShareStep.dll);
  • В качестве месторасположения выберите Disk;
  • Жмите Register Selected Plugins и дождитесь пока он зарегистрируется.



Ну, на этом все 🙂 Можете создавать свои бизнес-процессы. Но теперь в списке добавления шага появится новый пункт меню Utilities — Share Record. Открываете его свойства и задаете на кого переназначать и с какими правами! Только заметьте, что на одном шаге Вы можете расшариь запись только для двух пользователей и/или двух групп.


Также обратите внимание на исходные файлы этого солюшена 🙂

Комментарии (9)
  • Max 30.05.2009

    Супер вещь!!!
    А где можно посмотреть код этой dll-сборки, чтобы иметь возможность внести изменения?

  • slivka_83 30.05.2009

    Прикрепил исходники 🙂

  • Max 30.05.2009

    Большое спасибо!

  • Sergey 30.05.2009

    А как убрать доступ не всем, а только некоторым. Чёто не получается у меня

  • Sergey 30.05.2009

    Уже решил сам. Переписал слегка код.
    private void RemovePrincipals(Context context, PrincipalAccess[] principals)
    {
    TargetOwnedDynamic target = new TargetOwnedDynamic();
    target.EntityName = context.CurrentEntityName;
    target.EntityId = context.CurrentRecordId;

    RevokeAccessRequest request = new RevokeAccessRequest();
    request.Target = target;
    SecurityPrincipal principal = new SecurityPrincipal();
    principal.Type = SecurityPrincipalType.User;
    principal.PrincipalId = User1.Value;

    request.Revokee = principal;
    RevokeAccessResponse response = (RevokeAccessResponse)context.SvcHandle.Execute(request);
    }

  • slivka_83 30.05.2009

    А для тех «кто в танке», может поясните, что в итоге получилось и с чем это есть?
    И еще можете прислать готовый результат, чтобы можно было выложить здесь?

  • Макс 30.05.2009

    Доброго дня, а что то подобное для 2011 есть?

  • slivka_83 30.05.2009

    Здравствуйте. Попробуйте это: http://crm2011workflowutilsф.codeplex.com или http://crm2011sharestep.codeplex.com/

  • Макс 30.05.2009

    Спасибо огромное!)

*

code