Pastaba.
Prieigai prie šio puslapio reikalingas įgaliojimas. Galite bandyti prisijungti arba pakeisti katalogus.
Prieigai prie šio puslapio reikalingas įgaliojimas. Galite bandyti pakeisti katalogus.
Rodo
Šiame pavyzdyje parodytas minimalus bendrojo "Microsoft Dataverse" virtualiųjų lentelių duomenų teikėjo priedo "DropboxRetrieveMultiplePlugin", skirto "Dropbox" failų bendrinimo paslaugai, diegimas. Jame naudojamas "pliko metalo" metodas, verčiant QueryExpression per individualios lankytojų klasės " DropBoxExpressionVisitor" sukūrimą. Jis pateikia failų, atitinkančių ieškos kriterijus, rinkinį kaip .EntityCollection
Pastaba.
Šiame pavyzdyje reikia naudoti ILMERGE, kad būtų galima sujungti priedą ir "Dropbox" rinkinius prieš registruojant rinkinį "Dataverse". ILMERGE naudojimas nėra oficialiai palaikomas. Būsimas šio pavyzdžio naujinimas pašalins poreikį naudoti ILMERGE.
Darbo pradžia
Norėdami sukurti šį pavyzdį, pirmiausia turite įdiegti "Dropbox.Api " ir "Microsoft.CrmSdk.Data NuGet" paketus savo sprendime. Kurdami " DropboxClient" egzempliorių taip pat turėsite turėti "DropBox" paskyrą ir perduoti tikrą prieigos raktą.
Prie kodo pridėkite šiuos teiginius:
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
using Dropbox.Api;
using Dropbox.Api.Files;
Kodo pavyzdys
public class DropBoxExpressionVisitor : QueryExpressionVisitorBase
{
public string SearchKeyWords { get; private set; }
public override QueryExpression Visit(QueryExpression query)
{
// Very simple visitor that extracts search keywords
var filter = query.Criteria;
if (filter.Conditions.Count > 0)
{
foreach (ConditionExpression condition in filter.Conditions)
{
if (condition.Operator == ConditionOperator.Like && condition.Values.Count > 0)
{
string exprVal = (string)condition.Values[0];
if (exprVal.Length > 2)
{
this.SearchKeyWords += " " + exprVal.Substring(1, exprVal.Length - 2);
}
}
}
return query;
}
}
}
public class DropboxRetrieveMultiplePlugin : IPlugin
{
public void Execute(IServiceProvider serviceProvider)
{
var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
var qe = (QueryExpression)context.InputParameters["Query"];
if (qe != null)
{
var visitor = new DropBoxExpressionVisitor();
qe.Accept(visitor);
using (var dbx = new DropboxClient(AccessToken))
{
if (visitor.SearchKeyWords != string.Empty)
{
var searchCriteria = new SearchArg(string.Empty, visitor.SearchKeyWords);
var task = Task.Run(() => this.SearchFile(dbx, searchCriteria));
context.OutputParameters["BusinessEntityCollection"] = task.Result;
}
}
}
}
public async Task<EntityCollection> SearchFile(DropboxClient dbx, SearchArg arg)
{
EntityCollection ec = new EntityCollection();
var list = await dbx.Files.SearchAsync(arg);
foreach (var item in list.Matches)
{
if (item.Metadata.IsFile)
{
Entity e = new Entity("new_dropbox");
e.Attributes.Add("new_dropboxid", Guid.NewGuid());
e.Attributes.Add("new_filename", item.Metadata.AsFile.Name);
e.Attributes.Add("new_filesize", item.Metadata.AsFile.Size);
e.Attributes.Add("new_modifiedon", item.Metadata.AsFile.ServerModified);
ec.Entities.Add(e);
}
}
return ec;
}
}
Taip pat žiūrėkite
Darbo su virtualiomis lentelėmis pradžia
API aspektai virtualiose lentelėse
Pasirinktiniai virtualios lentelės duomenų teikėjai