สร้าง AutoId ด้วย Java
ก่อนอื่นสร้าง component ชื่อ createautoid หรือแล้วแต่นะคะ
1. เปิดหน้าต่าง entitymodel.xml ซึ่งดูได้จาก hot-deploy>>component ที่เราสร้างขึ้นมาก่อนอื่นสร้าง component ชื่อ createautoid หรือแล้วแต่นะคะ
>>entitydef>>entitymodel.xml
2. สร้างตาราง และตัวแปรในตาราง พร้อมทั้งกำหนด prim-key ให้กับตาราง ดังนี้
ตารางชื่อ AutoId ประกอบด้วยตัวแปร autoId และ name มี pk คือ autoId ดังนี้
<entity entity-name="AutoId" package-name="org.ofbiz.example.example" title="Example Entity"> <field name="autoId" type="id-ne"></field> <field name="name" type="name"></field> <prim-key field="autoId"/> </entity>
3. สร้าง request และ view-map ใน controller.xml ซึ่งดูได้จาก
hot-deploy/createautoid/webapp/createautoid/WEB-INF/controller.xml โดยใช้คำสั่งดังนี้
<request-map uri="main"><security https="true" auth="true"/><response name="success" type="view" value="main"/></request-map> <request-map uri="authview"><security https="true" auth="true"/><response name="success" type="view" value="main"/></request-map> <request-map uri="createService"> <event type="service" invoke="createAutoId"/> <response name="success" type="view" value="result"></response> </request-map> <request-map uri="result"><security https="true" auth="true"/><response name="success" type="view" value="result"/></request-map> <!-- View Mappings --> <view-map name="main" type="screen" page="component://createautoid/widget/CreateAutoIdScreens.xml#main"/> <view-map name="result" type="screen" page="component://createautoid/widget/CreateAutoIdScreens.xml#result"/>
4. สร้าง screen เพื่อใช้เรียกใช้ Form ซึ่งเก็บไว้ที่ hot-deploy/createautoid/widget/CreateAutoIdScreens.xml
<screen name="main"> <section> <actions> </actions> <widgets> <decorator-screen name="CreateAutoIdCommonDecorator" location="component://createautoid/widget/CommonScreens.xml"> <decorator-section name="body"> <include-form location="component://createautoid/widget/CreateAutoIdForms.xml" name="CreateAutoId"/> </decorator-section> </decorator-screen> </widgets> </section> </screen> <screen name="result"> <section> <actions> </actions> <widgets> <decorator-screen name="CreateAutoIdCommonDecorator" location="component://createautoid/widget/CommonScreens.xml"> <decorator-section name="body"> <label>เพิ่มข้อมูลเสร็จเรียบร้อยแล้ว</label> <include-form location="component://createautoid/widget/CreateAutoIdForms.xml" name="result"/> </decorator-section> </decorator-screen> </widgets> </section> </screen>
5. สร้าง form ใช้ในการออกแบบหน้าจอเพื่อรับค่าจากผู้ใช้ และ form สำหรับแสดงผลลัพธ์
ซึ่งเก็บไว้ที่ hot-deploy/createautoid/widget/CreateAutoIdForms.xml
<form name="CreateAutoId" type="single" target="createService" default-map-name="resultMap" default-entity-name="AutoId"> <auto-fields-entity entity-name="AutoId" default-field-type="edit"/> <field name="autoId"><hidden/></field> <field name="name"></field> <field name="CreateButton" title="Create" ><submit button-type="button"/></field> </form> <form name="result" type="single" target="result" default-map-name="resultMap" default-entity-name="AutoId"> <auto-fields-entity entity-name="AutoId" default-field-type="display"/> <field name="autoId"></field> <field name="name"></field> </form>
6. สร้าง service ใน ไฟล์ service.xml เพื่อใช้เรียกไฟล์ java
ซึ่งเก็บไว้ที่ hot-deploy/createautoid/servicedef/services.xml
<service name="createAutoId" engine="java" auth="false" location="com.app.appAutoId.autoid.AutoIdService" invoke="createAutoId"> <attribute name="autoId" mode="INOUT" type="String" optional="true"></attribute> <attribute name="name" mode="IN" type="String" optional="true"></attribute> </service>
7. สร้างไฟล์ java ชื่อว่า AutoIdService.java
ดูได้จาก hot-deploy/createautoid/src/com/app/appAutoId/autoid/AutoIdService.java
public class AutoIdService { public static final String module = AutoIdService.class.getName(); public static Map<String, Object> createAutoId(DispatchContext dctx, Map<String, ? extends Object> context) { GenericDelegator delegator = dctx.getDelegator(); LocalDispatcher dispatcher = dctx.getDispatcher(); GenericValue userLogin = (GenericValue) context.get("userLogin"); Map<String, Object> result = ServiceUtil.returnSuccess(); String autoId = (String) delegator.getNextSeqId("AutoId"); String name = (String) context.get("name"); Map AutoId = UtilMisc.toMap("autoId", autoId,"name", name); try { delegator.create("AutoId", AutoId); } catch (GenericEntityException e) { Debug.logError(e.getMessage(), module); return ServiceUtil.returnError(e.getMessage()); } result.put("autoId", autoId); return result; } }
**ถ้าทำครบทุกหน้าแล้ว ก็ลองรัน component ของคุณดูคะ**
ที่ http://localhost:8080/createautoid/control/main
ที่ http://localhost:8080/createautoid/control/main