Alfresco คืออะไร
Alfresco เป็นระบบจัดการเอกสารรูปแบบหนึ่ง ซึ่งจะคล้ายๆ กับ CMS แต่มีความคุณสมบัติที่มากกว่า เช่น การจัดการกับเอกสารที่อยู่ในรูปแบบ Microsoft Office, OpenOffice, LibreOffice โดยที่ข้อมูลภายในเอกสารจะถูก Alfresco ดึงเนื้อหาออกมาทำ Index ได้ นั่นแสดงว่าเราสามารถค้นหาเนื้อหาที่อยู่ในเอกสารเหล่านั้นได้ด้วย ไม่ใช่แค่ค้นหาได้เพียงแต่ชื่อไฟล์
เทคโนโลยีที่ Alfresco ใช้
Alfresco ถูกออกแบบมาด้วย Library Open Source หลายๆ ตัว จึงทำให้โครงการนี้พัฒนาได้อย่างรวดเร็ว และสนับสนุนมาตรฐานเปิดต่างๆ เช่น Open Search, XForm, Web Service, CMIS โดยตัวเด่นๆ ที่มีความสำคัญกับ Alfresco คือ Lucene ซึ่งเป็น Library ที่ใช้ในการค้นหาหรือการทำ full text index นอกจากนี้ยังมี JLAN ที่นำมาใช้เป็น Server ของ CIFS Protocol เป็นต้น
โดย Framework หลัก ที่นำมาพัฒนา Alfresco คือ Spring Framework ทำให้เราสามารถสร้าง Implement Service ต่างๆ แล้วนำมาใช้ได้ทันที โดยไม่ต้องแก้ไขโค้ดเก่าๆ เพียงแค่แก้ไขที่ไฟล์ config เท่านั้น Framework ที่ใช้ในการติดต่อกับ Database ในเวอร์ชั่นแรกๆ คือ Hibernate ภายหลังพบปัญหาเมื่อเจอโหลดหนักๆ พบว่า Hibernate ทำงานช้าลง จึงได้เปลี่ยนมาใช้ iBatis ควบคู่ไปกับ Hibernate แต่หลังจาก version 3.4d เป็นต้นไปได้เปลี่ยนมาใช้ iBatis โดยสมบูรณ์ Framework ที่ใช้ทำ Workflow คือ JBPM (เป็น Open Source Workflow ของค่าย JBoss) ภายหลัง Alfresco เปลี่ยนมาใช้ Activity ควบคู่ไปกับ JBPM
ความสามารถของ Alfresco
บทความอื่นๆ ที่เกี่ยวกับ Alfresco
Alfresco เป็นระบบจัดการเอกสารรูปแบบหนึ่ง ซึ่งจะคล้ายๆ กับ CMS แต่มีความคุณสมบัติที่มากกว่า เช่น การจัดการกับเอกสารที่อยู่ในรูปแบบ Microsoft Office, OpenOffice, LibreOffice โดยที่ข้อมูลภายในเอกสารจะถูก Alfresco ดึงเนื้อหาออกมาทำ Index ได้ นั่นแสดงว่าเราสามารถค้นหาเนื้อหาที่อยู่ในเอกสารเหล่านั้นได้ด้วย ไม่ใช่แค่ค้นหาได้เพียงแต่ชื่อไฟล์
เทคโนโลยีที่ Alfresco ใช้
Alfresco ถูกออกแบบมาด้วย Library Open Source หลายๆ ตัว จึงทำให้โครงการนี้พัฒนาได้อย่างรวดเร็ว และสนับสนุนมาตรฐานเปิดต่างๆ เช่น Open Search, XForm, Web Service, CMIS โดยตัวเด่นๆ ที่มีความสำคัญกับ Alfresco คือ Lucene ซึ่งเป็น Library ที่ใช้ในการค้นหาหรือการทำ full text index นอกจากนี้ยังมี JLAN ที่นำมาใช้เป็น Server ของ CIFS Protocol เป็นต้น
โดย Framework หลัก ที่นำมาพัฒนา Alfresco คือ Spring Framework ทำให้เราสามารถสร้าง Implement Service ต่างๆ แล้วนำมาใช้ได้ทันที โดยไม่ต้องแก้ไขโค้ดเก่าๆ เพียงแค่แก้ไขที่ไฟล์ config เท่านั้น Framework ที่ใช้ในการติดต่อกับ Database ในเวอร์ชั่นแรกๆ คือ Hibernate ภายหลังพบปัญหาเมื่อเจอโหลดหนักๆ พบว่า Hibernate ทำงานช้าลง จึงได้เปลี่ยนมาใช้ iBatis ควบคู่ไปกับ Hibernate แต่หลังจาก version 3.4d เป็นต้นไปได้เปลี่ยนมาใช้ iBatis โดยสมบูรณ์ Framework ที่ใช้ทำ Workflow คือ JBPM (เป็น Open Source Workflow ของค่าย JBoss) ภายหลัง Alfresco เปลี่ยนมาใช้ Activity ควบคู่ไปกับ JBPM
ความสามารถของ Alfresco
- Document Management ใช้เป็นตัวจัดการเอกสารต่างๆ เช่นการ นำเข้าเอกสาร การแก้ไขเอกสาร โดยสามารถบันทึกเป็น version ได้
- Web Content Management ทำตัวคล้ายๆ CMS เพื่อให้คนข้างนอกเข้าดูข้อมูลที่เรา publish ได้ โดยส่วนใหญ่จะแยกออกเป็น server แยกอีกตัว ไม่รวมกับตัว Document Management
- Records Mangement เพื่อเก็บ Records ไว้ตรวจสอบในภายหลัง ว่ามีใครแก้ไขเอกสารเมื่อไร และใครเป็นคนสร้างหรือแก้ไข
- Image Management เพื่อจัดการกับเอกสารที่ได้จากเครื่อง Scan เป็นส่วนใหญ่
- Content Repository สามารถใช้เป็น Repository ต่างๆ ได้เนื่องจากตัว Alfresco สนับสนุน มาตราฐานเปิดต่างๆ เช่น CMIS, Web Service, WebDAV, CIFS, JSR 168, JSR 170 Level 2
- SOAP เป็น Protocol เริ่มแรกที่ Alfresco สนับสนุน ควบคู่กับ REST ซึ่งจะมี API ในการใช้งานตัว Alfresco ค่อนข้างครบครัน ตั้งแต่การจัดการเอกสาร ไปถึงการจัดการ Workflow แต่การเรียกใช้ SOAP นั้นจะช้ากว่าการเรียกด้วย REST เนื่องมาจากความซับซ้อนของตัวมาตรฐานของ SOAP เอง (Header ของ Envelope)
- RESTful เป็น Protocol ที่แนะนำให้ใช้สำหรับงานส่วน logic เพราะจะสามารถพัฒนาได้เร็วกว่าการใช้ SOAP เนื่องด้วย REST นั้นเราสามารถกำหนด format ที่จะส่งกลับมาได้กลาย format ไม่ว่าจะเป็น xml, json, html รวมถึง AtomFeed ด้วย ซึ่งตัว REST นั้น Alfresco มี Framework ให้เราพัฒนาได้อย่างง่ายด้วย Web Script ซึ่งเขียนได้ด้วยภาษา JavaScript หรือจะเขียนจากภาษา Java ก็ยังได้ ซึ่งส่วน JavaScript ที่เราเขียนนั้นจะเป็นส่วนของ login ต่างๆ และจะส่งผลลัพธ์ออกมาในตัวแปร model หลังจากนั้นจะเป็นหน้าที่ของ Template Engine ที่ชื่อว่า FreeMarker เป็นตัวทำการ Render ผลลัพธ์ออกมา โดยเราจะต้องเขียนรูปแบบของ Template นี้เอง ว่าจะส่งค่าออกมาในรูปแบบใด เนื่องจาก Alfresco ได้กำหนดรูปแบบเป็นมาตรฐานไว้แล้วในการพัฒนา Web Script ว่าต้องตั้งชื่อไฟล์อย่างไร เพื่อให้บริการ Web Service ได้ใน format ที่ต้องการ ทำให้เราจำเป็นต้องเรียนรู้เกี่ยวกับข้อกำหนดดังกล่าวเพื่อให้พัฒนา Web Script ได้ตามที่ Alfresco กำหนด (จะกล่าวถึงในภายหลัง)
- CMIS เป็น Protocol ใหม่ที่ใช้ technology เดิมๆ แต่นำมาผสมผสานกันเกิดเป็นมาตรฐานใหม่ในการจัดการกับระบบเอกสาร ซึ่งระบบเอกสารต่างๆ ที่ดังๆ ไม่ว่าจะเป็น SharePoint หรือ Documentum ล้วนสนับสนุน CMIS แล้ว ตัว CMIS นั้นสามารถเรียกใช้ได้ผ่าน SOAP หรือ REST ก็ได้ โดยรูปแบบที่ใช้ในการสื่อสารถึงกันจะอยู่ในรูปแบบ AtomPub
บทความอื่นๆ ที่เกี่ยวกับ Alfresco