Esempio: importare file come risorse Web

 

Data di pubblicazione: gennaio 2017

Si applica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Quando si sviluppa un numero elevato di file da utilizzare come risorse Web è possibile risparmiare il lavoro di aggiunta manuale tramite l'applicazione. Numerose risorse web possono essere sviluppate e testate all'esterno di Microsoft Dynamics 365 (online e locale) e quindi possono essere importate.

Viene qui riportato un esempio semplificato di questo processo. Per un esempio più complesso che fornisce un'applicazione WPF che è possibile utilizzare per importare le risorse Web, vedere Esempio: utilità risorsa Web.

Questo codice di esempio è per Aggiornamento di Microsoft Dynamics CRM 2015 e Microsoft Dynamics CRM Online 2015.Scarica il pacchetto SDK di Microsoft Dynamics CRM. È disponibile nel percorso seguente nel pacchetto di download:

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

Requisiti

Per ulteriori informazioni sui requisiti per l'esecuzione del codice di esempio fornito nell'SDK, vedi Utilizzare il codice di esempio e dell'helper.

Il codice di esempio incluso nel pacchetto di download SDK include i seguenti file richiesti da questo esempio:

  • ImportJob.xml
    In questo file vengono forniti dati sui record della risorsa Web che verranno creati. Per ogni file contiene i dati seguenti:

    • percorso: il percorso a ogni file FilesToImport nella cartella.

    • displayName: il nome visualizzato per la risorsa Web.

    • descrizione: una descrizione delle operazioni di ogni file.

    • nome: il nome che verrà utilizzato per la risorsa Web.

      Nota

      • Ognuno di tali nomi inizia con un carattere di sottolineatura. Il prefisso di personalizzazione dell'autore di soluzioni verrà anteposto al nome quando viene creata la risorsa Web. Anziché impostare un prefisso di personalizzazione specifico come hard-coded, in questo esempio verrà rilevato il prefisso corrente di personalizzazione per un record relativo all'autore che può essere già presente nell'organizzazione.

      • Poiché tutti questi file sono stati sviluppati all'esterno di Microsoft Dynamics 365 e dipendono da percorsi relativi per accedere l'uno all'altra, i nomi includono i caratteri di barra rovesciata "/" per creare una struttura della cartella virtuale in modo che i collegamenti relativi continueranno a funzionare in Microsoft Dynamics 365.

    • tipo: specifica il tipo di risorsa Web da creare tramite i valori Integer disponibili in Tipi di risorsa Web.

  • FilesToImport/ShowData.htm
    Questa risorsa Web HTML richiede ognuno degli altri file per visualizzare la tabella seguente.

    nome

    il cognome

    Apurva

    Dalia

    Ofer

    Daliot

    Jim

    Daly

    Ryan

    Danner

    Mike

    Danseglio

    Alex

    Darrow

  • FilesToImport/CSS/Styles.css
    Questo file fornisce gli stili CSS utilizzati in ShowData.htm.

  • FilesToImport/Data/Data.xml
    Questo file contiene l'elenco dei nomi visualizzati nella tabella.

  • FilesToImport/Script/Script.js
    Questo file contiene una libreria JScript che contiene informazioni sulla posizione relativa del file Data.xml e del file Transform.xslt. Questo campo contiene inoltre la funzione showData che trasforma i dati e li aggiunge alla pagina ShowData.htm.

  • FilesToImport/XSL/Transform.xslt
    Questo file contiene la definizione XSL su come trasformare i dati in una tabella HTML.

Dimostra

Creazione delle risorse Web nel contesto di una soluzione

Dal momento che le Risorse Web sono record di proprietà dell'organizzazione, possono essere create utilizzando IOrganizationService. Metodo Create o utilizzando il messaggio CreateRequest e IOrganizationService. Metodo Execute. In questo esempio verrà illustrato come utilizzare il parametro facoltativo SolutionUniqueName per associare una risorsa Web a una soluzione specifica quando viene creato. Ciò richiede l'utilizzo del messaggio CreateRequest.

Caricamento dei file dal disco

La proprietà WebResource.Content richiede una stringa Base 64 che rappresenta il contenuto binario del file. Il seguente esempio è il metodo utilizzato per convertire il file nel tipo richiesto.


//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);
}

Combinazione dei dati del record di risorsa Web con i dati del file

Il file ImportJob.xml illustra come vengono combinati i dati sui file importati e i dati sulla risorsa Web da creare. In particolare, affinché i collegamenti relativi tra i file correlati continuino a funzionare, il nome della risorsa Web creata deve conservare informazioni sulla posizione relativa dei file nel disco utilizzando le directory simulate nel nome file. A causa dei dati nel file ImportJob.xml tutti questi file di risorsa Web correlati verranno creati in una cartella virtuale comune.

Nota

Non è necessario pubblicare le risorse Web quando vengono create. È necessario pubblicarle quando vengono aggiornate.

Esempio

La seguente parte del file ImportWebResources.cs prevede le seguenti variabili:

  • _customizationPrefix: il prefisso di personalizzazione all'autore degli esempi di Microsoft Dynamics 365 SDK. Se questo autore non esiste verrà creato con il prefisso di personalizzazione di "esempio".

  • _ImportWebResourcesSolutionUniqueName : il nome univoco di Importa soluzione di esempio delle risorse Web creato nell'esempio. Il valore è 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);
}

Non è necessario pubblicare le risorse Web quando vengono create. È necessario pubblicarle quando vengono aggiornate.

Vedere anche

Esempio: utilità risorsa Web
Metodi e messaggi dell'entità WebResource
Risorse Web per Microsoft Dynamics 365

Microsoft Dynamics 365

© 2017 Microsoft. Tutti i diritti sono riservati. Copyright