Showing posts with label Geogia. Show all posts
Showing posts with label Geogia. Show all posts

Monday, December 17, 2007

สคริปต์สำหรับ generate code จาก XMI

สำหรับคนที่ยังไม่รู้จักหรือลืมไปแล้ว (เพราะผมทิ้งช่วงการทำ Geogia ไปประมาณ 3 เดือน) Geogia คือโครงการสำหรับพัฒนาระบบ ERP บน Grails โดยใช้แนวทางแบบ MDA รวมกับ domain-driven ที่มีอยู่ใน Grails

ตอนนี้ผม update ตัวโปรเจ็คอีกนิดหน่อยโดยเพิ่มสคริปต์สำหรับการสร้าง code ลงไปในตัว grials app ของ Geogia ซึ่งจะทำให้ภาพรวมของการพัฒนาง่ายขึ้น
โดย
- เพิ่ม script ตอนนี้หากใช้คำสั่ง 'grails xmi-gen' และตามด้วยชื่อ UML model, ตัว generate ก็จะสร้างไฟล์ .groovy ลงไปใน grails-app/domain ให้ซึ่งจะใช้ template จากไดเร็กทอรี่ src/java/templates
- เพิ่ม lib ที่เป็น dependency ของ GroovyMDA ลงไปในตัว grails app ของ Geogia
- ไฟล์ .zargo สำหรับเก็บ UML model จะวางไว้ในไดเร็กทอรี่ชื่อ uml

ผม fork ตัว GroovyMDA ออกมาทั้งตัว โดยใช้ revision 20 เพราะคิดว่าเท่านี้ก็น่าจะเพียงพอกับการใช้งานในการ generate code ทั่ว ๆ ไปของ Geogia แล้ว
อีกหนึ่งเหตุผลในการ fork ก็คือ Groovy เปลี่ยนไปเป็น 1.5 แล้ว แต่ binary ของ GroovyMDA ยังนิ่ง ๆ อยู่ การเอา source มา integrate ลองไปใน project เลย โดยให้เป็นกึ่ง ๆ plugin น่าจะยืดหยุ่นกว่า

Thursday, September 13, 2007

XMI Generator สำหรับ Geogia

ได้รับความร่วมมือเป็นอย่างดีจาก Craig Mackay ผู้พัฒนา Groovy-MDA ตอนนี้ project Geogia มี tool สำหรับ generate Grails domain class จาก XMI ที่ export จากทั้ง ArgoUML และ Poseidon UML CE 6 แล้วครับ

สำหรับปัญหาการใช้งาน Enumeration ใน Grails ตอนนี้ใช้ workaround ไปก่อนดังนี้ครับ

- สร้าง domain class ที่มี value เป็น property
- ใน domain class ดังกล่าวให้มี initEnums เป็น static สำหรับสร้าง record ในฐานข้อมูล
- เรียก initEnums ของแต่ละ class ใน init closure ของ BootStrap.groovy

อีกอย่างหนึ่งที่จะลืมบอกไม่ได้เลยก็คือ Grails เข้าสู่ 1.0 RC แล้ว ตอนนี้ snapshot ของ 1.0 RC มีให้ download จาก website ของ Grails แล้วครับ

Friday, September 7, 2007

Groovy-MDA สำหรับ generate Geogia

หลักจากบังเอิญไปเจอว่ามี Groovy-MDA ซึ่งใช้ Groovy template สำหรับ generate ไฟล์โดยใช้ input เป็น XMI format นั้น ก็เริ่มเห็นทางที่จะปรับใช้ project นี้กับ Geogia และคิดว่าจะช่วยเพิ่มความเร็วในการพัฒนาได้มากเอาการทีเดียวครับ

เพิ่มเติมเล็กน้อย

ตอนนี้ project Geogia ได้รับการสนับสนุนจาก Gentleware AG ผู้พัฒนา Poseidon UML โดย Gentleware จะให้ license Poseidon UML CE edition สำหรับใช้ในโครงการครับ

Sunday, September 2, 2007

สร้างระบบ ERP ด้วย Grails

นึกครึ้มมานานแล้วครับที่จะลองสร้างอะไรใหญ่ ๆ ด้วย Grails ดู

ได้แรงบันดาลใจมาจากโปรเจ็ค OFBiz ที่คุณ Sand ใน board narisa.com มาโพสต์เล่าไว้บ่อย ๆ รวมทั้งได้เวลาเหมาะเอาก็ตอน Grails จะเป็น 1.0 เพราะสนับสนุน feature หลาย ๆ อย่างที่จะใช้ทำระบบขนาดใหญ่ได้ เช่นวาง domain class ใน package ได้ มี REST และ remoting plugin เป็นต้น และแน่นอนว่าผมไม่ได้จะทำ Web Application นะครับ ผมจะสร้าง Enterprise Application

ก็เลยจะลองเขียน ERP ขึ้นมาใหม่จาก diagram ของโปรเจ็ค Neogia (ที่สร้างจาก OFBiz อีกที) โดยจะค่อย ๆ แกะจาก UML ไปเป็น Grails domain class ที่ละ class และด้วย scaffolding ของ Grails ทำให้อะไร ๆ ก็เริ่มได้ง่ายไปหมด
ผมแกะไปแล้ว 2-3 class การ map ทำได้ค่อนข้างตรงไปตรงมา

มีปัญหาก็ตรง class แบบ Enumeration ซึ่งก็ต้องดูกันต่อไปว่า Grails จะ support ในรูปแบบไหน ถ้าไม่ไหวจริง ๆ ก็คงต้อง patch เอาเอง แต่ไม่รีบร้อนละครับ Groovy optimiser ที่ทำอยู่สำคัญกว่า

จุดประสงค์ของโปรเจ็คนี้คือสร้าง ERP ที่สามารถเข้าใจได้ด้วยสมองคนเพียงคนเดียวครับ และให้สามารถ customise ได้ด้วยคนเพียงคนเดียวเช่นกัน ภาระทาง engineering ก็ยกไปให้ Grails ซะ ประมาณนั้นครับ

โปรเจ็คอยู่ที่ Google Code ครับ ชื่อ Geogia (แค่เปลี่ยน N ใน neogia เป็น G)
แค่ลง Grails 0.6, fetch ตัวโปรเจ็คจาก SVN แล้วก็เรียก "grails run-app" ก็จะพอลองเล่นได้ครับ