Bước đầu tiên là xác định mô hình dữ liệu. Chúng ta muốn theo dõi từng cá nhân, sở thích của họ và tra cứu tất cả các sở thích của từng cá nhân ( hoặc tất cả mọi người có cùng 1 sở thích ). Do đó, mô hình dữ liệu ứng dụng với mỗi cá nhân, sở thích và liên kết giữa mỗi cá nhân và sở thích.
Với một cơ sở dữ liệu quan hệ, chúng ta sẽ định nghĩa hai bảng, một cho người và một cho một sở thích và liên kết chúng với nhau qua một bảng thứ ba. Bảng thứ ba sẽ cho phép bạn kết hợp bấy nhiêu sở thích mà bạn mong muốn với một người và ngược lại. Bạn sẽ định nghĩa khóa ngoài(foreign key) để ràng buộc bảng thứ ba chỉ dung để chỉ người và sở thích đang có.
OFBiz cũng hoạt động tương tự. Chúng ta sẽ xác định hai thực thể, trong đó chúng ta sẽ gọi là HelloPerson và HelloHobby, và xây dựng một liên kết
HelloPersonHobby, sau đó thiết lập mối quan hệ giữa chúng. Mối quan hệ này được sử dụng như một ràng buộc khóa ngoài nhưng cũng cho phép chúng ta đi từ một thực thể đến một thực thể khác mà không phải tự mình nhớ từng khóa của chúng là gì (hoặc thay đổi code khi khóa thay đổi).
<entity entity-name="HelloPerson" package-name="org.ofbiz.hello3"
title="Entity for storing data about persons"> <field name="helloPersonId" type="id-ne"></field> <field name="firstName" type="id"></field>
<field name="lastName" type="id"></field> <field name="comments" type="comment"> </field> <prim-key field="helloPersonId"/>
</entity>
<entity entity-name="HelloHobby"
package-name="org.ofbiz.hello3" title="Hobbies avaiable">
<field name="helloHobbyId" type="id-ne"></field> <field name="description" type="description"></field> <prim-key field="helloHobbyId"/>
</entity>
<entity entity-name="HelloPersonHobby"
package-name="org.ofbiz.hello3" title="Entity and atribute Entity">
<field name="helloPersonId" type="id-ne"></field> <field name="helloHobbyId" type="id-ne"></field> <prim-key field="helloPersonId"/>
<prim-key field="helloHobbyId"/>
<relation type="one" fk-name="HPRSN_PRSN" rel-entity- name="HelloPerson">
<key-map field-name="helloPersonId"/> </relation>
<relation type="one" fk-name="HPRSN_HBBY" rel-entity- name="HelloHobby">
<key-map field-name="helloHobbyId"/> </relation>
45
Chú ý : Ở đây, chúng ta đang tạo ra một ứng dụng với mô hình dữ liệu hoàn toàn khép kín để minh họa. Nếu chúng ta xây dựng một ứng dụng thực tế, việc thực hành tốt nhất nếu chúng ta dùng lại được nhiều thực thể trong OFBiz nhất có thể, nên thay vì tạo ra HelloPerson riêng, chúng ta sẽ sử dụng các thực thể Party/ Person / PartGroup tồn tại của OFBiz.
Để xác định mô hình dữ liệu, tạo ra một thư mục bên trong Aplication ( trong trường hợp này là hello3 ) và tạo ra một file entitymodel.xml và entitygroup.xmld trong thư mục entitydef.
HelloPerson và HelloHobby là 2 khóa chính, và HelloPersonHobby có 2 khóa chính, trong đó nó sử dụng liên kết HelloPerson và HelloHobby. Nó được xem là sự áp dụng tốt để cung cấp một tên khóa ngoài cho các quan hệ, để giúp việc gỡ lỗi dễ dàng hơn và tránh trùng tên giữa các khóa ngoài do bạn tạo ra trong OFBiz.
Điều đó cũng rất quan trọng ( nhưng rất dễ quên ) để xác định các thực thể đó trong một file khác, entitygroup.xml, trong thư mục, do đó OFBiz sẽ biết được đâu là khóa đại diện và như vậy cơ sở dữ liệu sẽ được sử dụng.
Nếu không, các thực thể sẽ vẫn tồn tại trong OFBiz nhưng khi chúng ta thực sự cố gắng sử dụng chúng , chúng ta sẽ nhận được lỗi như sau :
org.ofbiz.entity.GenericEntityException: Helper name not found for entity HelloPerson
Cuối cùng, chúng ta phải thêm dòng dưới đây vào ofbiz-component.xml để OFBiz có thể biết sử dụng thực thể này như một phần ứng dụng của mình, phía trước <webapp>
Bây giờ chúng ta sẽ khởi động OFBiz, chúng ta sẽ thấy những thông báo trong consolo.log (Linux) hoặc giao diện điều khiển (Windows) , thông báo với bạn rằng thực thể của bạn đã được nạp :
<entity-resource type="model" reader-name="main" loader="main" location="entitydef/entitymodel.xml"/>
<entity-resource type="group" reader-name="main" loader="main" location="entitydef/entitygroup.xml"/>
5336 (main) [ UtilXml.java:242:DEBUG] XML Read 0.0070s: /home/sichen/eclipse/workspace/ofbiz/hot-
deploy/hello3/entitydef/entitymodel.xml
5693 (main) [ UtilXml.java:242:DEBUG] XML Read 0.0050s: /home/sichen/eclipse/workspace/ofbiz/hot-
46
Khi đó bạn vào webtools, bạn có thể thấy những thực thể :
Click vào “All” bên phải HelloPerson bạn sẽ thấy tất cả những trường của mình :
47
Chú ý rằng bên cạnh mỗi trường là kiểu Java và kiểu SQL cho từng trường. Loại SQL được quy định trong framework/entity/filedtype/ thư mục và thay đổi tùy theo cơ sở dữ liệu bạn đang sử dụng (đang dùng trên là Derby). Nếu có bất kỳ già trị nào cho thực thể này, nó sẽ được hiển thị bên dưới các trường.