วันพุธ, ธันวาคม 06, 2549

แนะนำ XBRL

XBRL ย่อมาจาก eXtensible Business Reporting Language เป็นมาตรฐานเปิดที่พัฒนาขึ้นเพื่อใช้ในการจัดเตรียมและแลกเปลี่ยนข้อมูลรายงานทางธุรกิจในรูปแบบอิเล็กทรอนิกส์ ปัจจุบันมีสมาชิกมากกว่า 30 ประเทศที่เข้าร่วมกับการพัฒนา องค์กรกลางสำหรับกำหนดแนวทางของ XBRL คือ XBRL International ซึ่งมี website ที่สามารถหาข้อมูลเพิ่มเติมอยู่ที่ http://www.xbrl.org/

XBRL เป็นภาษาที่พัฒนาขึ้นโดยใช้ XML เป็นภาษาหลัก ข้อมูลในรายงานธุรกิจจะถูกบรรยายภายใต้ tag ของ XML โดยมีการกำหนดไวยากรณ์เฉพาะสำหรับใช้ในการรายงานข้อมูลธุรกิจเพื่อให้เกิดความมาตรฐานเหมือนกันทั้งหมด

องค์ประกอบหลักของ XBRL มีสองส่วนได้แก่ taxonomy และ instance document โดยที่ taxonomy เป็นการกำหนดหลัก วิธีการ และข้อบังคับต่างๆของการนำเสนอข้อมูล ตัวอย่างเช่น ผังบัญชี ในขณะที่ instance document คือข้อมูลที่สร้างขึ้นตามข้อกำหนดของ taxonomy ถ้าเปรียบเทียบกับ Object-oriented concept แล้ว taxonomy และ instance document เทียบเท่ากับ class และ object ตามลำดับ

เป้าหมายหลักของ XBRL คือการพัฒนามาตรฐานการรายงานข้อมูล โดยการกำหนดประเภทข้อมูล (data type) ในลักษณะของ XML-type tags เพื่อใช้ในการบรรยายข้อมูลต่างๆทางธุรกิจ ไม่ใช้เป็นการสร้างมาตราฐานใหม่ทางบัญชี โดยเฉพาะในเบื้องต้นเริ่มจากรายงานการเงินทางธุรกิจ (financial business report) โดย taxonomy ที่พัฒนาขึ้นสามารถใช้เพื่อเป็นมาตราฐานกลางเพื่อใช้ในการเปรียบเทียบ ในขณะเดียวกันสามารถนำกลับมาใช้ใหม่ได้ (reuse) โดยนำมาต่อยอดเพื่อสร้าง taxonomy เฉพาะสำหรับแต่ละองค์กร

การกำหนดมาตรฐานกลาง (ที่ได้รับการยอมรับ) ขึ้นมานั้น ก่อให้เกิดประโยชน์แก่ทุกฝ่าย องค์กรที่นำ XBRL มาใช้สามารถจัดทำรายงานที่การยอมรับจากองค์กรอื่น ซึ่งสามารถเข้าใจข้อมูลได้ง่ายขึ้น ทำให้กระบวนการแจกจ่ายและแลกเปลี่ยนทำได้ง่ายขึ้น เมื่อมีมาตรฐานและข้อกำหนดแน่นอน ผู้พัฒนาซอฟต์แวร์ก็จะมีเป้าหมายชัดเจนในการพัฒนาซอฟต์แวร์ สามารถพัฒนาซอฟต์แวร์ได้ถูกทางสามารถต่อยอดผลิตภัณฑ์ตนเอง ช่วยให้ผู้ใช้ข้อมูล (ตย.นักลงทุน) สามารถนำข้อมูลมาใช้ประโยชน์ในกระบวนการเดียวกันหมด

วันอังคาร, พฤศจิกายน 21, 2549

Information Exchange

ตอนนี้กำลังทำโครงการเกี่ยว กับ XBRL ซึ่งเป็นภาษามาตรฐานในการบรรยายข้อมูล business report โดยเริ่มต้นได้มีการทำข้อกำหนด (specification)สำหรับ financial report ออกมา ซึ่งปัจจุบันมีหลายประเทศได้นำมาตรฐานนี้มาใช้ และประเทศไทยก็เริ่มต้นนำมาใช้ด้วยเช่นกัน

XBRL ย่อมากจาก eXtensible Business Report Language เป็นภาษาที่พัฒนาจากภาษา XML เพื่อใช้ในการนำเสนอข้อมูลด้านธุรกิจ เพื่อให้องค์กรทั้งหลายสามารถมีภาษากลางร่วมกันที่ใช้ในการสื่อสาร และแลกเปลี่ยนข้อมูลด้านการเงินซึ่งกันและกัน

