Monday, December 3, 2012

Kết quả cuộc thi Mùa hè sáng tạo 2012 - Sinh viên viết ứng dụng Phần mềm tự do nguồn mở


Giải/
Mã Dự án
Tên dự ánTên nhóm – TrườngĐội trưởngMentor
Giải nhất/
MHST12-02
Xây dựng Mobile Client cho Alfresco
Lớp: SE0419 , FPT University Hà Nội
Vũ Hải NamNguyễn Vũ Hưng
Giải nhì/
MHST12-16
Chương trình gõ tiếng Việt ibus-bogo
Lớp: CNTT3-K54 , Đại học Bách Khoa Hà Nội
Hà Quang DươngNguyễn Hà Dương (iWay)
Giải Ba/
MHST12-01
Xây dựng module mã hóa tài liệu cho Alfresco
Lớp: QH-2010-I/CQ-CA , Đại Học Công Nghệ- ĐHQG HN 
Nguyễn Khánh ThịnhHoàng Chí Linh (EcoIT)
Khuyến khích/
MHST12-04
Tự động hóa bóc và lấy tin cho trang tin điện tử tổng hợp
Lớp: ĐH KHMT2K3 , Đại học Công Nghiệp Hà Nội 
Nguyễn Công Cường
Nguyễn Thế Hùng
(Vinades/NukeViet)
Khuyến khích/
MHST12-11
Phát triển giao diện web cho ứng dụng Skipfish
Lớp: VT091 , Đại Học Hoa Sen Tp HCM
Lê Quốc Nhật Đông
(cá nhân)
Trần Chí Cần (Lạc Tiên)
(Bài bảo vệ của các nhóm được đính kèm trong danh sách trên, click vào tên dự án để tải slide về)

Năm nay BTC bổ sung thêm một giải phụ: Giải “Phong cách Nguồn mở”. Đội SE0419, Đại học FPT Hà Nội đã đoạt giải năm nay nhờ được số điểm phong cách nguồn mở cao nhất tại vòng sơ khảo.

Friday, October 12, 2012

Kết quả sơ khảo MHST 2012


Danh sách dự án vào Chung khảo MHST 2012

Mã Dự ánTên dự ánTên nhóm – TrườngĐội trưởngMentor
MHST12-01
Xây dựng module mã hóa tài liệu cho Alfresco
Lớp: QH-2010-I/CQ-CA , Đại Học Công Nghệ- ĐHQG HN 
Nguyễn Khánh ThịnhHoàng Chí Linh (EcoIT)
MHST12-02
Xây dựng Mobile Client cho Alfresco
Lớp: SE0419 , FPT University Hà Nội
Vũ Hải NamNguyễn Vũ Hưng
MHST12-04
Tự động hóa bóc và lấy tin cho trang tin điện tử tổng hợp
Lớp: ĐH KHMT2K3 , Đại học Công Nghiệp Hà Nội 
Nguyễn Công Cường
Nguyễn Thế Hùng
(Vinades/NukeViet)
MHST12-11
Phát triển giao diện web cho ứng dụng Skipfish
Lớp: VT091 , Đại Học Hoa Sen Tp HCM
Lê Quốc Nhật Đông
(cá nhân)
Trần Chí Cần (Lạc Tiên)
MHST12-16
Chương trình gõ tiếng Việt ibus-bogo
Lớp: CNTT3-K54 , Đại học Bách Khoa Hà Nội
Hà Quang DươngNguyễn Hà Dương (iWay)

Saturday, September 22, 2012

Tổng kết dự án


Vậy là thời điểm kết thúc cuộc thi Mùa hè sáng tạo 2012 đã tới, đây là lúc tổng kết và nhìn lại những thành quả mà nhóm đạt được trong suốt thời gian vừa qua. Dưới đây là tóm tắt những gì mà nhóm đã làm được:
  • Tài liệu đặc tả yêu cầu phần mềm
  • Tài liệu thiết kế phần mềm
  • Tài liệu kiểm thử phần mềm
  • Tài liệu quản lý dự án
  • Tài liệu hướng dẫn biên dịch
  • Tài liệu hướng dẫn sử dụng phần mềm
  • Video giới thiệu phần mềm
  • Hoàn thành và đóng gói mã nguồn
Hiện tại, nhóm đang liên lạc với phía Zia Consulting để nhờ họ hỗ trợ cũng như rà soát lại toàn bộ mã nguồn (source code). Một điều đáng mừng là việc liên lạc giữa 2 bên đang diễn ra hết sức thuận lợi, phía Zia tỏ ra vô cùng hào hứng với sản phẩm của nhóm và họ đang lên kế hoạch rà soát mã nguồn sớm nhất có thể để đưa mã nguồn lên trang chủ của Zia cũng như lên kế hoạch cho giai đoạn phát triển tiếp theo của nhóm. Ngoài ra, nhóm cũng đã đưa mã nguồn của nhóm lên trang http://addons.alfresco.com/ :
Môi trường thực hiện dự án:


  1. Bài học kinh nghiệm

