EDXL เป็นรูปแบบข้อมูลสำหรับภัยพิบัติ ใช้ในโครงการ OpenCARE บล็อกอันนี้จะเป็นการแปลสเปก EDXL ของ OASIS ในส่วน Distribution Element (DE) ตามที่ผมเข้าใจ
เป้าหมายจริงๆ ก็เอาไว้อ่านเองกันลืม แต่ก็เผยแพร่ไว้ที่นี่ด้วยเผื่อจะมีใครนำไปใช้ประโยชน์
ลิงก์ที่เกี่ยวข้อง
หมายเหตุ: ควรมีความรู้ XML พื้นฐานในการอ่าน ส่วนชนิด datatype ใช้ตาม W3C XML Schema (ไม่ใช่ Relax NG :P)
EDXL Distribution Element (ต่อไปจะเรียก EDXL-DE) เปรียบเทียบง่ายๆ คือเป็นเหมือน header ของแพกเกต IP ที่บอกว่าข้อมูลทั้งหมดจะส่งไปที่ไหน เมื่อไร เป็น wrapper ครอบตัวเนื้อหาจริงๆ อีกที ซึ่งเนื้อหาในนั้นจะเป็นอะไรก็ได้ ตัว EDXL-DE จะไม่สนใจ
element ระดับบนสุดของ EDXL-DE คือ <EDXLDistribution> ซึ่งในนี้จะมีลูกได้ 3 แบบใหญ่ๆ
ทีนี้เรามาดูแต่ละตัวกันแบบละเอียดขึ้นมาอีกนิด
ตามข้อ 1. ข้างต้น พวกนี้เป็นลูกของ EXDLDistribution ที่ให้ข้อมูลของตัว DE เอง
หมายเหตุ: ในวงเล็บคือ OPTIONAL ส่วน * หมายถึงมีหลายอันได้
ตามข้อ 2. สามารถกำหนดได้ 2 แบบคือ
ผู้รับสามารถรับข้อมูลมาดู targetArea ถ้าไม่ตรงกับตัวเองก็ discard ทิ้งไปได้
หลักใหญ่ใจความของ contentObject คือต้องบอกว่าข้างในเป็นข้อมูลชนิดอะไร ซึ่งตรงนี้เรามีทางเลือกแค่ 2 อย่างคือเป็น XML หรือไม่เป็น
นอกจาก xmlContent กับ nonXMLContent สองตัวนี้แล้ว ใน contentObject ยังมี element แบบอื่นๆ ที่ใช้ประกอบ เช่น description หรือการระบุความลับ ตรงนี้คงไม่ลงรายละเอียด ถ้าสนใจก็อ่านในสเปกฉบับเต็มได้
ป.ล. ผมสังเกตว่า EDXL-DE แทบจะไม่ใช้ attribute เลย ใช้เป็น element เกือบหมด
อืม ๆ ยาก ๆ แฮะ
ขอบคุณครับ กำลังขี้เกียจเข้าไปอ่านฉบับภาษาอังกฤษอยู่พอดีเลย :-P
ตอนนี้อยากรู้ว่า ActiveMQ มัน route EDXL ยังไงกันแน่ เหมือนว่าขั้นตอนการ route ทั้งหมดมันไม่ได้อยู่ใน EDXL เลยซักนิด แปลว่าต้องมีอะไรครอบ EDXL อีกทีละซิ
EDXL-DE เป็น data ที่จะถูกส่ง; การ route ทำโดย ActiveMQ
ที่จริง จะเรียกว่า route ก็ไม่เชิง เพราะว่า ActiveMQ เป็น MOM/Message Bus "producer" ส่งอะไรลงมา "consumer" (plug-in) อื่นๆก็ได้หมด; นอกจากวิธี pub/sub ซึ่งก็เหมือนกับการมี queue หลายๆ queue แล้ว ยังมีวิธีการพิสดารอื่นๆที่ใช้ได้อีก
เมื่อ plug-in รับ EDXL-DE มา ก็ตัดสินใจได้เอง มีทางเลือกสองทาง คือตัดสินใจส่งออกไปยังระบบภายนอกเองโดยดูจาก <targetArea> หรือ <explicitAddress> หรือ tag อื่นๆ อีกทางเลือกหนึ่งคือ plug-in รับ EDXL-DE มาก็ไม่สนใจอะไรทั้งนั้น เปลี่ยน format แล้วส่งออกไปข้างนอกเลย ให้ระบบภายนอกตัดสินใจเองว่าจะเอาไปใช้หรือไม่ -- ข้อดีข้อเสียทั้งสองแบบคงชัดอยู่แล้วครับ
กระบวนการ route จะทำโดย plug-in ครับ ส่วน ข้อมูลที่จะเอามาตัดสินในก็อยู่ใน EDXL นั่นล่ะ อยู่ที่ว่าจะ route ด้วยอะไร อันนี้คงต้องมาคุยในรายละเอียดว่าจะเอาแบบไหน ในสภาวะปกติที่ไม่มีการปิดบังข้อมูลหรื่อต้องการส่งให้ใครโดยเฉพาะก็ไม่ต้อง route ครับ public อย่างเดียว