CMIS

เรื่องเริ่มจากว่า อ่านเจอในบล็อกของ Dries พูดถึงสเปก CMIS เลยสนใจตามมาอ่านต่อ ซึ่งอ่านไปนิดนึงพบว่า ความรู้พื้นฐานยังไม่พอ เลยต้องไปค้นเรื่อง ECM และ AtomPub มาเสริมพื้นฐานก่อน

พอพร้อมแล้วก็ได้เวลาลุย CMIS CMIS ย่อมาจาก Content Management Interoperability Services โดยมันเป็นสเปกกลางเพื่อให้ระบบ CMS สำหรับองค์กร (Enterprise Content Management - ECM) ทำงานร่วมกันได้ง่ายขึ้น

ตัวอย่าง ECM ที่คนรู้จักเยอะสุดคือ SharePoint ของไมโครซอฟท์ ส่วนตัวอื่นๆ ดูได้ในบล็อกอันก่อน

เหตุผลที่ต้องมี CMIS เกิดขึ้นก็เพราะว่า ในองค์กรหนึ่งๆ ใช้งาน ECM หลายยี่ห้อพร้อมกัน (เช่น แผนกนึงใช้คนละอย่าง) เลยเกิดปัญหาว่าย้ายข้อมูลข้ามแผนก ข้าม ECM กันได้ยาก สเปก CMIS เลยออกแบบมาแก้ปัญหานี้

หัวโจกของ CMIS คือ EMC (ชื่อบริษัท, อย่าสับสนกับ ECM ที่เป็นชื่อเทคโนโลยี) เจ้าของ Documentum นอกจากนี้ยังมี IBM (FileNet) และ Microsoft (SharePoint) ร่วมวง ส่วนผู้สนับสนุนอื่นๆ ได้แก่ Alfresco, Open Text, Oracle และ SAP สรุปว่าแค่ชื่อก็ซี๊ดในระดับหนึ่ง

หลักการทำงานของ CMIS นั้นไม่ซับซ้อน คือ เจ้าของ ECM แต่ละเจ้าจะพัฒนาให้ ECM ของตัวเองรองรับอินเทอร์เฟซแบบ CMIS (สีฟ้าอ่อนในภาพ) จากนั้นเลเยอร์ CMIS ของแต่ละ ECM ก็จะแลกเปลี่ยนข้อมูลระหว่างกันด้วย SOAP หรือ REST

cmis-diagram

พอเข้าใจการทำงานเบื้องต้นแล้ว ก็หาข้อมูลในเชิงลึกต่อ ปัญหาอยู่ที่ว่าเว็บของ EMC ห่วยมาก (มีฝรั่งคิดเหมือนกัน - อนาคตถ้าจำเป็นต้องใช้ ผมคงไม่ซื้อ Documentum) เลยไม่มีทางเลือกอื่นนอกจากดาวน์โหลดสเปกตัวเต็มมาอ่าน

นอกเรื่องนิดว่า เนื่องจากไมโครซอฟท์สนับสนุน เอกสารสเปกเลยมีทั้งแบบ PDF และ XPS แต่ก็อ่าน PDF เพราะไม่รู้จะใช้อะไรอ่าน XPS

ถึงแม้ว่าเว็บจะห่วย แต่เอกสารสเปกเขียนดีมาก สรุปใจความแบบคร่าวๆ ได้ดังนี้

  • มาตรฐานที่ใกล้เคียงกันเคยมีออกมาแล้วคือ Java Content Repositories (JCR 283) แต่ไม่ใช้ ด้วยเหตุผลว่ามันเป็นจาวา (ในสเปกเขียนแบบนี้จริงๆ เหตุผลคือเอาใจไมโครซอฟท์ อ่านที่ CMS Watch เขียนถึง)
  • CMIS จะสนับสนุนเฉพาะการเคลื่อนย้าย content ระหว่าง ECM เท่านั้น ระบบอื่นๆ อย่างบัญชีผู้ใช้ ไม่เกี่ยวและไม่สนใจ
  • เรื่องที่ CMIS สนใจเกี่ยวกับ content ได้แก่ ปฏิบัติการ CRUD พื้นฐาน, versioning ของเอกสาร, วิธีการ query เอกสาร และ policy สำหรับการเข้าถึงเอกสาร
  • ในสเปก CMIS ไม่ระบุว่า policy ควรจะเป็นอย่างไร (บอกแค่ว่าต้องมี คน implement ไปคิดกันเองต่อ) อาจใช้ ACL ก็ได้
  • วิธีการ query เอกสาร ใช้ SQL-92 แบบลดรูป
  • วิธีการสื่อสารระหว่างแต่ละ ECM มีให้เลือกทั้งแบบ SOAP และ REST
  • เนื่องจากว่า ผมไม่ชอบ SOAP ด้วยเหตุผลเดียวกับที่ไม่ชอบ Java (มันเลอะเทอะ) เลยอ่านเฉพาะ REST ซึ่งเค้าพัฒนาต่อจาก AtomPub แต่ก็อนุญาตให้ใช้ฟอร์แมตแลกเปลี่ยนข้อมูลอื่นๆ นอกเหนือจาก Atom เช่น JSON หรือ .txt ได้