Trong suốt quá trình phát triển dự án, cả đội đã đúc rút được rất nhiều kinh nghiệm quý báu trong việc phát triển phần mềm bao gồm cả những kinh nghiệm về mặt công nghệ, kĩ thuật và cả những kinh nghiệm về mặt giao tiếp, quản lí. Dưới đây là một những kinh nghiệm đã được đúc rút đó:
  1. Phong cách mã nguồn mở: Xuyên suốt quá trình phát triển dự án, nhóm đã thu được rất nhiều kinh nghiệm và hiểu biết về phần mềm mã nguồn mở. Bắt đầu từ môi trường phát triển, nhóm sử dụng hệ điều hành Ubuntu, IDE eclipse, Android SDK, phần mềm Libre Office. Cho đến cả cách thức giao tiếp, trao đổi giữa các thành viên trong nhóm cũng mang dáng dấp của phong cách "mở" rất rõ nét. Điển hình như nhóm sử dụng google mail group để trao đổi công việc: https://groups.google.com/forum/?fromgroups=#!forum/mhst-2012-02 , nhóm sử dụng github (Social coding network) để lưu trữ và chia sẻ mã nguồn với cộng đồng: https://github.com/ZuzooVn/cmsandroid , ngoài ra nhóm cũng ghi lại Nhật ký dự án trên blog để chia sẻ với mọi người : http://alfresco4android.blogspot.com/
  2. Công nghệ: Nhóm đã có cơ hội được hiểu thêm về Rest API mà thực chất là Restful webservice. Hiểu rõ được bản chất, đặc thù của nó, ví dụ: trao đổi các dữ liệu ở dạng JSON và XML, là một phong cách kiến trúc chứ không phải là một chuẩn (vì lẽ đó mà sẽ không có một khuyến nghị W3C nào cho REST cả),...
  3. Quy trình: Nhóm đã có cơ hội được hiểu rõ hơn về mô hình phát triển phần mềm lặp, hiểu rõ được mô hình này mang đến những điểm lợi gì, ví dụ: thích hợp cho những người chưa có nhiều kinh nghiệm phát triển dự án, dễ dàng trong việc phát hiện lỗi và qua đó rút ngắn thời gian sửa lỗi,...
  4. Kĩ năng giao tiếp: Nhóm đã có cơ hội được sử dụng và tích lũy thêm những kĩ năng giao tiếp cần thiết phải có trong một đội: kĩ năng trao đổi từ xa thông qua email, skype,...kĩ năng giải quyết xung đột,...
  5. Kĩ năng quản lí thời gian: Ngoài việc tham gia dự án, các thành viên trong nhóm đều đã đi làm, học song song nên việc quản lí thời gian sao cho phù hợp là rất quan trọng. Trong suốt thời gian qua, cả nhóm đã tự học được những kĩ năng quản lí thời gian để phân chia thời gian sao cho phù hợp để tránh tình trạng quá tải.
  1. Phân tích các vấn đề tồn tại

