Partilhar via


Usar mensagens (classes de solicitação e resposta) com o método Execute

 

Publicado: janeiro de 2017

Aplicável a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Você pode usar os métodos no IOrganizationService para executar operações comuns. Além dos métodos comuns, dos métodos, você pode usar o método IOrganizationService.Execute para executar as mensagens que não estão expostas como métodos. O método Execute usa uma classe de solicitação da mensagem como um parâmetro e retorna uma classe de resposta da mensagem. Os nomes da classe de mensagens da solicitação terminando com "Solicitação“ e nomes da classe de mensagens de resposta terminam com "Resposta". Para obter mais informações sobre todas as mensagens suportadas pelo método Execute, consulte Mensagens do xRM no serviço da organização, Mensagens no serviço de organização do Dynamics 365. Os serviços Web IDiscoveryServicee IDeploymentService utilizam um padrão de resposta e solicitação de execução semelhantes.

Executar fluxo de mensagens

O OrganizationRequest é a classe base para todas as solicitações de mensagens. Você pode usar esta classe base para executar todas as mensagens, ao especificar o nome da mensagem e a coleção de parâmetro para a solicitação. No entanto, quando você usa uma classe derivada, como AssociateRequest, o conjunto de parâmetros é preenchido ao usar as propriedades na classe de solicitação.

O método Execute retorna a classe de resposta correspondente para a solicitação, uma classe derivada das classes OrganizationResponse. Como ocorre com a classe da solicitação, a classe derivada contém uma propriedade para cada valor no conjunto de parâmetros de resultados. Todas as mensagens têm uma resposta, mas muitas não têm nenhuma propriedade na resposta. .

As mensagens são predefinidas nos metadados e armazenadas como registros nas entidades de mensagens do SDK. Para cada mensagem, você pode determinar se funciona enquanto estiver conectada no servidor ou do Microsoft Dynamics 365 para Microsoft Office Outlook com Acesso Offline. Essas informações podem ser encontradas no atributo SdkMessage.Availability. Para obter mais informações, consulte Entidades de registro do plug-in.

Neste tópico

Parâmetros opcionais de passagem em mensagens

Executar mensagens em uma única transação de banco de dados

Executar mensagens em segundo plano (de maneira assíncrona)

Parâmetros opcionais de passagem em mensagens

Você pode transmitir parâmetros opcionais para qualquer solicitação de mensagem adicionando um valor à propriedade Parameters. Alguns parâmetros não são propriedades expostas em classes de solicitação. Para definir esses parâmetros, eles devem definidos no conjunto Parameters na classe Request.

A tabela a seguir alista esses parâmetros.

Parameter

Descrição

Mensagens

SolutionUniqueName

Um String que especifica o nome exclusivo da solução que se aplica na operação. Para obter mais informações, consulte Rastreamento de dependência para componentes de solução.

AddPrivilegesRoleRequest
CreateRequest
DeleteRequest
MakeAvailableToOrganizationTemplateRequest
UpdateRequest

CalculateMatchCodeSynchronously

Especificar este parâmetro não é mais necessário. Os códigos de correspondência usados para detectar duplicidades são calculados assincronamente independentemente do valor transmitido nesse parâmetro. Para obter mais informações, consulte Executar detecção de duplicidades.

CreateRequest
UpdateRequest

SuppressDuplicateDetection

Um Boolean usado para desabilitar a detecção de duplicidades em uma operação de criação ou atualização. Para obter mais informações, consulte Executar detecção de duplicidades.

CreateRequest
UpdateRequest

O exemplo a seguir mostra como transmitir um parâmetro opcional:

Account target = new Account();
target.Name = "Fabrikam";
CreateRequest req = new CreateRequest();
req.Target = target;
req["SuppressDuplicateDetection"] = true;
req["CalculateMatchCodeSynchronously"] = true;
req["SolutionUniqueName"] = "MySolutionName";
CreateResponse response = (CreateResponse)_service.Execute(req);

Executar mensagens em uma única transação de banco de dados

