Sunday 21 October 2007

Oracle ADF Business Component (BC4J) ตอนที่ 3 มาต่อกับ Entity Object

เราต่อจากคราวที่แล้วกันนะครับ วันนี้ผมจะสร้าง Main Class ขึ้นมาเพื่อแสดงการเรียกใช้ Entity Object กัน

ก่อนอื่นผมจะต้องสร้าง Application Module ขึ้นมาก่อน เพราะว่า Entity Object ไม่สามารถทำงานนอก Application Module ได้ แต่ผมจะไม่ลงลึกรายละเอียดเกี่ยวกับ Application Module มาก เอาไว้วันหลังผมจะอธิบายให้ฟังเรามาเริ่มกันเลยครับ ขั้นตอนมีดังนี้

1. คลิ๊กขวาที่ Project เลือก New จะขึ้นรูปให้ Expand ตรง Business Component Tier จะเห็น ADF Business Component เลือก Application Module


2. ทำการตั้งชื่อ ผมตั้งชื่อว่า CustomersService จากนั้นกด Next จนสุด แล้วกด Finish


3. เมื่อทำการสร้าง Application Module ชื่อ CustomerService เรียบร้อยแล้ว จะปรากฎเป็นComponent รูปกระเป๋าเพิ่มขึ้นมา
สังเกตที่ Structure จะประกอบไปด้วย 3 file คือ

1. CustomersServices.xml เป็น Configuration file ที่ระบุว่าจะ Map กับ Class JAVA ไหน ครับ ซึ่งในที่นี้คือ CustomersServicesImpl.java นั่นเอง

2. CustomersServicesImpl.java ปกติจะเป็น Class JAVA ที่จะ Map กับ View Object ที่เกี่ยวข้องใน Module แต่เนื่องจากว่าเราไม่ได้ Add View Object เข้ามา มันก็เลยไม่เจอครับแต่ Class นี้เรายังสามารถสร้าง Business Logic เอาไว้เพื่อให้ Tier อื่นๆมาเรียกใช้ได้

3. bc4j.xcfg เป็น Configuration file ที่บอกว่าใน package model มี Application Module อะไรบ้าง

คราวนี้เราจะมาเริ่มเขียนโค้ดกันแล้วครับ หลังจากที่ใช้แต่ Tool ช่วยมานาน

โจทย์ของผมคือ ค้นหาชื่อข้อมูลลูกค้าด้วย Primary Key คือ Customer ID กันครับ ขั้นตอนมีดังนี้

1. คลิ๊กที่ตัว CustomersServicesImpl.java ที่ Structure Tab ครับ จะเป็นดังรูป


2. สร้าง Method ขึ้นมา 1 Method ตามรูปโดยรับ Argument เป็น CustomerID แล้ว Return เป็น ชื่อของลูกค้าคนนั้น

3. ใน CustomersServicesImpl.java จะมี Main Class อยู่แล้ว ผมจะ Comment ตรงส่วน Code ที่ Jdeveloper ให้มา จากนั้นเพิ่มโค้ดตามรูป

โดย Configuration.createRootApplicationModule จะทำหน้าสร้าง Instance ของ Application Module ที่ต้องการใช้ จากนั้นเราทำการ Casting เป็น Application Module ที่เราต้องการ ก็จะสามารถเรียก Method นั้นได้เลย

service.findCustomersByPK(118) ผมได้เรียก method findCustomersByPK โดยส่ง Customer ID = 118 ไป

4. เมื่อทำการรันจะได้ผลตามรูป

No comments: