Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 117 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
117
Dung lượng
9,81 MB
Nội dung
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM KHÓA LUẬN TỐT NGHIỆP NGHIÊN CỨU WORKFLOW SYSTEM VÀ XÂY DỰNG HỆ THỐNG QUẢN LÝ TÀI LIỆU QUA MẠNG (STUDY WORKFLOW SYSTEM AND BUILDING AN ONLINE DOCUMENT MANAGEMENT SYSTEM) Giáo viên hướng dẫn: TS NGÔ THANH HÙNG Sinh viên thực hiện: 1.LÊ CAO THÙY 2.PHẠM CƠNG THƢỞNG Lớp: CNPM01 Khóa: 01 Tp.Hồ Chí Minh, Tháng 03 năm 2011 TS.Ngơ Thanh Hùng Phạm Công Thưởng-Lê Cao Thùy LỜI MỞ ĐẦU Trong 10 năm trở lại Chưa trình tin học hóa lại diễn mạnh mẽ bùng nổ đến Nó len lỏi ăn sâu anh hưởng đến hầu hết lĩnh vực, ngành nghề xã hội, sống Và từ đó, chưa kĩ sư lập trình viên lại có vai trò quan trọng đến sống Họ đưa đến sống sản phẩm ứng dụng vơ hữu ích phục vụ cơng việc, sống, người Đi đôi với việc xây dựng ứng dụng cơng việc bảo trì phát triển sản phẩm vơ cần thiết Thế với lối lập trình truyền thống thường giải logic, trình tự công việc mớ mã (code) phức tạp, hỗn độn thiếu chuyên nghiệp Thông thường người trực tiếp phát triển hiểu rõ, điều gây nhiều khó khăn cho việc phát triển bảo trì sau Vậy để giải vấn đề trên? Workflow System giải pháp Với giải pháp Workflow logic công việc giải dạng mơ hình hóa Thay biểu diễn mớ mã phức tạp thay mơ hình trực quan hơn, dễ hình dung hơn, dễ nắm bắt hơn…Rất hữu ích cho việc nắm bắt bảo trì sau Với u cầu cấp thiết đó, Nhóm chúng tơi định nghiên cứu đề tài từ là:Windows Workflow Foundation Một nhà tốt nhà có nèn móng vững vàng, chắn Việc nắm rõ kiến thức tốt giúp bạn dễ dàng phát triển sau Mặt dù dành nhiều thời gian công sức để nghiên cứu chắn không tránh mắc phải thiếu sót Rất mong nhận ý kiến đống góp từ Thầy (Cơ) bạn Tp HCM, Ngày 29 tháng 03 năm 2011 Lê Cao Thùy Phạm Công Thƣởng TS.Ngô Thanh Hùng Phạm Công Thưởng-Lê Cao Thùy LỜI CẢM ƠN Chúng em xin chân thành cảm ơn Khoa Công Nghệ Phần Mềm, Trường Đại học Công Nghệ Thông Tin ĐHQG Tp.HCM cho phép tạo điều kiện cho chúng em thực đề tài tốt nghiệp Chúng em xin chân thành cảm ơn thầy Ngô Thanh Hùng tận tình hướng dẫn, bảo chúng em suốt trình thực đề tài Qua hướng dẫn Thầy, chúng em không học nhiều kiến thức bổ ích mà học thầy phương pháp nghiên cứu khoa học, thái độ tinh thần làm việc nghiêm túc, có trách nhiệm Chúng em xin chân thành cảm ơn Thầy (Cô) Khoa Công nghệ phần mềm trang bị cho chúng em kiến thức bổ ích suốt trình học tập trường Những kiến thức giúp chúng em nhiều trình làm đề tài hành trang cho chúng em tự tin, vững bước vào đời Chúng xin ghi nhớ công ơn Ba, Mẹ Ba Mẹ chỗ dựa vững chắc, niềm động viên giúp chúng vượt qua khó khan sống Và cuối cùng, Chúng xin chân thành cảm ơn bạn sinh viên CNPM01 đồng hành giúp đỡ với thời gian qua Mặc dù cố gắng hoàn thành luận văn với tất nổ lực thân, chắn chúng em khơng tránh khỏi sai sót, chúng em mong q Thầy (Cơ) tận tình bảo Một lần chúng em xin gửi đén tất người lời cảm ơn chân thành Tp HCM, Ngày 29 Tháng 03 Năm 2011 Lê Cao Thùy Phạm Công Thƣởng TS.Ngô Thanh Hùng Phạm Công Thưởng-Lê Cao Thùy ABSTRACT Document management system is very necessary for most enterprises and organizations It supports all activities with documents such as creating, deleting, modifying and sharing or “flowing” them between the members of organization In this thesis we will mention some features of workflow system Then we will propose an architecture of a system for managing most of activities with document in a faculty as mentioned above The system was built on Workflow Foundation in Visual Studio 2010 The users work with files stored on a distributed file server through a web interface TS.Ngô Thanh Hùng Phạm Công Thưởng-Lê Cao Thùy NHẬN XÉT (Của giảng viên hƣớng dẫn) ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… Tp HCM, Ngày Tháng Năm 2011 Giảng viên hƣớng dẫn TS.Ngô Thanh Hùng TS.Ngô Thanh Hùng Phạm Công Thưởng-Lê Cao Thùy NHẬN XÉT (Của giảng viên phản biện) ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… …………………………………………………………………………………………… Tp.HCM, Ngày tháng năm 2011 Giảng viên phản biện Ths.Phan Nguyệt Minh TS.Ngô Thanh Hùng Phạm Công Thưởng-Lê Cao Thùy MỤC LỤC CHƢƠNG 1: MỞ ĐẦU 1.1.Lý chọn đề tài 1.2.Tính cấp thiết đề tài 1.3.Khái quát mục tiêu ứng dụng đƣợc xây dựng CHƢƠNG 2-CƠ SỞ LÝ THUYẾT WORKFLOW FOUNDATION 2.1.Vài nét khái quát 2.1.1.WorkFlow gì? 2.1.2.Giới thiệu Window Workflow Foundation 2.2.Xây dựng Workflow 15 2.2.1.Mô hình lập trình WF 15 2.2.2.Các cách viết WF 18 2.3 Khám phá Workflow Activity 29 2.3.1.Giới thiệu tổng quan Activity 29 2.3.2.Các Activity thông dụng 30 2.4.Activity tùy biến 34 2.4.1.Tại nên xây dựng activity tùy biến? 34 2.4.2.Xây dựng Activity tùy biến 35 2.4.3 Các thành phần Activity 42 2.5.Tháo nạp thể Workflow 46 2.5.1.Đảm bảo tính lâu dài Workflow 47 2.5.2.Giới thiêu dịch vụ SqlWorkflowPersistenceService 48 2.5.3.Cài đặt khả tháo nạp thể workflow (xem thêm WF_Lesion 5) 48 2.6.Workflow máy trạng thái 48 2.6.1.Giới thiệu Workflow máy trạng thái 48 2.6.2.Ví dụ workflow máy trạng thái (tham khảo thêm WF_Lession 7) 52 2.7.Luật Workflow 52 2.7.1.Khái quát luật WF 52 2.7.2.Các luật WF 52 2.8.Workflow WebService 54 TS.Ngô Thanh Hùng Phạm Công Thưởng-Lê Cao Thùy 2.8.1.Gọi Web service từ workflow 55 2.8.2 Xuất workflow dạng Web service 56 2.9 Workflow SharePoint 67 2.9.1.Tìm hiểu Human Workflow 68 2.9.2.Tìm hiểu System workflow 69 2.9.3.Các giai đoạn Workflow mặc định SharePoint 70 2.9.4.Các công cụ hỗ trợ Workflow SharePoint 72 CHƢƠNG 3- THIẾT KẾ VÀ CÀI ĐẶT 74 3.1.Thiết kế sở liệu 74 3.1.1.Sơ đồ luồng liệu (Flow Data Diagram- FDD) 74 3.1.2.Các bảng thực thể thuộc tính 75 3.1.3 Sơ đồ quan hệ liệu logic 78 3.1.4 Sơ đồ UseCase 81 3.2.Thiết kế ứng dụng 83 3.2.1.Biểu đồ lớp 83 3.2.2.Sơ đồ (Sequence Diagram) 85 3.3.Workflow đƣợc thiết kế cho ứng dụng 89 3.3.1 Workflow Add_Folder 89 3.3.2 Workflow Syn 90 3.4.Thiết kế giao diện 91 3.4.Cài đặt 93 3.4.1.Cài đặt sở liệu 93 CHƢƠNG 4- KẾT LUẬN 104 4.1.Kết đạt đƣợc 104 4.1.1 Những mặt đạt được: 104 4.1.2.Những hạn chế: 104 4.2 Hƣớng phát triển 104 DANH MỤC TÀI LIỆU THAM KHẢO 106 TS.Ngô Thanh Hùng Phạm Cơng Thưởng-Lê Cao Thùy DANH MỤC CÁC HÌNH VẼ Hình 1.1Các chức ứng dụng Hình 2.1 Mơ hình xây dựng workflow WF Hình 2.2 Ví dụ WorkFlow trinh tự Hình 2.3 WorkFlow máy trạng thái Hình 2.4 Vị trí WF NET 3.0 Hình 2.5 Kiến trúc WF Hình 2.6 Kiến trúc WF 16 Hình 2.7 Thiết kế workflow Workflow Designer Víual Studio 17 Hình 2.8 Những lập trình viên liên quan đến WF 18 Hình 2.9 Quy trình xây dựng workflow WF 18 Hình 2.10 Tạo project FirstCodeWFApplication 19 Hình 2.11 Thiết kế workflow 20 Hình 2.12 Hộp thoại chọn luật cho activity While 21 Hình 2.13 Soạn luật 21 Hình 2.14 Workflow hồn thiện với activity 22 Hình 2.15 Luật cho nhóm bên phải activity IfElse 23 Hình 2.16 Tạo Project FirstXAMLWFApplication 25 Hình 2.17 Tạo Workflow với mã XAML 26 Hình 2.18 Thiết kế workflow MyWorkflow 26 Hình 2.19 Logic thực thi activity Replicator 32 Hình 2.20 Tạo dự án CompositionWorkflowExample 36 Hình 2.21 Tạo dự án HelloWorldActivityLibrary 37 Hình 2.22 Thiết kế HelloWorldActivity 38 Hình 2.23 Activity HelloWorldActivity hiển thị bên cạnh activity khác toolbox 39 Hình 2.24 Dùng activity HelloWorldActivity workflow1 39 Hình 2.25 Kêt qủa chạy ứng dụng CustomActivity 40 Hình 2.26 Tạo dự án DerivationWorkflowExample 40 Hình 2.27 Tạo dự án WriteConsoleActivity 41 Hình 2.28 Cấu hình activity WriteConsoleActivity 42 Hình 2.29 Chạy ứng dụng DerivationWorkflowExample 42 Hình 2.30 Tác dụng thành phần Validator Designer 46 Hình 2.31 Tháo nạp thể workflow 47 Hình 2.32 Example state machine workflow 49 Hình 2.33 Quan hệ activity workflow máy trạng thái 50 Hình 2.34 Nhiều trạng thái xử lý kiện 51 TS.Ngô Thanh Hùng Phạm Công Thưởng-Lê Cao Thùy Hình 2.35 Trạng thái lồng chung xử lý kiện 52 Hình 2.36 Các activity hỗ trợ webservice 57 Hình 2.37 Tạo dự án SimpleWorkflowWebService 58 Hình 2.38 Màn hình thiết kế workflow SimpleWorkflowWebSevice 60 Hình 2.39 Workflow sau có thêm activity While 64 Hình 2.40 Màn hình thiết kế workflow StatefulWorkflowWebService 66 Hình 2.41 Human Workflow 69 Hình 2.42 Ví dụ System Workflow 69 Hình 3.1 Sơ đồ quan hệ liệu 79 Hình 3.2 Sơ đồ Logic 81 Hình 3.3 Sơ đồ UseCase 82 Hình 3.4 Sơ đồ lớp 83 Hình 3.5 Sơ đồ lớp 84 Hình 3.6 Sơ đồ QL đăng nhập 85 Hình 3.7 Sơ đồ QL tài khoản 86 Hình 3.8 Sơ đồ QL Thư mục 87 Hình 3.9 Sơ đồ QL tập tin 88 Hình 3.10 Mơ Hình Workflow Syn 90 Hình 3.11 Giao diện ứng dụng 91 Hình 3.12 Giao diện ứng dụng 92 Hình 3.13Giao diện với menu 92 Hình 3.14 Giao diện phân quyền 93 Hình 3.15 Giao diện thêm tài liệu 93 TS.Ngơ Thanh Hùng Phạm Cơng Thưởng-Lê Cao Thùy 92 Hình 3.12 Giao diện ứng dụng Hình 3.13Giao diện với menu TS.Ngô Thanh Hùng Phạm Công Thưởng-Lê Cao Thùy 93 Hình 3.14 Giao diện phân quyền Hình 3.15 Giao diện thêm tài liệu 3.4.Cài đặt 3.4.1.Cài đặt sở liệu Phần sở liệu WebExplorer cài đặt SQL Server 2005 bao gồm stored procedures sau: Folder_T_procInsert: Thêm folder vào liệu Câu lệnh tạo sau: create procedure [dbo].[Folder_T_procInsert] TS.Ngô Thanh Hùng Phạm Công Thưởng-Lê Cao Thùy 94 @FolderName nvarchar(250), @FolderTitle nvarchar(250), @FolderTitleNoMark nvarchar(250), @ParentId int, @RootId int, @IsDeleted bit, @IsVisibled bit, @LastModifiedDate datetime, @LastModifiedByUser int, @CreatedDate datetime, @CreatedByUser int, @IsRoot bit, @SubFolderQuantity int, @FileQuantity int, @UpdateTime int, @Path nvarchar(1020) as begin insert into Folder_T(FolderName,FolderTitle,FolderTitleNoMark,ParentId,RootId,IsDeleted,IsVi sibled, LastModifiedDate,LastModifiedByUser,CreatedDate,CreatedByUser,IsRoot,S ubFolderQuantity,FileQuantity,UpdatedTime,Path) values (@FolderName,@FolderTitle,@FolderTitleNoMark,@ParentId,@RootId,@Is Deleted,@IsVisibled, @LastModifiedDate,@LastModifiedByUser,@CreatedDate,@CreatedByUser, @IsRoot,@SubFolderQuantity,@FileQuantity,@UpdateTime,@Path) select MAX(FolderId) as FolderId from Folder_T end Folder_T_procGetPath: Lấy đường dẫn tới thư mục có folderId tương ứng Do quản lý liệu theo dạng nhị phân nên việc lấy đường dẫn tuyệt đối phải thông qua hàm Create procedure [dbo].[Folder_T_procGetPath] @FolderId int, @RootId int as begin declare @parent int; set @parent=1; declare @path nvarchar(255); TS.Ngô Thanh Hùng Phạm Công Thưởng-Lê Cao Thùy 95 declare @pathfull nvarchar(1024); set @pathfull=''; declare @parentoutput int; while @parent >0 begin print @parent exec Folder_T_procGetParentouput @FolderId, @RootId, @parentoutput output,@path output if(@parentoutput0) begin set @pathfull=@pathfull+'\'+@path end else begin set @pathfull=@pathfull+'\' end set @parent=@parentoutput set @FolderId=@parent end select @pathfull as Path,@parent as p end FileInfo_T_proInsert: Thêm tài liệu vào thư mục Câu lệnh tạo sau: Create procedure [dbo].[FileInfo_T_procInsert] @FolderId int, @FileName nvarchar(255), @FileNameNoMark nvarchar(255), @Title nvarchar(255), @Author nvarchar(255), @Pub nvarchar(255), @Description nvarchar(1024), @Keywords nvarchar(50), @CreatedBy nvarchar(255), @CreatedDate datetime, @ModifiedDate datetime, @Syn bit, @TypeId int, @Format nvarchar(50), @Source nvarchar(255), @LanguageISO nvarchar(255), @Relate nvarchar(255), @Scope nvarchar(255), @TitleNoMark nvarchar(255), @AuthorNoMark nvarchar(255), TS.Ngô Thanh Hùng Phạm Công Thưởng-Lê Cao Thùy 96 @PubNoMark nvarchar(255), @DescriptionNoMark nvarchar(1024), @KeywordsNoMark nvarchar(50), @PubYear nvarchar(50), @LastModifiedByUser int, @UpdateTime int, @RootId int as begin insert into FileInfo_T (FolderId,FileName,FileNameNoMark,Title,Author,Pub,Description,Keywords,Create dBy, CreatedDate,ModifiedDate,Syn,TypeId,Format,Source,LanguageISO,Relate,Sc ope, TitleNoMark,AuthorNoMark,PubNoMark,DescriptionNoMark,KeywordsNoM ark,PubYear, LastModifiedByUser,UpdateTime,RootId) values (@FolderId,@FileName,@FileNameNoMark,@Title,@Author,@Pub,@Description, @Keywords,@CreatedBy, @CreatedDate,@ModifiedDate,@Syn,@TypeId,@Format,@Source,@Langua geISO,@Relate,@Scope, @TitleNoMark,@AuthorNoMark,@PubNoMark,@DescriptionNoMark,@Key wordsNoMark,@PubYear, @LastModifiedByUser,@UpdateTime,@RootId) end User_T_Role_procGetFolderInfo:Lấy tồn quyền có folder theo UserId hay GroupId hai Câu lệnh tạo sau: Create procedure [dbo].[User_T_Role_procGetFolderInfo] @FolderId int, @UserId int, @GroupId int as begin select RoleId,ChildInherit from User_T_Role where FolderId=@FolderId and UserId=@UserId union select RoleId,ChildInherit from Group_T_Role where FolderId=@FolderId and GroupId=@GroupId TS.Ngô Thanh Hùng Phạm Công Thưởng-Lê Cao Thùy 97 end FileInfo_procSearchByCriteria: Đây hàm tìm kiếm file Câu lệnh tạo sau: Create PROCEDURE [dbo].[FileInfo_procSearchByCriteria] @search_type int, @search_querystring nvarchar(255) AS BEGIN IF (@search_type=1) Begin select * from FileInfo_T where FileNameNoMark like N'%'+@search_querystring+'%' end if (@search_type=2) begin select * from FileInfo_T where TitleNoMark like N'%'+@search_querystring+'%' end if (@search_type=3) begin select * from FileInfo_T where AuthorNoMark like N'%'+@search_querystring+'%' end if (@search_type=4) begin select * from FileInfo_T where PubNoMark like N'%'+@search_querystring+'%' end if (@search_type=5) begin select * from FileInfo_T where DescriptionNoMark like N'%'+@search_querystring+'%' end if (@search_type=6) begin select * from FileInfo_T where KeywordsNoMark like N'%'+@search_querystring+'%' end SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements SET NOCOUNT ON; Insert statements for procedure here END TS.Ngô Thanh Hùng Phạm Công Thưởng-Lê Cao Thùy 98 3.4.2.Cài đặt ứng dụng Ứng dụng cài đặt Visual Studio 2008, viết C# Sau số hàm viết ứng dụng: SynFolder_File: Hàm đồng hóa thư mục file Đây hàm giúp đồng hóa liệu file folder database file- folder ổ cứng vật lý HDD Đây hàm thể chức quan trọng ứng dụng public void SynFolder_File(int folderId,TreeNode nodeparent) { Folder_T selectFolder = new Folder_T(); Folder_T obj = new Folder_T(); selectFolder = selectFolder.GetFolderInfo(folderId, this.RootId); string pathFull = this.RootFolderPath+selectFolder.GetFolderPath(this.RootId,folderId); DirectoryInfo Realfolder = new DirectoryInfo(pathFull); if (Realfolder.GetDirectories().Length > 0) { foreach (DirectoryInfo subfolder in Realfolder.GetDirectories()) { bool check= obj.CheckExistFolder(selectFolder.FolderId, this.RootId, subfolder.Name, obj); if (obj.FolderId || obj.SubFolderQuantity > 0) { try { TS.Ngô Thanh Hùng Phạm Công Thưởng-Lê Cao Thùy 99 ThreadStart ts = delegate() { SynFolder_File(subfolderId, newnode); }; Thread hThread = new Thread(ts); hThread.Start(); } catch (Exception ex) { } } } else { int subfolderquantity = subfolder.GetDirectories().Length; int subfilequantity = subfolder.GetFiles().Length; if (obj.SubFolderQuantity != subfolderquantity || obj.FileQuantity != subfilequantity) { try { TreeNode nodesub = new TreeNode(); foreach (TreeNode i in nodeparent.ChildNodes) { if (i.Value == obj.FolderId.ToString()) { nodesub = i; break; } } ThreadStart ts = delegate() { SynFolder_File(obj.FolderId, nodesub); }; Thread hThread = new Thread(ts); hThread.Start(); } catch (Exception ex) { } } } } FileInfo_T newfile = new FileInfo_T(); newfile = newfile.GetCurrentUpdateTime(this.RootId, folderId); int updateTime=0; if(newfile.ID!=string.Empty) { TS.Ngô Thanh Hùng Phạm Công Thưởng-Lê Cao Thùy 100 updateTime= newfile.UpdateTime; } // newfile.DeleteAllFileInFolder(folderId); foreach (FileInfo subfile in Realfolder.GetFiles()) { bool isExistFile= newfile.CheckExistFile(this.RootId, folderId, subfile.Name, newfile); if (isExistFile == false) { newfile.FolderId = folderId; newfile.Title = subfile.Name; newfile.Author = string.Empty; newfile.AuthorNoMark = string.Empty; newfile.Description = string.Empty; newfile.DescriptionNoMark = string.Empty; newfile.Keywords = string.Empty; newfile.KeywordsNoMark = string.Empty; newfile.LanguageISO = string.Empty; newfile.Pub = string.Empty; newfile.PubNoMark = string.Empty; newfile.Relate = string.Empty; newfile.FileName = subfile.Name; newfile.FileNameNoMark = subfile.Name.ToLower(); newfile.Format = subfile.Extension; newfile.CreatedDate = subfile.CreationTime; newfile.ModifiedDate = subfile.LastWriteTime; newfile.RootId = this.RootId; newfile.TypeId = 1; newfile.UpdateTime = updateTime+1; newfile.Insert(); } else { newfile.UpdateTime += 1; newfile.Update(); } } updateTime += 1; newfile.DeleteFileNotUpdate(this.RootId, folderId, updateTime); } else { FileInfo_T newfile = new FileInfo_T(); newfile = newfile.GetCurrentUpdateTime(this.RootId, folderId); int updateTime = 0; if (newfile.ID != string.Empty) { TS.Ngô Thanh Hùng Phạm Công Thưởng-Lê Cao Thùy 101 updateTime = newfile.UpdateTime; } // newfile.DeleteAllFileInFolder(folderId); foreach (FileInfo subfile in Realfolder.GetFiles()) { bool isExistFile = newfile.CheckExistFile(this.RootId, folderId, subfile.Name, newfile); if (isExistFile == false) { newfile.FolderId = folderId; newfile.Title = subfile.Name; newfile.Author = string.Empty; newfile.AuthorNoMark = string.Empty; newfile.Description = string.Empty; newfile.DescriptionNoMark = string.Empty; newfile.Keywords = string.Empty; newfile.KeywordsNoMark = string.Empty; newfile.LanguageISO = string.Empty; newfile.Pub = string.Empty; newfile.PubNoMark = string.Empty; newfile.Relate = string.Empty; newfile.FileName = subfile.Name; newfile.FileNameNoMark = subfile.Name.ToLower(); newfile.Format = subfile.Extension; newfile.CreatedDate = subfile.CreationTime; newfile.ModifiedDate = subfile.LastWriteTime; newfile.RootId = this.RootId; newfile.TypeId = 1; newfile.UpdateTime = updateTime + 1; newfile.Insert(); } else { newfile.UpdateTime += 1; newfile.Update(); } } updateTime += 1; newfile.DeleteFileNotUpdate(this.RootId, folderId, updateTime); } // Folder_TCollection } BindNodeTree: Đây hàm xây dựng thư mục chương trình Hàm đọc liệu từ database sau tiến hành thực đưa vào thư mục(TreeView) trình diễn trình duyệt public void BindNodeTree(TreeNode note, int _RootfolderId) TS.Ngô Thanh Hùng Phạm Công Thưởng-Lê Cao Thùy 102 { Folder_TCollection collection = new Folder_TCollection(); Folder_T obj = new Folder_T(); collection = obj.GetSubFolder(this.RootId, _RootfolderId); if (collection.Count > 0) { foreach (Folder_T dir in collection) { TreeNode newNode = new TreeNode(dir.FolderName, dir.FolderId.ToString()); note.ChildNodes.Add(newNode); if (dir.SubFolderQuantity > 0) { newNode.PopulateOnDemand = true; BindNodeTree(newNode, dir.FolderId); } } } } BindDirsContents: Đây hàm đọc liệu folder trả folder file tồn thư mục private void BindDirsContents(TreeNode node, System.Web.UI.WebControls.GridView gridView) { FolderFileCombineInfo allfilefolder = new FolderFileCombineInfo(); FolderFileCombineCollection allcollection = new FolderFileCombineCollection(); try { allcollection.Add(allfilefolder.GetAllSubFolder(this.RootId,int.Parse( node.Value))); allcollection.Add(allfilefolder.GetAllFileInFolder(int.Parse(node.Value))); gridView.PagerTemplate = null; gridView.PageSize = IntPageSize; gridView.DataSource = allcollection; gridView.DataBind(); for (int i = 1; i < gridView.Columns.Count - 4; i++) { gridView.Columns[i].Visible = FieldVisible[i - 1]; } //this.lblTotalFileTitle.Visible = true; //this.lblTotalFileNumber.Visible = true; TS.Ngô Thanh Hùng Phạm Công Thưởng-Lê Cao Thùy 103 this.lblTotalFileNumber.Text = System.IO.Directory.GetFiles(node.Value, "*.*", SearchOption.AllDirectories).Length.ToString(); } catch (Exception ex) { Logging.LogMessage("UCWExplorer:BindDirsContents", ex.Message); } } TS.Ngô Thanh Hùng Phạm Công Thưởng-Lê Cao Thùy 104 CHƢƠNG 4- KẾT LUẬN Trong chương này, chúng tơi tóm tắt kết đạt được, liệt kê ưu, nhược điểm hệ thống, đồng thời đưa hướng phát triển cách khắc phục nhược điểm phiên sau 4.1.Kết đạt đƣợc 4.1.1 Những mặt đạt đƣợc: Ứng dụng xây dựng gồm chức cần thiết tương đương window explorer sau: Quản lý thư mục: Thêm thư mục Chỉnh sửa tên thư mục Xóa thư mục Cắt dán thư mục Phân quyền thư mục Đồng thư mục database ổ cứng vật lý HDD Quản lý file: Thêm file cập nhật thông tin file xóa file phân quyền file di chuyển file Mở file trực tuyến (hỗ trợ pdf, png,jpg,bmp ) Tìm kiếm file 4.1.2.Những hạn chế: Giao diện chưa đẹp Chưa quản lý version file Chưa hỗ trợ đọc loại file khác *.doc, *.xls… Ứng dụng cho đọc file trực tuyến chưa cho phép thay đổi nội dung trực tuyến hỗ trợ định dạng đọc file chưa nhiều 4.2 Hƣớng phát triển Trên sơ kết đạt được, đặt hướng phát triển cho chương trình: TS.Ngơ Thanh Hùng Phạm Cơng Thưởng-Lê Cao Thùy 105 Cải thiện lại giao diện cho đẹp dễ sử dụng Bổ sung thêm việc hỗ trợ đọc trực tuyên số loại file khác pdf loại file hình ảnh Quản lý version file Nghiên cứu googledoc ứng dụng vào phép chỉnh sửa file trực tuyến TS.Ngô Thanh Hùng Phạm Công Thưởng-Lê Cao Thùy 106 DANH MỤC TÀI LIỆU THAM KHẢO Tài liệu Tiếng Việt [1] DPE Team, Workflow Foundation Lession, Microsoft Việt Nam,2009 [2] ICT24H Team, SharePoint Server 2010 dành cho quản trị viên, 2010 [3] Website: http://www.sharepointvn.net Tài liệu Tiếng Anh [4] Bruce Bukovics, Pro WF Windows Workflow in NET 3.5, 2010 [5]Eric Carter, Boric Scholl, Peter Jausovec, SharePoint 2010 development with Visual Stdio 2010, Microsoft, 2010 [6]Kenn Scribner, Microsoft Windows Workflow Foundation step by step, Microsoft press 2007 [7] Dharma Shukla and Bob Schmidt, Essential Windows Workflow Foundation, Addison Wesley Professional 2006 [8] K Scott Allen, Programming Windows Workflow Foundation, Packt Publishing Ltd December 2006 ISBN 1-904811-21-3 TS.Ngô Thanh Hùng Phạm Công Thưởng-Lê Cao Thùy ... sử tài liệu: Các version tài liệu Phân quyền tài liệu Quản lý [Check out]hoặc [Check in ]tài liệu Download tài liệu Chỉ mục thông tin tài liệu Quản lý version tài liệu Các chức mô tả trực quan... Thêm tài liệu Cắt/dan tài liệu Thay đổi tên tài liệu Xóa hay nhiều tài liệu Làm tươi (Refresh) liệu Di chuyển đến thư mục cha Di chuyển tài liệu Tìm kiếm tài liệu Đồng tài liệu: Đồng liệu ổ... mục tiêu ứng dụng đƣợc xây dựng Nghiên cứu tìm hiểu nắm bắt Workflow System từ dựa Workflow Foundation NET 3.0 đến Workflow system mức cao Workflow System SharePoint 2010 Qua hi vọng truyền tải