วันพฤหัสบดีที่ 19 สิงหาคม พ.ศ. 2553

การสร้าง AutoId ด้วย Java

สร้าง AutoId ด้วย Java
ก่อนอื่นสร้าง component ชื่อ createautoid หรือแล้วแต่นะคะ
1. เปิดหน้าต่าง entitymodel.xml ซึ่งดูได้จาก hot-deploy>>component ที่เราสร้างขึ้นมา
>>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&lt;String, Object&gt; createAutoId(DispatchContext dctx, Map&lt;String, ? extends Object&gt; context) {
         GenericDelegator delegator = dctx.getDelegator();
         LocalDispatcher dispatcher = dctx.getDispatcher();
         GenericValue userLogin = (GenericValue) context.get(&quot;userLogin&quot;);
         Map&lt;String, Object&gt; result = ServiceUtil.returnSuccess();

         String autoId = (String) delegator.getNextSeqId(&quot;AutoId&quot;);
         String name = (String) context.get(&quot;name&quot;);        
      
         Map AutoId = UtilMisc.toMap(&quot;autoId&quot;, autoId,&quot;name&quot;, name);
         
         try {
             delegator.create(&quot;AutoId&quot;, AutoId);
         } catch (GenericEntityException e) {
             Debug.logError(e.getMessage(), module);
             return ServiceUtil.returnError(e.getMessage());
         }
         result.put(&quot;autoId&quot;, autoId);
         return result;
     }
} 
 

**ถ้าทำครบทุกหน้าแล้ว ก็ลองรัน component ของคุณดูคะ**
ที่ http://localhost:8080/createautoid/control/main 

ไม่มีความคิดเห็น:

แสดงความคิดเห็น