ต่อไปเป็นข้อสรุปของผม

  • CMIS เป็นสัญญาณที่บ่งชี้ว่า วงการ CMS/ECM โตและได้รับความนิยมมาถึงระดับหนึ่งแล้ว จึงได้เวลา consolidate วิธีการทำงานให้เป็นมาตรฐานซึ่งกันและกัน
  • ทุกวันนี้ การย้ายข้อมูล content ระหว่าง CMS แบบพื้นฐาน ทำโดยการแลก feed (เช่น ของ Drupal เราสามารถดึง feed มาทำเป็น node ได้) แต่มันก็พื้นฐานจริงๆ เพราะไม่สามารถระบุหา content ที่ต้องการได้ง่ายนัก (feed จำกัดเฉพาะ content ใหม่สุดเท่านั้น) รวมถึงเรื่อง revisioning ฯลฯ
  • CMIS เลยออกแบบมาให้คลุมฟีเจอร์พื้นฐานสำหรับการย้าย content ระหว่าง CMS/ECM โดยใช้วิธีประนีประนอม คือ ขี่อยู่บน ECM อีกชั้น ไม่หักดิบ เพื่อลดแรงเสียดทานจากเจ้าของ ECM
  • เรื่องการเมืองเป็นเรื่องสำคัญในการออกมาตรฐาน รอบนี้ CMIS ได้แบ็คดีคือ IBM+Microsoft เป็นรายใหญ่มาตั้งแต่เริ่ม แบบนี้ก็ง่ายแล้ว ไปตามบีบรายเล็กทีหลัง (ส่วนตัวสเปกจะยื่นเรื่องไปเป็นมาตรฐานของ OASIS ต่อไป)
  • ต้องใช้เวลาอีกมาก กว่าสมาคมนี้จะ implement กันเสร็จ และสร้างแรงจูงใจให้ CMS/ECM ตัวอื่นๆ ทำตามกันต่อ
  • แต่สุดท้ายแล้ว ถ้า CMS/ECM มันคุยกันเองได้สะดวกๆ (ไม่จำเป็นว่าต้องใช้ CMIS) ผู้บริโภค/ผู้ใช้ก็สบาย

สำหรับ Drupal

  • Dries พูดมานานแล้วถึงเรื่องการแยก output ที่เป็น content ออกมาหลายๆ แบบ (เดิมมีแค่ HTML กับ feed) พอมี CMIS ที่ออกเป็น Atom รวมถึงมีสเปกกลางสำหรับขา input ก็น่าจะสนับสนุนแนวทางนี้มากขึ้น
  • ทิศทางของ Acquia นั้นเจาะตลาด enterprise มากๆ ถ้า CMIS ไปได้ดี เราคงเห็น Drupal สนับสนุน CMIS ในอีกไม่นาน (มิฉะนั้นจะไม่สามารถแข่งขันในตลาด enterprise ได้เลย) นอกจากนี้ผมยังเชื่อว่า เราจะเห็น Drupal distro สำหรับจับตลาด SME ราคาไม่แพงนัก ออกมาจาก Acquia เพื่อจับกลุ่มคนอยากใช้ SharePoint แต่เงินไม่ถึง
  • น่าจะเริ่มจากเห็น Drupal สนับสนุน AtomPub ก่อน เพราะเป็นสเปกพื้นฐานสำหรับ CMIS และไม่เชิงการค้าเท่า

ลิงก์อื่นๆ ที่เกี่ยวข้อง