我想做以下事情:
当销售人员将自定义实体(我们称之为“主要专业知识”)分配给 MS CRM 4.0 中的机会时,系统将与定义为关联“主要专业知识”记录所有者的用户共享机会。
我想通过工作流自动完成,但找不到可以完成的工作流步骤。是的,我在一些论坛上读到这实际上还不可能,只能通过 .NET 程序集。
经验,有人吗?
我想做以下事情:
当销售人员将自定义实体(我们称之为“主要专业知识”)分配给 MS CRM 4.0 中的机会时,系统将与定义为关联“主要专业知识”记录所有者的用户共享机会。
我想通过工作流自动完成,但找不到可以完成的工作流步骤。是的,我在一些论坛上读到这实际上还不可能,只能通过 .NET 程序集。
经验,有人吗?
正确,只能通过 .NET 程序集实现。但是,您可以(如果您使用 CRM 4)让工作流将所有者更改为活动的所有者,并使用与先前所有者共享选项来启用旧所有者对您的自定义实体的访问权限?
只有通过调用自定义工作流活动才有可能。在自定义工作流活动中,您可以通过配置PrincipalAccess对象来调用GrantAccessRequest 和 GrantAccessResponse 。
请参阅此“共享对象”部分了解详细信息。
如果您决定使用自定义插件,您的代码可能如下所示:
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);