Pessoal,
Seguindo o meu post sobre o acelerador Dynamics CRM Developer Extensions, irei escrever um artigo de como criar, registrar e executar um plugin usando o Developer Extensions.
Temos como pré requesitos:
- Visual Studio 2012 ou superior;
- Dynamics CRM 2011 ou superior;
- Dynamics CRM Developer Extensions (Pesquisar por “Dynamics CRM Developer Extensions” no Visual Studio Gallery)
Com os pré requisitos ajustados, vamos ao Visual Studio…
Crie um novo projeto, selecione “CRM Developer Extensions”, depois “CRM Plug-in Project”, altere o nome do projeto se desejar:
Agora devemos escolher a versão do CRM que este projeto usará:
Precisamos criar nosso plugin. Clique com o botão direito em cima do nome do projeto, depois em “Add” > “CRM Plug-in Class…”:
Defina um nome para o plugin, neste exemplo irei fazer uma lógica que caso o Cliente Potencial (lead) for Qualificado, seja integrado com um outro sistema e uma tarefa seja criada no CRM. É só um exemplo de algo que pode ser feito, as regras sempre serão de acordo com cada necessidade.
Automaticamente, são adicionadas as DLLs do CRM, bem como uma estrutura de codificação. Veja a classe “Lead” tem como Base a interface “IPlugin”, assim, nossa classe é “obrigada”a fazer um override do método “Execute”. Além disso, também foi criada uma chave fortemente tipada “MyKey.snk” que permite o plugin ser registrado no CRM:
Dentro do método Execute é onde devemos adicionar nossa lógica, note que já foi recuperado o trace (tracer), contexto (context), serviço CRM (service) e entidade do contexto (entity).
Neste nosso exemplo de qualificar um lead, não teremos uma “entidade target” no contexto, pois a mensagem “QualifyLead” não possui esta informação, usaremos apenas o Id do Cliente Potencial (LeadId), assim, caso for necessário, podemos recuperar qualquer informação adicional utilizando o comando “Retrieve”.
Basicamente fiz uma chamada a um serviço externo ao CRM, e caso retorno “true” eu crio uma tarefa no CRM relacionada com o Cliente Potencial:
public void Execute(IServiceProvider serviceProvider) { ITracingService tracer = (ITracingService)serviceProvider.GetService(typeof(ITracingService)); IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); IOrganizationService service = factory.CreateOrganizationService(context.UserId); try { // Verify if context has LeadId and if is an EntityReference if (context.InputParameters.Contains("LeadId") && context.InputParameters["LeadId"] is EntityReference) { EntityReference leadReference = (EntityReference)context.InputParameters["LeadId"]; Guid leadId = leadReference.Id; MyIntegrarion integration = new MyIntegrarion(); // If the Integration work's. Create a new task if (integration.MyMethod(leadId)) { Entity task = new Entity("task"); task["subject"] = "Lead Qualify - Do contact"; task["scheduledstart"] = DateTime.Now.AddDays(1); task["scheduledend"] = DateTime.Now.AddDays(7); task["regardingobjectid"] = new EntityReference("lead", leadId); // Create Task service.Create(task); } } } catch (Exception e) { throw new InvalidPluginExecutionException(e.Message); } }
Compile o projeto no VS e abra o Plugin Registration, faça sua conexão com o CRM e clique em Register > Register New Assembly:
Informe a DLL do seu projeto de plugin que foi gerado na compilação, mantenha as demais configurações da forma que estão e registre o plugin. PS: se estiver usando a versão 2013 o 2015 do SDK, terá que navegar através do “tab”, assim que ultrapassar a opção “GAC” aperte “Enter”):
Agora precisamos adicionar um “step”. Step é quando o plugin será executado. Clique com o botão direito em cima do plugin e depois “Regiter New Step”:
Em nosso exemplo, informe na “Message” o valor “QualifyLead” e “Primary Entity” o valor “Lead”, as demais informações mantenha da forma que está. Por fim, clique em “Register New Step”:
Pronto, foi criado e registrado o plugin, basta agora testar, abra ou crie um Cliente Potencial e clique no botão “Qualificar”, você será redirecionado para uma oportunidade, volte para a tela do Cliente Potencial e veja a tarefa que foi criada, clicando em “Atividades”:
Para visualizar um exemplo da própria Microsoft, acesse:
https://msdn.microsoft.com/en-us/library/gg594416.aspx
[]’s,
Tiago Cardoso