2008-11-24 2 views
3

Я хотел бы сделать следующее:Как разделить запись в MS Dynamics CRM с помощью рабочего процесса

при продаже человек присваивает настраиваемый объект (назовем его «первичная экспертиза») к возможностям в MS CRM 4.0 , система будет делиться возможностями с пользователем, который определяется как Владелец связанной записи «Первичная экспертиза».

Я хотел бы сделать это автоматически через рабочий процесс, но не могу найти шаг рабочего процесса, который бы это сделал. Да, и я читал на некоторых форумах, что это пока невозможно, только через сборку .NET.

Опыт, кто-нибудь?

ответ

3

Правильно, это возможно только через сборку .NET. Однако вы могли бы (если вы используете CRM 4), чтобы рабочий процесс изменил владельца на владельца действия и использовал общий ресурс с предыдущим параметром владельца, чтобы позволить старому владельцу получить доступ к вашей настраиваемой сущности?

3

Это возможно только путем вызова пользовательской активности рабочего процесса. Внутри пользовательского рабочего процесса вы можете вызвать GrantAccessRequest and GrantAccessResponse, настроив объект PrincipalAccess.

Подробнее см. В этом разделе «Sharing Object».

3

Если вы решите пойти с пользовательским плагином, ваш код может выглядеть следующим образом:

var rights = AccessRights.ReadAccess | AccessRights.WriteAccess; 

var principalAccess = new PrincipalAccess 
{ 
    // Gives the principal read write access 
    AccessMask = rights, 

    // Set the PrincipalAccess Object's Properties 
    Principal = sharingTarget.Key 
}; 

// Create the Request Object 
var grantAcessRequest = new GrantAccessRequest(); 
// Set the Request Object's properties 
grantAcessRequest.PrincipalAccess = principalAccess; 
// Set the Target. In my case it is account record 
var entityReference = new EntityReference(localContext.PluginExecutionContext.PrimaryEntityName, 
              localContext.PluginExecutionContext.PrimaryEntityId); 
//throw new InvalidPluginExecutionException("EntityReference"); 
grantAcessRequest.Target = entityReference; 

// Execute the Request 
localContext.OrganizationService.Execute(grantAcessRequest);