Vấn đề
Nguyên nhân
Cách giải quyết
Một số tính năng chưa hoàn chỉnh
Do API chưa hỗ trợ
Liên lạc với ZIA để hỏi ý kiến về vấn đề / Lên các diễn đàn công nghệ để hỏi (http://stackoverflow.com , https://forums.alfresco.com/en/)
Đội bị phân tán nguồn lực
Do một thành viên phải đi công tác 1 tháng
Liên lạc với nhau thông qua group mail, skype chat
Chưa hoàn thành được Workflow management như ban đầu đề ra
Task khó, đòi hỏi thêm nhiều thời gian nữa để có thể phát triển hoàn thiện
Lên kế hoạch tiếp tục phát triển trong giai đoạn sau của dự án, dựa trên những đặc tả đã được vạch ra từ ban đầu trong đề cương phân tích dự án
Có một trường hợp (case) trong test case chưa thể test được: Người dùng không thể nhìn được comment & rate của người dùng khác
Server test Metadata chưa có dữ liệu mẫu về comment và rate của người dùng khác.
Tạm thời chưa thực hiện việc test chức năng này, lên các diễn đàn công nghệ, ZIA để hỏi (http://stackoverflow.com)


  1. Những tính năng đã cải tiến


Friday, September 21, 2012

Video giới thiệu - hướng dẫn sử dụng

Video giới thiệu và hướng dẫn sử dụng Fresh Docs đã được đưa lên youtube: 


Wednesday, September 19, 2012

MM ngày 18/09


a Hưng, Nam, Bách, Hưng
Fixx Cafe 

18:00 - 19:00h


1. Mail cho Zia để confirm lại quá trình review code của họ

2. Hoàn thiện tài liệu

- Tổng kết dự án

+ Liệt kê lại tất cả các thành quả nhóm đã làm được: source code, các report (srs, sdd, test case, video hướng dẫn sử dụng, wbs, file so sánh các funtion của freshdocs và mhst ....)
+ Phong cách nguồn mở
. Link github đến project của mhst, freshdocs
. Link có trao đổi với alfresco trên forum () hỏi trên stackoverflow.

+ Ghi rõ nhóm đã test trên các thiết bị nào, môi trường nào

- SDD
+ Update thêm các thành phần của 1 bản sdd 
+ Comment thêm vào code, để dùng doxygen tạo ra class diagram


- WBS thì khi dự án mới bắt đầu, WBS cuối cùng => WBS có sự thay đổi cùng tiến trình thực hiện dự án

- File các tính năng của Freshdocs và MHST
+ Đánh trọng số độ phức tạp cho các tính năng
+ Thêm cột % hoàn thành của 1 tính năng, bao gồm : GUI, code, test hoàn thành bao nhiêu % ... (cái nào chưa dc 100% thì bôi vàng)
+ Phần so sánh các tính năng của freshdocs VS mhst, ko thể ghi chung chung là YES được, phải ghi rõ bên mhst có improve tính năng đó như thế nào, code ở file nào, thêm bao nhiêu dòng code ... (=> mục đích nêu cụ thể, để BGK thấy sự công sức của team đã phát triển thêm như thế nào)

- Hướng dẫn sử dụng
+ Hoàn thiện file word User manual 
+ Tạo video hướng dẫn sử dụng (thêm subtitle chú giải)

3. Chuẩn bị slide (tham khảo slide của các nhóm năm ngoái)
- Phong cách mã nguồn mở
+ Đầu vào: freshdocs: mở, đầu ra của dự án (Client): mở, phát triển trên Android: mở; Alfresco (Server) mở ; liên lạc qua mail group: mở, trao đổi trên forum: mở ;viết nhận blog: mở ....  => mở hết


Friday, September 14, 2012

Tài liệu tham khảo của các nhóm năm 2011



Mã dự án
Tên dự án
Tên nhóm – Trường
Giải
MHST11-15
Xây dựng extension portal cho Nimbus.
Đại học Bách Khoa Hà Nội
NHẤT

MHST11-10
Zimbra as a Service
Đại học khoa học tự nhiên, ĐHQG Hà Nội
NHÌ


MHST11-08
Phát triển mở rộng các chức năng của LibreOffice
Đại học FPT
BA

FreshDocs's Diagram

Dưới đây là toàn bộ Diagram của dự án, đã được tạo ra dưới sự hỗ trợ của Doxygen  (GNU General Public License)

DOWNLOAD

Meeting minutes 12/9

Hi team,

This is the meeting minutes we took yesterday. Please be informed:

  • Communicating:
  1. Contact with Zia to push our code to mainstream.
  • Coding:
  1. Temporarily stop coding new features & focus on fixing bugs and reviewing code.
  2. Make a note for outstanding issues.
  • Documenting:
  1. Complete SRS, SDD.
  2. Create a Summary (within an A4 page): share experiences, learn by experiences, work done and not done. Compare with the proposed spec created at the first period of time of software development.
  • Testing:
  1. Fill the test result to test case and complete test case
  • Presentation preparation:
  1. After 16/9, focus on making the slide for presentation. Prepare enough skills & scripts for the presentation.
Thanks,
Bach.

Sunday, August 19, 2012

Thiết bị Android mới phục vụ cho việc test

Trong đợt đi công tác bên Mỹ vừa rồi, Bách có mua thêm được 2 thiết bị Android nữa để phục vụ cho việc test Affresco là: điện thoại Sony Xperia S và máy tính bảng Google Nexus 7. Tuy nhiên, do phạm vi của đề tài, chúng ta sẽ chỉ sử dụng Sony Xperia S để test mà thôi. Còn về Google Nexus 7, có lẽ sẽ được sử dụng trong giai đoạn phát triển thêm về sau này.
Một vài thông số căn bản về Sony Xperia S:
OS: 4.0.4 (ICS)
Memory: 32GB Internal storage, 1GB Ram
Size: 720 X 1280 pixels, 4.3 inches
Như vậy, bây giờ nhóm chúng ta đã có 3 thiết bị Samsung galaxy ace, Samsung galaxy S2, Sony Xperia S.
Mong rằng với thiết bị mới này, công việc của nhóm sẽ thuận lợi hơn trên cả hai phương diện: test & develop.

API để lưu tài liệu vào Favorites

Sau khi được các chuyên gia Alfresco giải đáp thắc mắc.

Giải pháp về chức năng này được đc đưa ra như sau:



The favorites is used to mark a document as a favorite. In the UI it shows as a filled in star and then shows up when you filter on favorites.


To mark a document as a favorite, you POST to: 
http://localhost:8080/alfresco/s/api/people/{user id}/preferences

The following JSON:
{"org":{"alfresco":{"share":{"documents":{"favourites":"{node ref of the favorite document"}}}}}

Where "node ref of the favorite document" looks like: 
workspace://SpacesStore/1a0b110f-1e09-4ca2-b367-fe25e4964a4e

Jeff

Tuesday, August 7, 2012

Bổ sung tài liệu RESTful API Alfresco 4.0.2

Comments:
http://docs.alfresco.com/4.0/index.jsp?topic=%2Fcom.alfresco.enterprise.doc%2Freferences%2FRESTful-Comments.html

Archive:
http://docs.alfresco.com/4.0/index.jsp?topic=%2Fcom.alfresco.enterprise.doc%2Freferences%2FRESTful-Archive.html

Rating:
http://docs.alfresco.com/4.0/index.jsp?topic=%2Fcom.alfresco.enterprise.doc%2Freferences%2FRESTful-Rating.html

Version:
http://docs.alfresco.com/4.0/index.jsp?topic=%2Fcom.alfresco.enterprise.doc%2Freferences%2FRESTful-Version.html

Workflow:
http://docs.alfresco.com/4.0/index.jsp?topic=%2Fcom.alfresco.enterprise.doc%2Freferences%2FRESTful-Workflow.html

Vai trò của chuẩn mở trong phát triển phần mềm

Chúng ta sẽ nghiên cứu chi tiết tầm quan trọng và vai trò của các chuẩn mở trong phát triển phần mềm qua bài viết sau đây.

Vai trò chung của việc sử dụng các chuẩn mở

Chúng ta có thể thu được rất nhiều lợi ích nếu một tổ chức thực hiện việc mua và triển khai các chuẩn mở. Trước hết, chúng ta sẽ giảm thiểu được khả năng bị "độc quyền hóa" hay lệ thuộc vào một công nghệ đặc biệt hoặc các nhà cung cấp. Các tiêu chuẩn đã được định sẵn và được cộng đồng hóa, vì thế nên các hãng thứ ba hoàn toàn có thể triển khai các giải pháp, miễn là tuân thủ theo các tiêu chuẩn được định ra ban đầu.

Một lợi ích chính nữa mà ta có thể nhận thấy đó là mọi thứ sẽ trở nên dễ dàng hơn khi các hệ thống của các hãng khác nhau sử dụng các công nghệ khác nhau muốn tương thích hay giao tiếp với nhau. Kết quả là, việc chuyển đổi và trao đổi dữ liệu sẽ được cải thiện đáng kể. Không cần thiết phải sử dụng cùng một phần mềm hoặc cùng một phần mềm từ một nhà cung cấp để đọc hoặc viết dữ liệu. Ví dụ, một tổ chức đa quốc gia đòi hỏi tất cả các văn phòng sử dụng các phần mềm văn phòng có thể đọc và viết dữ liệu sử dụng định dạng Open Document, một định dạng chuẩn, mở, nền tảng XML từ OASIS ( Organization for the Advancement of Structured Information Standards).

Sử dụng các chuẩn mở cũng sẽ mang đến một sự bảo vệ tốt hơn cho các tập tin dữ liệu được tạo ra bởi một ứng dụng, mà ít bị lệ thuộc bởi sự lỗi thời của các ứng dụng. Nếu định dạng của tập tin được sử dụng là độc quyền rồi sau đó ứng dụng trở nên lỗi thời, người dùng sẽ gặp phải khó khăn khi chuyển đổi các tập tin dữ liệu sang định dạng khác cần thiết cho ứng dụng mới. Tuy nhiên, nếu định dạng dữ liệu tuân theo một chuẩn mở, hoặc ứng dụng mới sẽ có thể sử dụng nó hoặc sẽ dễ dàng hơn để chuyển đổi dữ liệu để ứng dụng mới có thể sử dụng nó.

Nếu các chuẩn mở được tuân thủ, các ứng dụng sẽ dễ dàng hơn để chuyển từ một nền tảng sang một nền tảng khác bởi vì việc triển khai kỹ thuật theo các hướng dẫn và quy tắc đã biết, và các giao diện, cả trong nội bộ và bên ngoài, đã biết. Thêm vào đó, các kỹ năng học được từ một nền tảng hoặc ứng dụng có thể được sử dụng.

Vai trò cụ thể của việc sử dụng các chuẩn mở

Các chuẩn mở đem lại rất nhiều lợi ích cho các hoạt động hoặc dịch vụ IT. Theo dõi chi tiết ở duới đây.

Các định dạng file

Các hệ thống thông tin hiện đại tạo ra dữ liệu phải được lưu trữ trong một hình thức nào đó của các định dạng tập tin điện tử để lưu trữ hiệu quả, có thể thu hồi và trao đổi. Nếu thông số kỹ thuật của chúng không được công khai, chỉ có phần mềm và các hệ thống của chủ sở hữu của các định dạng độc quyền mới có thể dễ dàng truy cập chúng. Ngoài ra, việc trao đổi thông tin là điều cần thiết cho các chức năng của xã hội hiện đại. Việc trao đổi này sẽ bị cản trở nghiêm trọng nếu các định dạng tập tin không mở được sử dụng như các sản phẩm từ một nhà cung cấp không thể lấy, truy cập hoặc lưu trữ các thông tin từ các sản phẩm của các nhà cung cấp khác. 
Chúng ta có thể thấy một điều vô cùng quan trọng là các định dạng tập tin điện tử phải tuân theo một số chi tiết kỹ thuật để có thể truy cập đuợc bởi tất cả các bên quan tâ. Nói cách khác, chúng cần phải được triển khai bằng cách sử dụng các chuẩn mở.

Các ứng dụng văn phòng

Chúng ta có thể thấy sự thiếu tương thích rõ rệt giữa các tài liệu được tạo ra bởi MS Office và các hãng khác đã cản trở người dùng khá nhiều trong việc sử dụng như thế nào. Ví dụ này đã minh họa cho chúng ta thấy được các định dạng tệp tin mở và chuẩn hóa là thật sự cần thiết để cung cấp cho người dùng sự tự do và linh động trong việc lựa chọn và sử dụng các sản phẩm  từ các nhà cung cấp khác nhau, qua đó ngăn chặn chúng khỏi bị "khóa" bởi một sản phẩm hay nhà cung cấp nào đó.

Các dịch vụ Internet và các ứng dụng

Có lẽ Internet chính là một ví dụ điển hình nhất chỉ ra cho chúng ta thấy được khi các công nghệ sử dụng phần lớn các chuẩn mở, chúng ta sẽ có được những lợi ích và khả năng tiếp cận dễ dàng đến mức nào. Phần lớn cơ sở hạ tầng mạng của internet được triển khai dựa trên các chuẩn mở được xây dựng bởi IETF. Ngoài ra, nhiều dịch vụ và ứng dụng đang chạy cũng như đang được lên kế hoạch cho tương lai đang được triển khai dựa trên các chuẩn mở và khuyến nghị từ các cơ quan đáng chú ý: IETF, W3C và OASIS. Kết quả là, ngày nay, một dịch vụ có thể truy cập vào các dịch vụ chính được cung cấp trên Internet bằng cách sử dụng vô số các môi trường khác nhau, từ máy tính hàng hóa, PDAs và các thiết bị di động cho đến các TV sets,... Nếu không tuân thủ các chuẩn mở, Internet sẽ khó có thể được phổ biến như ngày nay.


====================== Hết =======================

Tuesday, August 07, 2012 - Meeting minutes

1. Chức năng Upload File:

    - Tiến độ hiện tại: 60%
    - Max file size: Cho setting preferences (user tự setting)
        Default 10MB.
    - Hỗ trợ những file type: All


2. Chức năng Edit File:

    - API diff: Node version information
            GET /alfresco/service/api/version


3. Chức năng Favorite File:

    - API:
        + POST /alfresco/service/api/people/{userid}/preferences ?
            (Cần a Linh confirm lại)


4. Contact Alfresco Community: (Bách take care)

    - Document
    - Làm 2 task:
        + Project master schedule
        + Project goal statements


5. Bổ sung WBS:

    - Break nhỏ task UT:
        + Create script
        + Execute script
    - Thêm task "Create Demo using API" cho mỗi function.

Quan trọng hàng đầu hiện tại vẫn là Tạo được demo sử dụng các API

Monday, August 6, 2012

Giải pháp "Upload file" từ Android Client lên Alfresco

Sau mấy ngày tìm hiểu API của Alfresco và các tài liệu khác trên mạng.

Em tổng hợp lại 2 giải pháp để hoàn thành chức năng Upload như sau:

I. Giải pháp 1:
1. Cách tiến hành:

- Bước 1: Xác thực người dùng (API: login)

- Bước 2:
+ Duyệt đến thư mục cần Upload tài liệu
+ Tạo mới 1 file tài liệu, với nội dung rỗng (API: Create Document)

- Bước 3: Update nội dung file vừa tạo, thay bằng nội dung của file cần được Upload

=> Hoàn thiện chức năng Upload

2. Ưu nhược điểm


a) Ưu điểm : 
- Có nhiều loại API hỗ trợ cùng 1 mục đích (tạo tài liệu, update tài liệu ...)

b) Nhược điểm:
- Cần nhiều API để thực hiện
- Tài liệu mô tả API rất sơ sài, không rõ ràng

