Nội dung bài họcTì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... Sự kiện trong SharePointSự kiện Event trong Sha
Trang 1Bài 5:
Quản lý dữ liệu SharePoint
Trang 3Nộ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
Trang 4Sự 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 ratrên SharePoint
Ngăn chặn việc xóa công việc khi chưa hoàn
thành
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
Trang 5Before 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 = trueThườ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 = trueThường dùng để phê chuẩn dữ liệu trên SharePoint
Trang 6Before 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.
Trang 7After 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ộ
Trang 8After 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.
Trang 9Sự 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
Trang 10Cá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
Tham khảo: http://msdn.microsoft.com/en-us/library/gg749858.aspx
Trang 11Sự 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
(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
Trang 12Sự kiện trong SharePoint 2010
SPContentType
ItemAdding, ItemAdded, ItemDeleting, ItemDeleted, ItemUpdating, ItemUpdated, ItemFileConverted, ItemFileMoving,
ItemFileMoved, ItemCheckingIn, ItemCheckedIn, ItemCheckingOut, ItemCheckedOut, ItemAttachmentAdding, ItemAttachmentAdded,
ItemAttachmentDeleting, ItemAttachmentDeleted
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,
Trang 13Khai báo sự kiện trong Element.xml
Trang 14RootWebOnly Tùy chọn kiểu Boolean True nếu Event
chỉ áp dụng cho Root WebScope 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
Trang 15SharePoint Events trong VS2010
Trang 16Demo:
Viết một Event Receiver sử dụng Visual Studio 2010
Trang 17Truy 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) haycá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) haycá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
Trang 18Cá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 Field
FieldRef 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
Trang 19Now Thời gian hiện tại
Now Thời gian hiện tại
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
Tham khảo: http://msdn.microsoft.com/en-us/library/ms467521.aspx
Trang 21Demo:
Ứng dụng Console truy vấn dữ liệu SharePoint sử dụng
CAML
Trang 22Truy 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ệuSharePoint 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ệuSharePoint mà không phải sử dụng CAML
Trang 23Truy 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
Trang 25Tạ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
Trang 26Tạ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");
} }
}
[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");
} }
}
Trang 27Tạo đối tượng DataContext
public partial class Lab05DataContext : DataContext {
Trang 28List 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ữacá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 {
public string Project {
get { … }
set {…}
}
Trang 29List có quan hệ
Truy vấn chéo giữa các list có quan hệ sử dụng cú phápLINQ
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;
var qw = from emp in dc.Employees
where emp.Project.DueDate < DateTime Now.AddYears(5)
orderby emp.Project.DueDate
select emp;
Trang 30Sử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()
Trang 31Sử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()
// 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()
Trang 32Demo:
Ứng dụng Console sử dụng LINQ to SharePoint Provider
để truy vấn dữ liệu SharePoint
Trang 34Tổ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
Trang 35Tham khảo
http://msdn.microsoft.com/en-us/library/gg749858.aspxhttp://msdn.microsoft.com/en-us/library/ee535491.aspx