Nota
Capaian ke halaman ini memerlukan kebenaran. Anda boleh cuba mendaftar masuk atau menukar direktori.
Capaian ke halaman ini memerlukan kebenaran. Anda boleh cuba menukar direktori.
Menunjukkan
Sampel ini menunjukkan pelaksanaan minimum untuk pemalam penyedia data jadual maya Microsoft Dataverse generik, DropboxRetrieveMultiplePlugin, untuk perkhidmatan perkongsian fail Dropbox . Ia menggunakan pendekatan "logam kosong", menterjemahkan melalui QueryExpression penciptaan kelas pelawat tersuai, DropBoxExpressionVisitor. Ia mengembalikan koleksi fail yang memenuhi kriteria carian sebagai EntityCollection.
Nota
Sampel ini memerlukan penggunaan ILMERGE untuk menggabungkan pemasangan pemalam dan Dropbox sebelum mendaftarkan pemasangan dengan Dataverse. Penggunaan ILMERGE tidak disokong secara rasmi. Kemas kini masa hadapan untuk sampel ini akan menghapuskan keperluan untuk menggunakan ILMERGE.
Mari bermula
Untuk membina sampel ini, anda mesti memasang pakej NuGet Dropbox.Api dan Microsoft.CrmSdk.Data terlebih dahulu dalam penyelesaian anda. Anda juga memerlukan akaun Dropbox dan menghantar token akses sebenar apabila mencipta tika DropboxClient.
Tambahkan pernyataan penggunaan berikut pada kod anda:
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
using Dropbox.Api;
using Dropbox.Api.Files;
Kod sampel
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;
}
}
Lihat juga
Mulakan dengan jadual maya
Pertimbangan API jadual maya
Pembekal data jadual maya tersuai