II. Giải pháp 2:

1. Cách tiến hành:

- Bước 1: Xác thực người dùng (API: login)

- Bước 2: Upload trực tiếp file lên folder.


2. Ưu nhược điểm


a) Ưu điểm : 
- Upload trực tiếp được file
- Chỉ cần sử dụng đúng 2 API

b) Nhược điểm:
- Chỉ có 1 RESTful API hỗ trợ việc Upload
- Tài liệu mô tả API rất sơ sài, không rõ ràng

III - Áp dụng
Hiện tại team đã áp dụng thành công "Giải pháp 2".
+ Sử dụng thêm các library của java để hỗ trợ

Việc hoàn thiện đầy đủ chức năng Upload sẽ mất thêm thời gian để thực hiện cho hoàn chỉnh theo đúng requirement


Sunday, August 5, 2012

Work Breakdown Structure (WBS) update 01/08/2012

Theo như nội dung cuộc họp ngày 31/07/2012, WBS đã được update như sau:

File OpenProj (.POD) gốc: Tại đây

Saturday, August 4, 2012

Email Verification & Email notifications (GitHub)

GitHub mới yêu cầu user phải xác minh tài khoản GitHub thông qua địa chỉ email đã đăng ký: https://github.com/blog/1215-email-verification

Sau khi xác minh xong, vào https://github.com/settings/notifications để thiết lập các thông báo khi có code được commit , pull request .....