ก่อน ที่เข้าสู่ XBRL นั้น ผมอยากชี้ให้เห็นถึงเหตุผลการพัฒนาภาษานี้ขึ้นมาก่อน ทั้งนี้คงต้องย้อนกลับไปถึงเรื่อง information exchange

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

รูปแบบและโครงสร้าง
คำว่า รูปแบบ และ โครงสร้าง หมายถึงอะไร แล้วทำไมจึงมีความสำคัญนัก

โดย ทั่วไป "ข้อมูลที่ใช้ในการแลกเปลี่ยน" จะประกอบ ข้อมูลย่อยหลายๆตัวที่มีความสัมพันธ์กันมาประกอบกันเป็นโครงสร้างหนึ่ง โดยที่ "รูปแบบ" หมายถึง วิธีการนำเสนอของข้อมูลเดี่ยว

การ แลก เปลี่ยนข้อมูลในแบบอัตโนมัติ จะเกิดไม่ได้หากข้อมูลที่ทั้งฝ่ายต้องการมีความขัดแย้งกัน (conflict)ใน รูปแบบ หรือ โครงสร้าง หรือ ทั้งคู่

ตัวอย่างข้างล่างจะเป็นตัวอย่างของข้อมูลของสององค์กรที่ต้องการแต่มีความขัดแย้งกัน

ตัวอย่างรูปแบบขัดแย้ง
  1. format display -> mm/dd/yyyy กับ dd/mm/yyyy
  2. presision -> % กับ เกรด
  3. หน่วยวัด -> บาท กับ เยน
ตัวอย่างโครงสร้างขัดแย้ง

  • decomposition
    • ชื่อ-นามสกุล (รวมเป็น field เดียวกัน)
    • ชื่อ และ นามสกุล (แยกกัน)
  • struture difference
    • address1, address2, address3
    • address (address1, address2, address3)
  • flat และ hierarchy
    • product_code, product_name, type
    • type (type_code, product*) และ product (product_code, product_name)

เรื่องของความขัดแย้งด้านข้อมูลนั้น เป็นเรื่องที่ศึกษากันมาเนิ่นนาน เป็นปัญหาที่เกิดขึ้นในความพยายามที่จะแลกเปลี่ยนข้อมูลกันระหว่างฐานข้อมูลต่างองค์กรกัน บทความที่น่าสนใจเกี่ยวกับเรื่องนี้สามารถหาอ่านได้จาก On Resolving Schematic Heterogeneity in Multidatabase Systems ของ Won Kim, Injun Choi, Sunit Gala, และ Mark Scheevel

ความต้องการพื้นฐานในการทำ information exchange

การที่จะทำให้องค์กรหนึ่งเข้าใจข้อมูลของอีกองค์กรหนึ่ง มีงานสองอย่าง

  1. แปลงข้อมูลจากรูปแบบหนึ่งมาเป็นรูปแบบที่ตนเข้าใจ
  2. แปลงข้อมูลจากโครงสร้างหนึ่งมาเป็นโครงสร้างที่ตนต้องการ

กล่าวคือหากต้องการให้ทั้งสองฝ่ายสามารถแลกเปลี่ยนข้อมูลแบบอัตโนมัติ ทั้งสองต้องมีข้อกำหนดทั้งทางโครงสร้างและรูปแบบที่สอดคล้องกัน ซึ่ง XBRL ถูกพัฒนาเพื่องานนี้โดยเฉพาะ

วันจันทร์, พฤศจิกายน 20, 2549

กลับมาเริ่มด้วย blog


หลังจากที่โดนงานประจำรัดตัวจนไม่มีเวลาทำอย่างอื่น เมื่อหลายเดือนก่อนมีอยู่วันหนึ่ง ได้ตั้งคำถามกับตัวเองว่าอยากทำอะไรบ้างหลังจากที่เขียนหนังสือ PostgreSQL ออกไปแล้ว

เริ่มด้วยประเมินผลงานตัวเองหลังจากพิมพ์ PostgreSQL ออกไปแล้ว รู้สึกไม่ค่อยพอใจเท่าไร มีบางคนก็ดีแล้วสำหรับการเริ่มต้น แต่ส่วนตัวรู้สึกว่าเนื้อหามันง่ายเกินไป น่าจะมีรายละเอียดในเชิงเทคนิคมากกว่านี้

จากวันนั้นเป็นต้นมา ตั้งใจจะเขียนหนังสือเกี่ยวกับ Open Source อีกสักเล่ม ตั้งใจเขียนให้มีรายละเอียดมากขึ้น แต่ technology เปลี่ยนไปเรื่อยๆ เขียนเสร็จไม่ทันไรมันก็เก่าเสียแล้ว เลยรู้สึกว่าการจะเขียนหนังสือให้ดีและสมบูรณ์สักเล่มนี่มันยากและใช้เวลา จริงๆ หากไม่มีเวลาทุ่มเทให้กับมัน สุดท้ายก็ออกมาเหมือนกับเล่มก่อนหน้า ที่ทำได้แต่แนะนำการใช้งานเริ่มต้นเท่านั้น

