Usuário com melhor resposta
Registro de Plug-in

Pergunta
-
Bom dia a todos,
Estou desenvolvendo um plug-in (na verdade, o plug-in em si já estava pronto, mas não testei), porém estou tendo dificuldades com o Plug-in Registration Tool.
O Plug-in Registration Tool também já estava pronto, mas não estou sabendo como utilizá-lo.
Quando faço uma nova conexão e coloco para registrar um novo passo, me aparece uma nova janela pedindo um 'Message', 'Primary Entity', 'Secondary Entity' e outras informações.
Na verdade eu nem sei se estou no caminho certo. É por aí mesmo que tenho que seguir para registrar o Plug-in?
E o que devo colocar nos itens que me são pedidos, principalmente 'Message' que é obrigatório.
Obrigado a todos,
Bruno Cardoso
Respostas
-
Olá Bruno,
Você está no caminho certo, é através do [Plugin Registration Tool] mesmo. Segue explicação dos campos exigidos:
Message - É o [Evento] em que o seu Plugin deve ser executado. Por exemplo, se vc digitar [Create], será executado qdo criar um registro. Outras principais mensagens são [Update], [Delete], [Assign].
Primary Entity - Especifique o nome da Entidade ao qual o Plugin deverá atuar.
Secondary Entity - Não obrigatório.
Abaixo na tela vc tem a opção de especificar se o Plugin vai rodar de forma [Síncrona] ou [Assíncrona]. Também de vai rodar o Evento em um [Pré] ou [Post] Event. Por exemplo, se especificar [Post] e o Evento [Update], significa que o Plugin vai ser executado somente [após] a atualização do registro.
[]
Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)- Marcado como Resposta Bruno dos Santos A. Cardoso quinta-feira, 23 de julho de 2009 14:05
-
Olá Anderson,
O código está correto.
Provavelmente vc não [assinou] sua DLL, que é um recurso do [.NET Strong Name] exigido pelo Plugin.
Para assinar faça o seguinte:
- Remova o registro da DLL no Plugin Registration Tool;
- Abra as propriedades do projeto;
- Cique no link [Signing];
- Clique no checkbox [Sign the Assembly];
- No Combobox [Choose a strong name key file] clique em [New];
- Informe um valor para o campo [Key file name] e desmarque a opção [Protect my key file with a password];
- Compile novamente a DLL, atualize o [Server\Bin\Assembly] do CRM e registre a DLL.
[]
Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)- Sugerido como Resposta Anderson M. de Freitas quarta-feira, 22 de julho de 2009 13:44
- Marcado como Resposta Bruno dos Santos A. Cardoso quinta-feira, 23 de julho de 2009 14:05
Todas as Respostas
-
Olá Bruno,
Você está no caminho certo, é através do [Plugin Registration Tool] mesmo. Segue explicação dos campos exigidos:
Message - É o [Evento] em que o seu Plugin deve ser executado. Por exemplo, se vc digitar [Create], será executado qdo criar um registro. Outras principais mensagens são [Update], [Delete], [Assign].
Primary Entity - Especifique o nome da Entidade ao qual o Plugin deverá atuar.
Secondary Entity - Não obrigatório.
Abaixo na tela vc tem a opção de especificar se o Plugin vai rodar de forma [Síncrona] ou [Assíncrona]. Também de vai rodar o Evento em um [Pré] ou [Post] Event. Por exemplo, se especificar [Post] e o Evento [Update], significa que o Plugin vai ser executado somente [após] a atualização do registro.
[]
Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)- Marcado como Resposta Bruno dos Santos A. Cardoso quinta-feira, 23 de julho de 2009 14:05
-
-
Bruno,
Este campo já deve vir preenchido. Se não veio, é porque a sua classe de Plugin não está expondo um método [público]. É através deste método que o Plugin Registration se baseia.
Segue exemplo de um [Template] da classe de Plugin:
using Microsoft.Crm.Sdk;
using Microsoft.Crm.SdkTypeProxy;namespace Microsoft.Crm.Sdk.PluginTemplate
{
public class AccountCreateHandler : IPlugin
{
public void Execute(IPluginExecutionContext context)
{
}
}
}
Note que desta forma, qdo vc registrar o Plugin, aparecerá a classe [AccountCreateHandler] no campo.
[]
Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com) -
Gilberto,
Como escrevi no começo não fui eu quem desenvolveu o Plugin (foi inclusive desenvolvido em outra máquina) e de fato o projeto do Plugin está com alguns erros, não está nem abrindo na minha máquina. Antes de continuar trabalhando com o Plugin Registration vou resolver este problema com o Plugin.
Obrigado pela ajuda. -
Gilberto,
Conversei com um amigo, o que desenvolveu o Plugin e ele me disse que já tinha uma versão compilada do Plugin dele. Dei uma olhada e tem uma dll lá, é ela que devo utilizar?
Além disso, onde devo colocar esta dll (se é que com ela que devo trabalhar) para que o campo Plugin já venha preenchido no [Plugin RegistrationTool]?
Grato,
Bruno Cardoso -
Bruno,
Existem três formas de registro da dll através do Plugin Registration. Por exemplo, utilize a opção em que a dll deverá ficar no dir [\Program Files\Microsoft CRM\Server\Bin\Assembly].
Após a cópia da dll use o Plugin Registration, dizendo para registrar a dll [no disco].
P.S.: As outras opções são: [DataBase] e [GAC].
[]
Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com) -
-
O caminho é local do Servidor do CRM.
Para saber o caminho exato faça o seguinte:
- Abra o IIS;
- Expanda o dir [Web Sites];
- Note que existe um diretório virtual do CRM;
- Clique em Propriedades -> Pasta [Home Directory]. No campo [Local Path] vc descobre o caminho Físico do CRM.
Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com) -
Olá Gilberto,
Procurei o caminho indicado por você e encontrei este:
[\Program Files\Microsoft Dynamics CRM\Server\bin\assembly]
que está no servidor e percebi também que há um Plugin Registration Tool também no servidor, que provavelmente foi colocado lá anteriormente pela pessoa que estava desenvolvendo o plugin.
Testei com este registrador e também com o que está na minha máquina local e nenhum dos dois funcionaram.
Em seguida procurei o endereço que você falou para eu olhar a partir do IIS, porém lá já havia a dll do meu plugin.
Gostaria de saber se o endereço é este mesmo e se o Registrador pode ser executado na minha máquina local ou deve ser em outro lugar.
Obrigado,
Bruno Cardoso -
Olá Bruno,
O endereço é o que está configurado no IIS, ok.
O Plugin Registration deve ser executado no servidor do CRM.
Seria interessante checar se a dll do Plugin está ok, por exemplo, se o [Template] dela está de acordo com o código de exemplo que te passei.
Se estiver gerando mgs de erro, envie para analisarmos.
[]
Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com) -
Gilberto,
Não gera nenhuma mensagem de erro, mas não aparece o Plugin no Registrador como você me disse acima, que deveria aparecer.
O Plugin, como eu te falei antes, não estou conseguindo abrir na minha máquina, mas já havia uma versão compilada e foi esta DLL que eu coloquei no diretório encontrado no ISS.
A mensagem de erro que aparece é que não está instalado o [NomeArquivo].csproj.
O que é esse arquivo do tipo .csproj? -
Bruno,
O arquivo [.csproj] é responsável pelo controle de todo o projeto no VS.Net . Realmente sem ele vc não abre o projeto. O que teria que ser feito agora é a criação de um [novo] projeto no VS.Net e adicionar as classes já existentes neste novo projeto.
Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com) -
Gilberto, uma outra dúvida.
Eu estava lendo um thread de um colega meu de trabalho (o Ivan):
http://social.msdn.microsoft.com/Forums/pt-BR/dynamicscrmpt/thread/bd7c1a15-f485-4371-a406-77111c75d1ed?lc=1046
Eu estou dando continuidade exatamente a este Plugin que ele começou.
Gostaria de saber o que são essas [AssociateEntities] e [DisassociateEntities] e como trabalhar com elas, pois utilizo uma entidade customizada em uma erlacionamento N:N.
Muito obrigado. -
Bruno,
As Mensagens mencionadas são usadas em Plugins para entidades em um relacionamento N:N.
Por exemplo, o Ivan citou as entidades [contact] e [new_curso]. No momento em que o usuário adicionar um novo curso (ou vários) para um contato, via Message [AssociateEntities] o CRM executará seu Plugin. Se o usuário excluir um curso (ou vários) para um contato, a Message ativada será a [DisassociateEntities].
Link : http://msdn.microsoft.com/en-us/library/cc155954.aspx
P.S.: Detalhe importante, [AssociateEntities] e [DisassociateEntities] somente funciona para entidades PADRÃO do sistema...
[]
Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com) -
Gilberto,
Eu e o Bruno, estamos tentando fazer algo mais simples, como o Hello World. O código está logo abaixo:
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Crm.Sdk;
using Microsoft.Crm.SdkTypeProxy;
namespace Plugin___teste
{
public class HelloWorldPlugin: IPlugin
{
public void Execute(IPluginExecutionContext context)
{
// Call the Microsoft Dynamics CRM Web services here or perform
// some other useful work.
throw new InvalidPluginExecutionException("Hello world!");
}
}
}
O código foi compilado com sucesso e o plugin registrado na entidade contact como: Update, Post Stage e Synchronous. Usando o Plugin Registration Tool.
Então deveria aparecer a mensagem "Hello World" quando um contato fosse alterado e em seguida salvo. Porém, quando salvo aparece um erro no CRM, informando para tentar a operação novamente.
Não sabemos o pq desse erro, visto que esse é o código mais simples que tinhamos como exemplo.
Vc tem alguma sugestão do que devemos fazer para solucionar?
Desde já obrigado.
Anderson M. de Freitas -
Olá Anderson,
O código está correto.
Provavelmente vc não [assinou] sua DLL, que é um recurso do [.NET Strong Name] exigido pelo Plugin.
Para assinar faça o seguinte:
- Remova o registro da DLL no Plugin Registration Tool;
- Abra as propriedades do projeto;
- Cique no link [Signing];
- Clique no checkbox [Sign the Assembly];
- No Combobox [Choose a strong name key file] clique em [New];
- Informe um valor para o campo [Key file name] e desmarque a opção [Protect my key file with a password];
- Compile novamente a DLL, atualize o [Server\Bin\Assembly] do CRM e registre a DLL.
[]
Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)- Sugerido como Resposta Anderson M. de Freitas quarta-feira, 22 de julho de 2009 13:44
- Marcado como Resposta Bruno dos Santos A. Cardoso quinta-feira, 23 de julho de 2009 14:05
-