Đây là tính năng mà GitHub đã thiếu từ lâu!

@GitHub Good Job!

Friday, August 3, 2012

Tổng quan CMIS, Apache Chemistry và ứng dụng trong Alfresco, Android

I -  Tổng quan CMIS
1. Khái niệm
Mục tiêu của Content Management Interoperability Services (CMIS) là cung cấp một tập các dịch vụ (services) tương tác với các hệ quản trị nội dung. Chuẩn này được sáng lập bởi IBM, Microsoft và EMC và mở rộng ra năm 2007 với Alfresco, Open Text, SAP, và Oracle. Hiện tại CMIS sở hữu bởi Hội đồng kỹ thuật (Technical Committee) OASIS.
CMIS không phải là một đặc tả ngôn ngữ, nó không diễn giải cách mà một hệ quản trị nội dung làm việc và không phải là các dịch vụ giúp mở rộng tính năng cho các hệ quản trị nội dung. Mục tiêu của CMIS là định nghĩa tập các hàm thông dụng khi làm việc với các hệ quản trị nội dung và các dịch vụ. Cả REST và SOAP đều được hỗ trợ bởiCMIS. Những người quan tâm đến CMIS thường nói rằng chuẩn này có tầm quan trọng với các hệ quản trị nội dung ngang với tầm quan trọng của SQL với các ứng dụng database cuối những năm 80 đầu những năm 90. Ngay lúc này đây, cộng đồng phát triển đang rất quan tâm đến CMIS, các công cụ client và tích hợp dựa trên CMIS đang dần lộ diện. CMIS ngày càng có được hỗ trợ nhiều từ các nhà cung cấp ECM lớn trên toàn thế giới.
Xuất phát từ vấn đề hầu hết các doanh nghiệp lớn đều sử dụng nhiều công nghệ trong việc trình bày nội dung và nhiều hệ quản trị nội dung khác nhau. Nếu muốn tập hợp nội dung và trình bày dưới một giao diện đồ họa chung, các doanh nghiệp, tổ chức phải tốn nhiều thời gian và tiền bạc để viết riêng cho mình những service riêng giúp tích hợp chúng lại với nhau. Vấn đề ở chỗ các hệ quản trị nội dung có giao diện đặc trưng của riêng mình. Lúc này, CMIS sẽ giải quyết vấn đề bằng cách cung cấp một tập những dịch vụ nằm phía trên các hệ quản trị nội dung. Chỉ cần tầng trình bày (website, portal) hỗ trợ REST hay SOAP, nó có thể làm việc với bất kỳ hệ quản trị nội dung(ECM) nào tương thích với CMIS, bất chấp cài đặt bên dưới. Front-end không còn phụ thuộc vào back-end. Bất kỳ ứng dụng front-end nào cũng có thể giao tiếp với hệ quản trị nội dung bất kỳ. Một nhà phát triển Drupal có thể dùng module Drupal CMIS để giao tiếp với Alfresco và không cần phải làm gì thêm khi chuyển từ Alfresco sang dùng Open Text hay Sharepoint. Và những ai đã từng tham gia tìm hiểu CMIS module của Drupal sẽ có thể chuyển qua phát triển các module tương tự cho các ứng dụng khác mà không cảm thấy khó khăn vì kết quả trả về của Alfresco hoàn toàn tương tự.

