Lưu ý
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử đăng nhập hoặc thay đổi thư mục.
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử thay đổi thư mục.
Chứng tỏ
Mẫu này cho thấy cách triển khai tối thiểu cho trình cắm nhà cung cấp dữ liệu bảng ảo Microsoft Dataverse chung, DropboxRetrieveMultiplePlugin, cho dịch vụ chia sẻ tệp Dropbox . Nó sử dụng cách tiếp cận "kim loại trần", dịch thông QueryExpression qua việc tạo lớp khách truy cập tùy chỉnh, DropBoxExpressionVisitor. Nó trả về một tập hợp các tệp đáp ứng các tiêu chí tìm kiếm dưới dạng .EntityCollection
Lưu ý
Mẫu này yêu cầu sử dụng ILMERGE để kết hợp các cụm plug-in và Dropbox trước khi đăng ký cụm với Dataverse. Việc sử dụng ILMERGE không được hỗ trợ chính thức. Bản cập nhật trong tương lai cho mẫu này sẽ loại bỏ nhu cầu sử dụng ILMERGE.
Bắt đầu
Để xây dựng mẫu này, trước tiên bạn phải cài đặt các gói Dropbox.Api và Microsoft.CrmSdk.Data NuGet trong giải pháp của mình. Bạn cũng sẽ cần một tài khoản DropBox và chuyển mã truy cập thực khi tạo một phiên bản của DropboxClient.
Thêm các câu lệnh using sau vào mã của bạn:
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
using Dropbox.Api;
using Dropbox.Api.Files;
Mã mẫu
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;
}
}
Xem thêm
Bắt đầu với bảng ảo
Cân nhắc về API của bảng ảo
Nhà cung cấp dữ liệu bảng ảo tùy chỉnh