แต่ตัวเองก็ยังอยากเล่า ประสบการณ์ทำงานเก็บเอาไว้ และจะดีมากถ้ามี comment จากคนอื่นเพื่อปรับปรุงตัวเอง จึงตั้งใจว่าจากนี้ไป จะเจียดเวลาทุกวันมาเขียน blog เล่าเรื่องต่างๆที่เจอมาในการทำงาน

เอาไว้อยากเขียนหนังสืออีกสักเล่ม ค่อยลาพักยาวมาเขียนแล้วกัน

วันอังคาร, กุมภาพันธ์ 28, 2549

Jasper Report กับ X Window Server




วัน ก่อนระบบรายงานของ application ที่ทางบริษัทฯพัฒนาให้เกิดเหตุไม่สามารถทำงานได้ตามปกติ คือไม่สร้าง report ที่เป็น pdf ให้ หลังจากหาเหตุพบว่า X Window Server ตายไปโดยไร้สาเหตุ (ซึ่งเป็นหน้าที่ของ system admin ของลูกค้าต้องไปหาสาเหตุเอง) ทางที่ปรึกษาของลูกค้า จึงโทรมาคุยด้วยว่าทำไมต้องใช้ X Window Server ด้วยหรือ ในเมื่อสร้าง pdf ได้แล้ว ทำไมไม่ download มาเปิดปลายทาง ผมจึงต้องชี้แจงเหตุผล

รูป ข้างบนแสดงวิธีการทำงานของ JasperReport ในขั้นต้น definition ของรายงานแต่ละตัวจะจัดเก็บในรูป XML file เมื่อ รายงานถูกเรียกใช้ XML file ดังกล่าวจะถูก load ออกมา และ parse เพื่อสร้างเป็น instance ของ JasperDesign จากนั้นจะถูก compile เพื่อตรวจสอบความถูกต้องต่างๆของรายงาน กลายเป็น instance ของ JasperReport ซึ่งจากนั้นเป็นการนำข้อมูลต่างๆมา fill ลงในรายงานซึ่งข้อมูลเหล่านี้ส่วนใหญ่คือข้อมูลที่ดึงมาจากฐานข้อมูลผ่านทาง data source ผลจากการ fill ข้อมูลจะได้ object ใหม่ใน JasperPrint ที่พร้อมที่จะ print ออก ด้วย JasperPrintManager ซึ่งเป็นการทำ serialize ลง disk หรือผ่านทาง network ออกไปเพื่อแสดงผล หรือจะ export ออกด้วย JasperExportManager เป็น file มาตรฐานนิยมเช่น PDF, HTML หรือ XML ได้
ที่ นี้ JaperReport ติตต่อกับ X Window Server เมื่อไร เมื่อดูใน source code ของ Jasper จะพบว่าใน class dori.jasper.engine.fill.JRBaseFiller ซึ่งเป็นส่วนหนึ่งของ JasperFillManager ในส่วนของ initialize มีการเรียก

java.awt.GraphicsEnvironment#getLocalGraphicsEnvironment() java.awt.GraphicsEnvironment#getAvailableFontFamilyNames()

เป็น การเรียก FontFamily ผ่านทาง GraphicsEnvironment ซึ่งกำหนดใน java.awt ของ java เอง ซึ่งจะเป็นการติดต่อ X Window Server อีกทีนึง
ดังนั้น ถ้าไม่มี X Window Server ทำงานอยู่ก็ไม่สามารถสร้าง JasperPrint instance นั่นคือไม่มีข้อมูลในการ print ออกหน้าจอหรือแม้แต่สร้าง PDF file เลย
ดัง นั้นคำถามที่ถามว่า ทำไมไม่ให้สร้าง PDF file แล้ว download มาเปิดที่ปลายทาง แทนที่จะส่งมาเปิดที่ปลายทาง คำตอบก็คือ Jasper ไม่สามารถสร้าง file ได้เลยถ้าไม่มี X Window Server

ในส่วนของ Windows-based OS นั้น window system ถือเป็นส่วนหนึ่งของ kernel ของระบบปฏิบัติการ ในขณะที่ UNIX-based OS นั้น Window system เป็น process ระดับ user ประกอบด้วย X Window Server และ X Client ดังนั้นการ boot linux ไม่ได้หมายความว่า start X Window Server เสมอไป แต่สามารถนำเอากระบวนการ start X Window Server หลังจาก boot OS เรียบร้อยแล้ว