Đặc tả kỹ thuật

Đặc tả của CMIS gồm 226 trang nhưng hầu hết là tài liệu cơ bản về API, ta có thể bỏ qua đến khi nào cần có thể tra lại. Tài liệu đặc tả là thứ nhất thiết phải có khi làm việc với CMIS.
Trong tài liệu đặc tả, CMIS định nghĩa: một Domain Model, một ngôn ngữ truy vấn, các giao thức kết nối, một tập các dịch vụ chuẩn.
Dưới đây là những vấn đề chính trong đặc tả kỹ thuật của CMIS:
Domain Model:
Domain Model định nghĩa các khái niệm và quan hệ giữa các hệ quản trị nội dung giúp tìm được tiếng nói chung, thứ ngôn ngữ chung cho tất cả. Ví dụ, một Repository là một kho chứa các đối tượng. Kho chứa có một tập các khả năng “capabilities” có thể khác biệt tùy thuộc vào kiến trúc của từng repository. Một Repository có thể có các khả năng tùy biến khác nhau nhưng vẫn tương thích với CMIS.
Đối tượng(Objects) là các phần tử mà Repository quản lý. Tất cả Object đều có một Object Type. Một Object Type là một lớp các đối tượng sẽ có chung tính chất và các thuộc tính. Cấu trúc của lớp đối tượng mang tính thừa kế nên các lớp con sẽ thừa kế các thuộc tính của cha chúng.
Chỉ có 4 dạng đối tượng chính: Document, Folder, Relationship, và Policy. Trong đó Policy là chính sách phần quyền cho đối tượng.
Dưới đây là hình ảnh của mô hình CMIS Domain Model:
CMIS Domain Model
Hình 2.4: Mô hình dữ liệu của CMIS
Như trong hình trên, cả 4 lớp đối tượng đều chia sẻ một tập các thuộc tính như type ID, tên hiển thị, đối tượng có thể truy vấn được không, đối tượng có thể được quản lý bởi policy không…
Một đối tượng có nhiều thuộc tính, mỗi thuộc tính có một tập các tính chất như property ID, tên hiển thị, tên truy vấn… CMIS cho phép mở rộng các lớp mặc định của mình tạo nên những lớp đối tượng đặc biệt. Việc làm thế nào những lớp đối tượng đặc biệt được định nghĩa phụ thuộc vào cấu trúc bên dưới của Repository.
Đối tượng Document là đối tượng duy nhất có thể thực hiện phiên bản hóa. Mỗi phiên bản của một Document là một bản sao của nó và có một ID của riêng mình. Nhiều phiên bản của một đối tượng sẽ chia sẻ một series ID.
Một Content Stream là một dòng byte dữ liệu, ta có thể hình dung như một file. Một đối tượng Document không nhất thiết phải có một content stream. Folder không có content stream. Repository có thể có những quy trình khác nhau cho việc cập nhật content stream. Đó là phần việc của hệ quản trị nội dung. Nhiệm vụ của CMIS là cung cấp thông tin và thông báo cho các ECM biết chúng cần làm gì.
Ngôn ngữ truy vấn (Query Language )
CMIS đặc tả một ngôn ngữ truy vấn dựa trên SQL – 92. Ngôn ngữ này hỗ trợ join khá giới hạn. Tùy vào Repository, nó có thể thực hiện cả truy vấn toàn văn bản (full text) hoặc chỉ metadata.
Các giao thức kết nối. (Protocol Bindings)
Để tương thích hoàn toàn với CMIS, một repository cần cung cấp 2 dạng kết nối yêu cầu bởi đặc tả: RESTful AtomPub và Web Services (SOAP). Khi đó, cách mà các repository sẽ tiến hành cài đặt kết nối tùy thuộc vào từng repository.
Hình dưới đây cho thấy cách Alfresco cài đặt CMIS ở cấp cao:
alfresco cmis
Hình 2.5: Mô hình cơ chế hoạt động bậc cao của CMIS trên Alfresco
Sử dụng dạng kết nối RESTful AtomPub, một client sẽ bắt đầu với URL của trang thông tin từ Repository (dịch vụ getRepositoryInfo). Máy khách có thể dựa vào những liên kết trên được Repository cung cấp để tạo những request GET, POST, PUT, DELETE với Repository.
Response từ request tạo qua kết nối AtomPub hầu hết đều ở dạng một feed Atom XML hay một entry Atom XML. Thông thường response được mở rộng để kèm theo các tag đặc biệt của CMIS. Ta có thể dùng thư viện đặc tả Atom như Apache Abdera để rút trích kết quả.
cmis connection
Hình 2.6: Mô hình tổng quan giao thức kết nối của CMIS
Webservice kết nối dùng SOAP. Có 2 tài liệu XSD tạo nên WSDL cho service: một định nghĩa data model, cái còn lại định nghĩa format của message. Những dịch vụ được Webservice hỗ trợ hoàn toàn giống với danh sách các dịch vụ được liệt kê dưới đây.

Các dịch vụ (Services)

Không phụ thuộc vào dạng kết nối, CMIS cung cấp một tập các service bao gồm:
Repository Services: dùng tìm hiểu thông tin và năng lực của repository
Navigation Services: dùng để di chuyển trên hệ thống cây thư mục của repository.
Object Services: dùng thực hiện các hàm CRUD trên các đối tượng.
Multi-filing Services: nếu repository hỗ trợ việc đặt một file vào nhiều folder, dịch vụ này sẽ thực hiện.
Discovery Services: dùng để truy vấn tài liệu lưu trữ.
Versioning Services: dùng để check out và làm việc về phiên bản với các đối tượng.
Relationship Services: dùng để truy vấn các đối tượng dựa trên quan hệ của chúng.
Policy Services: dùng thiết lập, hủy và truy vấn chính sách trên các đối tượng.
ACL Services: có thể không được hỗ trợ bởi một số repository, dịch vụ này dùng để lấy thông tin và quản lý ACL của một đối tượng.
Các dịch vụ trên chia sẻ một vài đặc tính chung. Ví dụ:
  • Hầu hết các dịch vụ trả về một danh sách có thể được chuyển thành một tập kết quả có thể phân trang.
  • Dịch vụ trả về đối tượng có thể thường trả về thông tin kèm theo về những đối tượng đó nếu bạn yêu cầu ví dụ relationships, ACL, rendition và những hành vi hợp lệ.
  • Mọi service đều có thể trả về các ngoại lệ (exception).
2. Ứng dụng trong Alfresco

