Bài 5: Quản lý dữ liệu SharePoint

2,044 views

Published on

Tìm hiểu Events (sự kiện) trong SharePoint 2010
Truy vấn dữ liệu sử dụng CAML
Truy vấn dữ liệu sử dụng LINQ to SharePoint

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,044
On SlideShare
0
From Embeds
0
Number of Embeds
85
Actions
Shares
0
Downloads
310
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Bài 5: Quản lý dữ liệu SharePoint

  1. 1. Bài 5: Quản lý dữ liệu SharePoint
  2. 2. Hệ thống bài cũ Tìm hiểu ADO.NET Data Services và REST trên SharePoint Tìm hiểu các thủ tục thao tác dữ liệu SharePoint sử dụng ADO.NET Data Services Quản lý dữ liệu SharePoint 2
  3. 3. Nội dung bài học Tìm hiểu Events (sự kiện) trong SharePoint 2010 Truy vấn dữ liệu sử dụng CAML Truy vấn dữ liệu sử dụng LINQ to SharePoint Quản lý dữ liệu SharePoint 3
  4. 4. Sự kiện trong SharePoint Sự kiện (Event) trong SharePoint là Microsoft .NET assembly chứa một hoặc nhiều lớp xử lý sự kiện xảy ra trên SharePoint Ngăn chặn việc xóa công việc khi chưa hoàn thành Quản lý dữ liệu SharePoint 4 Giám sát mọi thay đổi liên quan đến công việc Điều chỉnh quy trình xử lý khi một công việc có độ ưu tiên thay đổi đến mức cao Ngăn chặn việc xóa một trường dữ liệu khỏi List
  5. 5. Before Event (Synchronous) Được đặt tên với kết thúc là …ing Vd: ItemAdding Sự kiện này xảy ra trước khi sự kiện trên SharePoint thực thi và trước khi SharePoint lưu dữ liệu xuống CSDL Hỗ trợ cơ chế từ chối thực thi thông qua e.Cancel = true Thường dùng để phê chuẩn dữ liệu trên SharePoint Được đặt tên với kết thúc là …ing Vd: ItemAdding Sự kiện này xảy ra trước khi sự kiện trên SharePoint thực thi và trước khi SharePoint lưu dữ liệu xuống CSDL Hỗ trợ cơ chế từ chối thực thi thông qua e.Cancel = true Thường dùng để phê chuẩn dữ liệu trên SharePoint Quản lý dữ liệu SharePoint 5
  6. 6. Before Event (Synchronous) Synchronous (đồng bộ) Event: Là sự kiện trên SharePoint mà được thực thi ngay khi và trong cùng một thread (luồng hay tiến trình) với hành động gây nên sự kiện đó Toàn bộ Before event là Synchronous event. Quản lý dữ liệu SharePoint 6
  7. 7. After Event (Asynchronous) Được đặt tên với kết thúc là …ed Vd: ItemAdded Sự kiện này xảy ra sau khi sự kiện trên SharePoint đã thực thi và dữ liệu đã được ghi xuống CSDL Không hỗ trợ cơ chế từ chối sự kiện Việc thực thi sự kiện này là không đồng bộ Được đặt tên với kết thúc là …ed Vd: ItemAdded Sự kiện này xảy ra sau khi sự kiện trên SharePoint đã thực thi và dữ liệu đã được ghi xuống CSDL Không hỗ trợ cơ chế từ chối sự kiện Việc thực thi sự kiện này là không đồng bộ Quản lý dữ liệu SharePoint 7
  8. 8. After Event (Asynchronous) Asynchronous (không đồng bộ) Event Là sự kiện trên SharePoint mà được thực thi trên một thread (luồng hay tiến trình) khác với hành động gây nên sự kiện đó và việc thực thi này có thể xảy ra sau một thời gian so với hành động gây nên sự kiện. Asynchronous (không đồng bộ) Event Là sự kiện trên SharePoint mà được thực thi trên một thread (luồng hay tiến trình) khác với hành động gây nên sự kiện đó và việc thực thi này có thể xảy ra sau một thời gian so với hành động gây nên sự kiện. Quản lý dữ liệu SharePoint 8
  9. 9. Sự kiện trong SharePoint 2010 Event Host: Các đối tượng trên SharePoint có thể viết sự kiện do người dùng định nghĩa bao gồm Site Collections: Bao gồm các sự kiện: Xóa site collection Sites: Bao gồm các sự kiện: Tạo, xóa, thay đổi URL của site… Lists: Bao gồm các sự kiện: Tạo, xóa, nhận email…của List hay tạo, sửa, xóa, check-in, check-out…của List item Workflows: Bao gồm các sự kiện: Khởi động, hoàn thành, tạm dừng workflow… Event Host: Các đối tượng trên SharePoint có thể viết sự kiện do người dùng định nghĩa bao gồm Site Collections: Bao gồm các sự kiện: Xóa site collection Sites: Bao gồm các sự kiện: Tạo, xóa, thay đổi URL của site… Lists: Bao gồm các sự kiện: Tạo, xóa, nhận email…của List hay tạo, sửa, xóa, check-in, check-out…của List item Workflows: Bao gồm các sự kiện: Khởi động, hoàn thành, tạm dừng workflow… Quản lý dữ liệu SharePoint 9
  10. 10. Các loại sự kiện trong SharePoint 2010 List Events: Các sự kiện xảy ra cho List: List Item Events: Các sự kiện xảy ra đối với item trong list hay document trong document library List Email Events Các sẽ kiện xảy ra đối với quá trình nhận email của list Web Events Các sự kiện xảy ra đối với site List Workflow Events Các sự kiện xảy ra đối với Workflow List Events: Các sự kiện xảy ra cho List: List Item Events: Các sự kiện xảy ra đối với item trong list hay document trong document library List Email Events Các sẽ kiện xảy ra đối với quá trình nhận email của list Web Events Các sự kiện xảy ra đối với site List Workflow Events Các sự kiện xảy ra đối với Workflow Quản lý dữ liệu SharePoint 10 Tham khảo: http://msdn.microsoft.com/en-us/library/gg749858.aspx
  11. 11. Sự kiện trong SharePoint 2010 Lớp Event receiver Host Events được hỗ trợ SPWebEventReceiver SPSite, SPWeb SiteDeleting, SiteDeleted, WebAdding, WebProvisioned, WebDeleting, WebDeleted, WebMoving, WebMoved, SPListEventReceiver (lists) SPSite, SPWeb ListAdding, ListAdded, ListDeleting, ListDeleted Quản lý dữ liệu SharePoint 11 SPListEventReceiver (lists) SPSite, SPWeb ListAdding, ListAdded, ListDeleting, ListDeleted SPListEventReceiver (fields) SPSite, SPWeb, SPList, SPContentType FieldAdding, FieldAdded, FieldDeleting, FieldDeleted, FieldUpdating, FieldUpdated, SPEmailEventReceiver SPSite, SPWeb, SPList EmailReceived, Tham khảo: http://msdn.microsoft.com/en-us/library/gg749858.aspx
  12. 12. Sự kiện trong SharePoint 2010 Lớp Event receiver Host Events được hỗ trợ SPItemEventRec eiver SPSite, SPWeb, SPList, SPContentType ItemAdding, ItemAdded, ItemDeleting, ItemDeleted, ItemUpdating, ItemUpdated, ItemFileConverted, ItemFileMoving, ItemFileMoved, ItemCheckingIn, ItemCheckedIn, ItemCheckingOut, ItemCheckedOut, ItemAttachmentAdding, ItemAttachmentAdded, ItemAttachmentDeleting, ItemAttachmentDeleted Quản lý dữ liệu SharePoint 12 ItemAdding, ItemAdded, ItemDeleting, ItemDeleted, ItemUpdating, ItemUpdated, ItemFileConverted, ItemFileMoving, ItemFileMoved, ItemCheckingIn, ItemCheckedIn, ItemCheckingOut, ItemCheckedOut, ItemAttachmentAdding, ItemAttachmentAdded, ItemAttachmentDeleting, ItemAttachmentDeleted SPWorkflowEve ntReceiver SPSite, SPWeb, SPList, SPContentType WorkflowStarting, WorkflowStarted, WorkflowCompleted, WorkflowPostponed,
  13. 13. Khai báo sự kiện trong Element.xml <?xml version="1.0" encoding="utf-8"?> <Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <Receivers ListTemplateId="104"> <Receiver> <Name>EventReceiver1ItemAdding</Name> <Type>ItemAdding</Type> <Assembly>$SharePoint.Project.AssemblyFullName$</Assembly> <Class>Lab05.EventReceiver.EventReceiver1</Class> <SequenceNumber>10000</SequenceNumber> </Receiver> </Receivers> </Elements> Quản lý dữ liệu SharePoint 13 <?xml version="1.0" encoding="utf-8"?> <Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <Receivers ListTemplateId="104"> <Receiver> <Name>EventReceiver1ItemAdding</Name> <Type>ItemAdding</Type> <Assembly>$SharePoint.Project.AssemblyFullName$</Assembly> <Class>Lab05.EventReceiver.EventReceiver1</Class> <SequenceNumber>10000</SequenceNumber> </Receiver> </Receivers> </Elements>
  14. 14. Receivers element Attribute Mô tả ListTemplateId Chỉ ra Event sẽ áp dụng cho loại List nào ListTemplateOwner Tùy chọn ListUrl Chỉ ra URL của list mà Event sẽ áp dụng cho Quản lý dữ liệu SharePoint 14 Chỉ ra URL của list mà Event sẽ áp dụng cho RootWebOnly Tùy chọn kiểu Boolean. True nếu Event chỉ áp dụng cho Root Web Scope Phạm vi triển khai Event. Có thể là - Site: Áp dụng cho toàn Site Collection - Web: Chỉ áp dụng cho Web site Tham khảo: http://msdn.microsoft.com/en-us/library/ms431081.aspx
  15. 15. SharePoint Events trong VS2010 Quản lý dữ liệu SharePoint 15
  16. 16. DEMO Demo: Viết một Event Receiver sử dụng Visual Studio 2010 Quản lý dữ liệu SharePoint 16
  17. 17. Truy vấn CAML CAML (Collaborative Application Markup Language): là một ngôn ngữ dựa trên XML được sử dụng trong SharePoint để định nghĩa các trường dữ liệu (fields) hay các View được sử dụng trên SharePoint List và Site CAML cũng được sử dụng để truy vấn dữ liệu trên SharePoint CAML (Collaborative Application Markup Language): là một ngôn ngữ dựa trên XML được sử dụng trong SharePoint để định nghĩa các trường dữ liệu (fields) hay các View được sử dụng trên SharePoint List và Site CAML cũng được sử dụng để truy vấn dữ liệu trên SharePoint Quản lý dữ liệu SharePoint 17
  18. 18. Các thành phần trong truy vấn CAML Thành phần Mô tả And Nhóm nhiều điều kiện BeginsWith Tìm kiếm chuỗi ký tự mà bắt đầu với Contains Tìm kiếm chuỗi có chứa Eq Toán từ so sánh bằng FieldRef Tham chiếu tới một FieldFieldRef Tham chiếu tới một Field Geq Lớn hơn hoặc bằng GroupBy Nhóm kết quả nhận được Gt Lớn hơn IsNotNull Không được rỗng IsNull Rỗng Quản lý dữ liệu SharePoint 18 Tham khảo: http://msdn.microsoft.com/en-us/library/ms467521.aspx
  19. 19. Các thành phần trong truy vấn CAML Thành phần Mô tả Leq Nhỏ hơn hoặc bằng Lt Nhỏ hơn Neq Không bằng Now Thời gian hiện tại Quản lý dữ liệu SharePoint 19 Now Thời gian hiện tại Or Hoặc OrderBy Sắp xếp kết quả Today Ngày hiện tại TodayIso Ngày hiện tại với định dạng ISO Where Lọc Tham khảo: http://msdn.microsoft.com/en-us/library/ms467521.aspx
  20. 20. Ví dụ truy vấn CAML <Query> <OrderBy> <FieldRef Name="Modified" Ascending="FALSE"></FieldRef> </OrderBy> <Where> <Or> <Neq> <FieldRef Name="Status"></FieldRef> <Value Type="Text">Completed</Value> </Neq> <IsNull> <FieldRef Name="Status"></FieldRef> </IsNull> </Or> </Where> </Query> <Query> <OrderBy> <FieldRef Name="Modified" Ascending="FALSE"></FieldRef> </OrderBy> <Where> <Or> <Neq> <FieldRef Name="Status"></FieldRef> <Value Type="Text">Completed</Value> </Neq> <IsNull> <FieldRef Name="Status"></FieldRef> </IsNull> </Or> </Where> </Query> Quản lý dữ liệu SharePoint 20 <Query> <OrderBy> <FieldRef Name="Modified" Ascending="FALSE"></FieldRef> </OrderBy> <Where> <Or> <Neq> <FieldRef Name="Status"></FieldRef> <Value Type="Text">Completed</Value> </Neq> <IsNull> <FieldRef Name="Status"></FieldRef> </IsNull> </Or> </Where> </Query> <Query> <OrderBy> <FieldRef Name="Modified" Ascending="FALSE"></FieldRef> </OrderBy> <Where> <Or> <Neq> <FieldRef Name="Status"></FieldRef> <Value Type="Text">Completed</Value> </Neq> <IsNull> <FieldRef Name="Status"></FieldRef> </IsNull> </Or> </Where> </Query>
  21. 21. DEMO Demo: Ứng dụng Console truy vấn dữ liệu SharePoint sử dụng CAML Quản lý dữ liệu SharePoint 21
  22. 22. Truy vấn LINQ to SharePoint LINQ to SharePoint Provider được định nghĩa trong namespace Microsoft.SharePoint.Linq. SharePoint thực hiện việc chuyển truy vấn dưới dạng LINQ sang truy vấn dưới dạng CAML trước khi thực thi. LINQ to SharePoint là một cách thức để truy vấn dữ liệu SharePoint mà không phải sử dụng CAML. LINQ to SharePoint Provider được định nghĩa trong namespace Microsoft.SharePoint.Linq. SharePoint thực hiện việc chuyển truy vấn dưới dạng LINQ sang truy vấn dưới dạng CAML trước khi thực thi. LINQ to SharePoint là một cách thức để truy vấn dữ liệu SharePoint mà không phải sử dụng CAML. Quản lý dữ liệu SharePoint 22
  23. 23. Truy vấn LINQ to SharePoint Xây dựng dựa trên nền tảng và cú pháp LINQ (tương tự như LINQ to SQL hay LINQ to Object trong Microsoft .NET framework), dành riêng để truy vấn dữ liệu SharePoint Chỉ hoạt động cho các ứng dụng Server-side (phía server) Để truy vấn LINQ dữ liệu SharePoint từ phía Client sử dụng ADO.NET Data Services Xây dựng dựa trên nền tảng và cú pháp LINQ (tương tự như LINQ to SQL hay LINQ to Object trong Microsoft .NET framework), dành riêng để truy vấn dữ liệu SharePoint Chỉ hoạt động cho các ứng dụng Server-side (phía server) Để truy vấn LINQ dữ liệu SharePoint từ phía Client sử dụng ADO.NET Data Services Quản lý dữ liệu SharePoint 23
  24. 24. Sử dụng LINQ to SharePoint Tạo các lớp thực thể Tạo DataContext Viết truy vấn Quản lý dữ liệu SharePoint 24 Tạo các lớp thực thể Tạo DataContext Viết truy vấn
  25. 25. Tạo các lớp thực thể Tự động tạo các lớp thực thể tương ứng với các Lists/Libraries trên SharePoint sử dụng công cụ SPMetal.exe spmetal /web:<url> /code:Projects.cs Tự động tạo các lớp cho một hoặc nhiều List Tự động tạo đối tượng DataContext Tự động tạo các lớp thực thể tương ứng với các Lists/Libraries trên SharePoint sử dụng công cụ SPMetal.exe spmetal /web:<url> /code:Projects.cs Tự động tạo các lớp cho một hoặc nhiều List Tự động tạo đối tượng DataContext Quản lý dữ liệu SharePoint 25
  26. 26. Tạo các lớp thực thể Add Reference tới Microsoft.SharePoint.Linq.dll Thêm mã nguồn của Entity được sinh ra từ công cụ SPMetal vào Visual Studio Project [ContentTypeAttribute(Name="Announcement", Id="0x0104")] public partial class Announcement : Item { [ColumnAttribute(Name="Body", Storage="_body", FieldType="Note")] public string Body { get { return this._body; } set { if ((value != this._body)) { this.OnPropertyChanging("Body", this._body); this._body = value; this.OnPropertyChanged("Body"); } } } Quản lý dữ liệu SharePoint 26 [ContentTypeAttribute(Name="Announcement", Id="0x0104")] public partial class Announcement : Item { [ColumnAttribute(Name="Body", Storage="_body", FieldType="Note")] public string Body { get { return this._body; } set { if ((value != this._body)) { this.OnPropertyChanging("Body", this._body); this._body = value; this.OnPropertyChanged("Body"); } } }
  27. 27. Tạo đối tượng DataContext Sử dụng các lớp Entities Sử dụng đối tượng DataContext để truy cập tới các Entity public partial class Lab05DataContext : DataContext { … public Lab05DataContext(string requestUrl) : base(requestUrl) { this.OnCreated(); } … } Quản lý dữ liệu SharePoint 27 public partial class Lab05DataContext : DataContext { … public Lab05DataContext(string requestUrl) : base(requestUrl) { this.OnCreated(); } … }
  28. 28. List có quan hệ Có thể thực hiện truy vấn chéo giữa các List có quan hệ Sử dụng thuộc tính Association để khai báo quan hệ giữa các list (Entity) [ContentTypeAttribute(Name="Employees", Id="0x0104")] public partial class Employees : Item { [AssociationAttribute(Name="Body", Storage="_project", MultivalueType=AssociationType.Single List=“Projects")] public string Project { get {…} set {…} } Quản lý dữ liệu SharePoint 28 [ContentTypeAttribute(Name="Employees", Id="0x0104")] public partial class Employees : Item { [AssociationAttribute(Name="Body", Storage="_project", MultivalueType=AssociationType.Single List=“Projects")] public string Project { get {…} set {…} }
  29. 29. List có quan hệ Truy vấn chéo giữa các list có quan hệ sử dụng cú pháp LINQ Ví dụ: List Employees có quan hệ với List Project var qw = from emp in dc.Employees where emp.Project.DueDate < DateTime.Now.AddYears(5) orderby emp.Project.DueDate select emp; Quản lý dữ liệu SharePoint 29 var qw = from emp in dc.Employees where emp.Project.DueDate < DateTime.Now.AddYears(5) orderby emp.Project.DueDate select emp;
  30. 30. Sửa đổi dữ liệu Các thay đổi đối với các đối tượng Entity (List item…) được kiểm soát bởi LINQ Provider. Để thực hiện thay đổi, gọi phương thức SubmitChanges() Quản lý dữ liệu SharePoint 30
  31. 31. Sửa đổi dữ liệu // Khởi tạo đối tượng DataContext DataContext data = new DataContext(SPContext.Current.Web.Url); // Lấy ra đối tượng Customers list EntityList<Customer> Customers = data.GetList<Customer>("Customers"); // Tạo mới một đối tượng Customer Customer newCustomer = new Customer() { CustomerId=36, City="Madrid" }; // Đánh dấu đối tượng này sẽ được thêm vào trong lần Submit tới Customers.InsertOnSubmit(newCustomer); // Submit toàn bộ thay đổi data.SubmitChanges(); Quản lý dữ liệu SharePoint 31 // Khởi tạo đối tượng DataContext DataContext data = new DataContext(SPContext.Current.Web.Url); // Lấy ra đối tượng Customers list EntityList<Customer> Customers = data.GetList<Customer>("Customers"); // Tạo mới một đối tượng Customer Customer newCustomer = new Customer() { CustomerId=36, City="Madrid" }; // Đánh dấu đối tượng này sẽ được thêm vào trong lần Submit tới Customers.InsertOnSubmit(newCustomer); // Submit toàn bộ thay đổi data.SubmitChanges();
  32. 32. DEMO Demo: Ứng dụng Console sử dụng LINQ to SharePoint Provider để truy vấn dữ liệu SharePoint Quản lý dữ liệu SharePoint 32
  33. 33. Tổng kết bài học Chúng ta có thể viết các Event để xử lý các sự kiện được thực thi trên SharePoint Có hai loại Event trên SharePoint bao gồm Before event After event CAML được sử dụng như là ngôn ngữ truy vấn dữ liệu SharePoint Chúng ta có thể viết các Event để xử lý các sự kiện được thực thi trên SharePoint Có hai loại Event trên SharePoint bao gồm Before event After event CAML được sử dụng như là ngôn ngữ truy vấn dữ liệu SharePoint Quản lý dữ liệu SharePoint 33
  34. 34. Tổng kết bài học Ngoài việc sử dụng CAML chúng ta có thể sử dụng LINQ to SharePoint để truy vấn dữ liệu SharePoint trên môi trường server. DataContext là đối tượng trung tâm trong LINQ to SharePoint để truy vấn dữ liệu Quản lý dữ liệu SharePoint 34
  35. 35. Tham khảo http://msdn.microsoft.com/en-us/library/gg749858.aspx http://msdn.microsoft.com/en-us/library/ee535491.aspx Quản lý dữ liệu SharePoint 35

×