สร้าง 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


