Để tích hợp Alfresco với CMS ta có 2 giải pháp: sử dụng WebService API được Alfresco cung cấp hoặc CMIS. So với Alfresco WebService API, CMIS có các ưu điểm sau:
Chỉ cần viết một lần, chạy với tất cả các Repository. CMIS là chuẩn đặc tả chung do các nhà phát triển ECM lớn nhất lập ra. Ngày càng nhiều ứng dụng ECM tham gia hỗ trợ. Do đó, việc tích hợp chỉ cần làm một lần. Nếu cần kết nối thêm một Repository của ECM khác, nhà phát triển chỉ cần thiết lập các thông số.
Tích hợp đa Repository. CMIS cho phép làm việc cùng lúc với một hoặc nhiều ECM. Ưu điểm này có được do phần lớn các nhà phát triển ECM đồng thuận hỗ trợ CMIS.
Hỗ trợ Quản lý quy trình nghiệp vụ xuyên suốt các Repository. Hiện nay phiên bản 0.9 của đặc tả CMIS chưa hỗ trợ. Tuy nhiên tính năng này được các nhà phát triển hứa hẹn sẽ ra mắt trong phiên bản tiếp theo.
Người dùng chỉ cần học cách dùng một giao diện cho tất cả Repository. Điều này có được do khả năng tích hợp đa Repository. Việc này rất tiện lợi cho người dùng vì một lần tiếp xúc với giao diện mới họ sẽ gặp nhiều khó khăn gần như học lại từ đầu.
Việc sử dụng CMIS tạo cho giải pháp tích hợp khả năng mở rộng cao trong tương lai, khi cần tích hợp thêm một hoặc nhiều Repository của nhà cung cấp khác.
II - Tổng quan Apache Chemistry
1. Khái niệm
Apache Chemistry là một hệ thống mã nguồn mở, tích hợp và hỗ trợ CMIS. 
Apache Chemistry bao gồm các hệ thống nguồn mở sau đây
  • OpenCMIS - Thư viện CMIS client và server cho Java
  • cmislib - Thư viện CMIS client cho Python
  • phpclient - Thư viện CMIS client cho PHP
  • DotCMIS - Thư viện CMIS client cho  .NET


2. OpenCMIS và ứng dụng trong Android 


Apache Chemistry OpenCMIS là một thư viện mã nguồn mở, hỗ trợ ngôn ngữ lập trình Java theo chuẩn CMIS.


- Bản release mới nhất : 
Release Version: Release 0.7.0
Date: 2012-04-26
Hỗ trợ Android: Không


- Phiên bản Beta đã hộ trợ cho Android
Version: 0.8.0 (beta)
Hỗ trợ Android: CÓ
Tài liệu về API: KHÔNG
Code Sample : KHÔNG


Tham khảo : Giải pháp mở, Wikipedia

Định hướng MHST 2012 02

Hi team,

Tin Nam đưa ảnh hưởng tới chiến lược của team.

Tổng quan về Alfresco 2012 Roadmap (và specific hơn về Android)
http://wiki.alfresco.com/wiki/2012_Product_Roadmap#Alfresco_Mobile_Android_1.0

Tháng 11 năm 2012 sắp tới, ở hội thảo ở Berlin, có lẽ Alfresco mới chính thức debut Mobile SDK (bao gồm Android SDK 1.0?)
http://devcon.alfresco.com/sanjose/sessions/alfresco-android-sdk

Timeline/Deadline của MHST 2012 02: Trong hè 2012 phải release.

Lựa chọn cho MHST 2012 02:
1) Tiếp tục base trên FreshDocs? (plan hiện tại)
2) Chuyển sang dùng Alfresco Android SDK (beta) luôn và ngay? (làm lại từ đầu)

Hướng 2 risky.

Chắc vẫn theo hướng 1 nhỉ?

Alfresco Tech Talk Live on Alfresco's SDKs for Android and iOS

Alfresco's SDK cho Android và iOS sẽ sớm được phát hành đến tay lập trình viên.
Thời gian cụ thể chưa được công bố

Link tham khảo: http://www.slideshare.net/alfresco/alfresco-tech-talk-live-mobile-sd-ks

Link video xem toàn bộ hội thảo: http://www2.alfresco.com/TTL_Episode_56

Tổng hợp tài liệu Alfresco API

Danh sách tham khảo các API cần dùng cho dự án:

Pro Alfresco Appendix A

- Alfresco API Refenrece

Repository RESTful API Reference


Tuesday, July 31, 2012

Nội dung cuộc họp ngày 31/07


a Hưng, Nam
Fixx Cafe 

18:00 - 19:00h

1. Update WBS do nhanh hơn tiến độ
- Thêm tasK: nghiên cứu API, deploy (#Rank 1):
+ Tìm được API support chức năng cần làm
+ Tạo demo chạy được API đó
+ Merge code vào Freshdocs

- Điều chỉnh time , content của 1 vài task

- Thêm task phát sinh

2. Chọn APi
- Chốt: Kết hợp CMIS và RESTful
- Lý do:
+ CMIS: tương thích cao, cách dùng đơn giản.
+ RESTful: thích hợp mô hình client-server
- Lý do phối hợp 2 API
+ Link hỏi trên SO: http://stackoverflow.com/questions/11717308/alfresco-api-for-android

=> Task: tìm hiểu tổng quan về http://chemistry.apache.org/.

+ BẢn 0.7.0 , chưa support Android
+ Bản 0.8 (Beta): đã support Android, tuy nhiên chưa có Document
=> hỏi trên mailinglist: http://mail-archives.apache.org/mod_mbox/chemistry-dev/201207.mbox/browser

3. Tìm hiểu sự hỗ trợ của RESTfull API với các version của Alfresco
 
 
4. Tương tác với Alfresco:
 
Link user trên forum : https://forums.alfresco.com/en/memberlist.php?mode=viewprofile&u=57549


5. Contact 

// TODO: liên lạc trực tiếp qua email 

6, Mô tả các làm Unit test, report qua group mail, blog

7 . Upload:

Tìm hiểu xem có show dc diff khi update file (text) không?