É um requisito comum em aplicativos de negócios a coordenação de alterações de vários registros no sistema de forma que todas as alterações sejam bem-sucedidas ou nenhuma delas. Em termos de banco de dados, isso é conhecido como execução de várias operações em uma única transação com a capacidade de reversão de todas as alterações de dados caso uma operação falhe.

Você pode executar duas ou mais solicitações de serviço da organização em uma única transação de banco de dados usando a solicitação de mensagem ExecuteTransactionRequest. Para usar esta mensagem, preencha a coleção Requests com duas ou mais solicitações da organização que devem ser executadas em transações. Defina ReturnResponses como true se quiser obter de volta uma coleção de respostas, uma para cada solicitação de mensagem executada, na coleção Responses. As solicitações de mensagem na coleção Requests serão executadas em ordem em que aparecem na coleção, onde o elemento no índice 0 é executado primeiro. Essa mesma ordem é preservada na coleção Responses.

Se qualquer uma das solicitações falhar e se a transação for revertida, todas as alterações de dados concluídas durante a transação serão desfeitas. Além disso, uma ExecuteTransactionFault será retornada identificando o índice na coleção de solicitações da mensagem da solicitação que causou a falha.

Uma ExecuteMultipleRequest pode conter uma ou mais instâncias de ExecuteTransactionRequest. Uma instância de ExecuteTransactionRequest pode não conter uma ExecuteMultipleRequest ou uma ExecuteTransactionRequest. Para obter mais informações sobre ExecuteMultipleRequest, consulte Uso ExecuteMultiple para melhorar o desempenho do carregamento de dados em massa.

Para obter um código de exemplo que demonstre isso,ExecuteTransactionRequest consulteSample: Execute multiple requests in transaction.

Executar mensagens em segundo plano (de maneira assíncrona)

Além de executar solicitações de mensagem imediatamente, como é o caso da chamada do Execute e a transmissão de uma solicitação de mensagem, você também pode executar uma solicitação de mensagem em segundo plano (de maneira assíncrona). Isso melhora o desempenho do sistema ao adiar a execução da mensagem algum tempo depois quando o carregamento do servidor pode ser menor. Os usuários interativos não precisam aguardar pela mensagem de destino para executar antes de poder continuar. Isso é especialmente útil ao processar mensagens que levam alguns minutos ou mais para executar.

Observação

Atualmente, somente a mensagem ImportSolutionRequest pode ser usada com a mensagem ExecuteAsync.

Use a mensagem ExecuteAsyncRequest para executar uma mensagem de forma assíncrona. Você configura a solicitação e transmite a instância da solicitação como um argumento Execute.ExecuteAsyncResponse retorna à ID de trabalhos assíncronos. Você pode consultar (opcionalmente) o trabalho usando a ID para localizar seu estado atual.

Você também pode executar várias mensagens de uma vez usando a mensagem ExecuteMultipleRequest. Para fazer isso, adicione uma ou mais solicitações de mensagens ExecuteAsync para uma solicitação de mensagem ExecuteMultiple. Devido às limitações de redução que melhoram o desempenho geral do sistema, somente uma mensagem que executa de maneira assíncrona pode executar por vez para cada organização. Não é possível executar uma solicitação de mensagem ExecuteMultiple de uma solicitação de mensagem ExecuteAsync. Para obter mais informações sobre a solicitação de mensagem ExecuteMultiple, consulte Uso ExecuteMultiple para melhorar o desempenho do carregamento de dados em massa.

Confira Também

Execute
OrganizationRequest
OrganizationResponse
ExecuteAsyncMaxConnectionsPerServer
ExecuteAsyncPerOrgMaxConnectionsPerServer
Use o Serviço da organização para ler e gravar dados ou metadados
Uso ExecuteMultiple para melhorar o desempenho do carregamento de dados em massa
Usar mensagens (classes de solicitação e resposta) com o método ExecuteCrmOrganizationRequest
Mensagens no serviço de descoberta
Mensagens do xRM no serviço da organização
Mensagens no serviço de organização do Dynamics 365
ExecuteAsync message privileges

Microsoft Dynamics 365

© 2017 Microsoft. Todos os direitos reservados. Direitos autorais