วันอังคารที่ 8 มิถุนายน พ.ศ. 2553

การสร้าง service เพื่อ insert ข้อมูลลงในฐานข้อมูลโดยใช้ simple method

ในการสร้าง service ใน OFBiz นั้น สามารถใช้ engine ในการสร้าง method ได้ 3 วิธี ดังนี้
1. engine="java" ทำได้โดยการเขียนโปรแกรมภาษา java เก็บไว้ในโฟลเดอร์ src แล้วเรียกใช้งานผ่าน package
2. engine="simple" เขียนเป็น simple method เก็บไว้ในไฟล์ *Services.xml
3. engine เป็น webservice

ในบทความนี้จะแสดงการสร้าง service โดยใช้ simple method ในไฟล์ *Services.xml มีวิธีทำดังนี้

1. สร้าง form ชื่อ CreateBlog ที่ *Forms.xml

<form name="CreateBlog" type="single" target="createBlog" default-entity-name="NewBlog">
        <auto-fields-entity entity-name="NewBlog" default-field-type="edit"/>
        <field name="saveButton" title="Save" ><submit button-type="button"/></field>
</form>

2. include form ชื่อ CreateBlog เข้าไปในไฟล์ *Screens.xml
<screen name="CreateBlog">
        <section>
            <widgets>
                <decorator-screen name="CommonDecorator" location="component://myblog/widget/CommonScreens.xml">
                    <decorator-section name="body">
                        <container id="content">
                            <container id="content-bgtop">
                                <container id="content-bgbtm">
                                    <container style="post">
                                        <include-form location="component://myblog/widget/MyBlogForms.xml" name="CreateBlog"/>
                                    </container>
                                </container>
                            </container>
                        </container>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>

3. กลับไปดูที่ไฟล์ *Forms.xml ฟอร์มชื่อ CreateBlog มี target="createBlog"
<form name="CreateBlog" type="single" target="createBlog" default-entity-name="NewBlog">
        <auto-fields-entity entity-name="NewBlog" default-field-type="edit"/>
        <field name="saveButton" title="Save" ><submit button-type="button"/></field>
</form>

4. ใน controller.xml ทำการสร้าง request-map และสั่งให้มีการการ invoke simple method ชื่อ createBlog ที่ services.xml

<request-map uri="createBlog">
        <event type="service" invoke="createBlog"/>
        <response name="success" type="request-redirect-noparam" value="blog"></response>
</request-map>

5. ใน services.xml มีการ invoke createBlog ในไฟล์ *Services.xml
<service name="createBlog" engine="simple" auth="false"
            location="component://myblog/script/com/org/toon/myblog/MyBlogServices.xml" invoke="createBlog">
            <attribute name="newBlogId" mode="INOUT" type="String" optional="false"></attribute>
            <attribute name="newBlogTitle" mode="IN" type="String" optional="false"></attribute>
            <attribute name="newBlogBody" mode="IN" type="String" optional="false"></attribute>
            <attribute name="statusId" mode="IN" type="String" optional="true"></attribute>
</service>

6. สร้าง service ชื่อ createBlog ในไฟล์ MyBlogServices.xml
<simple-method method-name="createBlog" short-description="create a Blog">
        <make-value entity-name="NewBlog" value-field="newEntity"/>
        <set-pk-fields map="parameters" value-field="newEntity"/>
        <set-nonpk-fields map="parameters" value-field="newEntity"/>
        
        <create-value value-field="newEntity"/>

        <field-to-result field="parameters.newBlogId" result-name="newBlogId"/>
</simple-method>


7.จบส่วนในการสร้างและเรียกใช้ Service ต่อไปจะทำการ controller ให้เรียก view ที่มีหน้า form ของการ create new blog มาแสดงผล

8. เพิ่ม controller ชื่อ CreateBlog ใน controller.xml ให้เรียก view ชื่อ CreateBlog มาแสดงผล เมื่อมีการเรียกเข้ามาที่ controller นี้

<request-map uri="CreateBlog">
        <security https="true" auth="false"/>
        <response name="success" type="view" value="CreateBlog"></response>
</request-map>

9. สร้าง view ชื่อ CreateBlog เรียกฟอร์มการสร้างมาแสดงผล
<view-map name="CreateBlog" type="screen" page="component://myblog/widget/MyBlogScreens.xml#CreateBlog"/>

10. ทำการ ./startofbiz.sh ใหม่อีกครั้ง แล้วทดลองเพิ่มข้อมูลลงใน entity

ในบทความต่อไปจะแสดงการแก้ไขข้อมูลในฐานข้อมูลผ่านการสร้าง service โดยใช้ simple method แบบเดียวกันนี้

1 ความคิดเห็น: