Compartilhar via


Exemplo: Importar arquivos como recursos da Web

 

Publicado: janeiro de 2017

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

Ao desenvolver um grande número de arquivos para serem usados como recursos da Web, é possível poupar o trabalho de adicioná-los manualmente com o aplicativo. Vários recursos da Web podem ser desenvolvidos e testados fora do Microsoft Dynamics 365 (online e local) e, em seguida, importados.

Este exemplo inclui um exemplo simplificado desse processo. Para obter um exemplo mais complexo que fornece um aplicativo de WPF que pode ser usado para importar os recursos da Web, consulte Exemplo: utilitário de recurso da Web.

Este código de exemplo é para o Atualização do Microsoft Dynamics CRM 2015 e Microsoft Dynamics CRM Online 2015.Baixe o pacote do SDK do Microsoft Dynamics CRM. Pode ser encontrado no seguinte local no pacote de download:

SDK\SampleCode\CS\Client\WebResources\ImportWebResources\

Requisitos

Para obter mais informações sobre os requisitos necessários à execução do código de exemplo fornecido neste SDK, consulte Usar o código de exemplo e auxiliar.

O código de exemplo incluído no pacote de download do SDK inclui os seguintes arquivos necessários para este exemplo:

  • ImportJob.xml
    Este arquivo fornece os dados sobre os registros do recurso da Web que serão criados. Para cada arquivo, ele contém os seguintes dados:

    • path: O caminho de cada arquivo a partir da pasta FilesToImport.

    • displayName: O nome para exibição do recurso da Web.

    • description: Uma descrição das ações de cada arquivo.

    • name: O nome que será usado para o recurso da Web.

      Observação

      • Cada um desses nomes começa com um caractere de sublinhado. O prefixo de personalização do fornecedor de soluções será anexado ao nome durante a criação do recurso da Web. Em vez de fixar no código um prefixo de personalização específico, este exemplo detectará o prefixo de personalização de um registro do fornecedor que já possa existir na organização.

      • Como cada um desses arquivos foi desenvolvido fora do Microsoft Dynamics 365 e depende dos caminhos relacionados para serem acessados entre si, os nomes incluem caracteres de barra invertida “/” para criar uma estrutura de pastas virtual, para que os links relacionados continuem a funcionar no Microsoft Dynamics 365.

    • type: Especifica o tipo de recurso da Web que será criado, usando os valores inteiros encontrados em Tipos de recursos da Web.

  • FilesToImport/ShowData.htm
    Este recurso da Web em HTML exige que cada um outros arquivos exiba a tabela a seguir.

    Nome

    o Sobrenome

    Apurva

    Dalia

    Ofer

    Daliot

    Jim

    Daly

    Ryan

    Danner

    Mike

    Danseglio

    Alex

    Darrow

  • FilesToImport/CSS/Styles.css
    Este arquivo fornece os Estilos de CSS usados em ShowData.htm.

  • FilesToImport/Data/Data.xml
    Este arquivo contém a lista de nomes exibidos na tabela.

  • FilesToImport/Script/Script.js
    Este arquivo contém uma biblioteca de JScript, que contém informações sobre o local relacionado dos arquivos Data.xml e Transform.xslt. Ele também contém a função showData, que transforma os dados e adiciona-os à página ShowData.htm.

  • FilesToImport/XSL/Transform.xslt
    Este arquivo contém a definição de XSL de como transformar os dados em uma tabela de HTML.

Demonstra

Como criar recursos da Web no contexto de uma solução

Recursos da Web são de propriedade de organizações que podem ser criados usando o IOrganizationService. Método Create ou usando a mensagem CreateRequest e o IOrganizationService. método Execute. Este exemplo mostrará como usar o parâmetro opcional SolutionUniqueName para associar um recurso da Web a uma solução específica durante a sua criação. Isso requer o uso da mensagem CreateRequest.

Como carregar arquivos do disco

A propriedade WebResource.Content requer uma cadeia de caracteres de Base 64, que representa o conteúdo binário do arquivo. O exemplo a seguir é o método usado para converter o arquivo no tipo desejado.


//Encodes the Web Resource File
static public string getEncodedFileContents(String pathToFile)
{
    FileStream fs = new FileStream(pathToFile, FileMode.Open, FileAccess.Read);
    byte[] binaryData = new byte[fs.Length];
    long bytesRead = fs.Read(binaryData, 0, (int)fs.Length);
    fs.Close();
    return System.Convert.ToBase64String(binaryData, 0, binaryData.Length);
}

Como combinar dados de registro do recurso da Web com dados do arquivo

O arquivo ImportJob.xml mostra como os dados sobre os arquivos que estão sendo importados e os dados sobre o recurso da Web que será criado são combinados. Em particular, para que os links relativos entre os arquivos relacionados continuem a funcionar, o nome dos recursos da Web criado deverá preservar as informações sobre a posição relativa dos arquivos do disco usando diretórios simulados no nome do arquivo. Devido aos dados do arquivo ImportJob.xml, todos esses arquivos dos recursos da Web relacionados serão criados em uma pasta virtual comum.

Observação

Não é necessário publicar os recursos da Web quando eles são criados. É necessário publicá-los quando eles são atualizados.

Exemplo

A seguinte parte do arquivo ImportWebResources.cs espera as seguintes variáveis:

  • _customizationPrefix : O prefixo de personalização do editor de Microsoft Dynamics 365 Exemplos do SDK. Se este fornecedor não existir, ele será criado com o prefixo de personalização ”exemplo“.

  • _ImportWebResourcesSolutionUniqueName: O nome exclusivo de Importar exemplo de solução dos recursos da Web criado neste exemplo. O valor é ImportWebResourcesSample.



//Read the descriptive data from the XML file
XDocument xmlDoc = XDocument.Load("../../ImportJob.xml");

//Create a collection of anonymous type references to each of the Web Resources
var webResources = from webResource in xmlDoc.Descendants("webResource")
                   select new
                   {
                       path = webResource.Element("path").Value,
                       displayName = webResource.Element("displayName").Value,
                       description = webResource.Element("description").Value,
                       name = webResource.Element("name").Value,
                       type = webResource.Element("type").Value
                   };

// Loop through the collection creating Web Resources
int counter = 0;
foreach (var webResource in webResources)
{
    //Set the Web Resource properties
    WebResource wr = new WebResource
    {
        Content = getEncodedFileContents(@"../../" + webResource.path),
        DisplayName = webResource.displayName,
        Description = webResource.description,
        Name = _customizationPrefix + webResource.name,
        LogicalName = WebResource.EntityLogicalName,
        WebResourceType = new OptionSetValue(Int32.Parse(webResource.type))
    };

    // Using CreateRequest because we want to add an optional parameter
    CreateRequest cr = new CreateRequest
    {
        Target = wr
    };
    //Set the SolutionUniqueName optional parameter so the Web Resources will be
    // created in the context of a specific solution.
    cr.Parameters.Add("SolutionUniqueName", _ImportWebResourcesSolutionUniqueName);

    CreateResponse cresp = (CreateResponse)_serviceProxy.Execute(cr);
    // Capture the id values for the Web Resources so the sample can delete them.
    _webResourceIds[counter] = cresp.id;
    counter++;
    Console.WriteLine("Created Web Resource: {0}", webResource.displayName);
}

Não é necessário publicar os recursos da Web quando eles são criados. É necessário publicá-los quando eles são atualizados.

Confira Também

Exemplo: utilitário de recurso da Web
Mensagens e métodos da entidade WebResource
Recursos da Web do Microsoft Dynamics 365

Microsoft Dynamics 365

© 2017 Microsoft. Todos os direitos reservados. Direitos autorais