Membuat Aplikasi Database (Bagian 2)


Setelah membuat outline direktori dan membuat database beserta tabel-tabelnya, langkah selanjutnya adalah membuat struktur aplikasi fusebox kita, yaitu dengan mendefinisikan file fusebox.xml dan file-file circuit.xml

Lokasi file fusebox.xml adalah pada direktori yang kita tentukan melalui variabel $FUSEBOX_APPLICATION_PATH, yaitu pada fbxdb/app/, buatlah file fusebox.xml.php kemudian tulis script ini:

<?xml version="1.0" encoding="UTF-8"?>
<fusebox>
<circuits>
</circuits>

<classes>
</classes>

<parameters>
<parameter name="defaultFuseaction" value="" />
<parameter name="mode" value="development-full-load" />
<parameter name="password" value="pwdfbxdb" />
<parameter name="fuseactionVariable" value="fuseaction" />
<parameter name="precedenceFormOrUrl" value="form" />
<parameter name="scriptFileDelimiter" value="php" />
<parameter name="maskedFileDelimiters" value="htm,cfm,cfml,php,php4,asp,aspx" />
<parameter name="characterEncoding" value="utf-8" />
<paramater name="strictMode" value="false" />
<parameter name="allowImplicitCircuits" value="false" />
<parameter name="debug" value="false"/>
</parameters>

<globalfuseactions>
<appinit>
</appinit>
<preprocess>
</preprocess>
<postprocess>
</postprocess>
</globalfuseactions>

<plugins>
<phase name="preProcess">
</phase>
<phase name="preFuseaction">
</phase>
<phase name="postFuseaction">
</phase>
<phase name="fuseactionException">
</phase>
<phase name="postProcess">
</phase>
<phase name="processError">
</phase>
</plugins>
</fusebox>

Sekarang pikirkan circuit yang mungkin untuk aplikasi kita. Circuit yang pasti harus ada adalah circuit jabatan dan karyawan, kemudian untuk koneksi database tentukan juga circuit db, tambahkan circuit-circuit lain yang kira-kira dibutuhkan, misal circuit global (untuk circuit yang selalu dipanggil pada setiap request atau circuit yang umum digunakan pada circuit yang lain), layout (untuk layouting aplikasi kita) dan home (sebagai circuit default).

Pertama-tama buatlah circuit defaultnya (home), tambahkan script berikut pada fusebox.xml dalam tag <circuits>

<circuit alias="home" path="modules/home/" parent="" />

Kemudian buatlah file circuit.xml pada path yang telah ditentukan diatas, tentukan fuseaction yang mungkin. Berikut adalah contohnya:

<?xml version="1.0" encoding="utf-8"?>
<circuit access="public">
<fuseaction name="main">
<set name="withLayout" value="true"/>
<include template="dsp_main" contentvariable="mainContent"/>
</fuseaction>
</circuit>

Sekarang kita dapat menentukan defaultFuseaction pada fusebox.xml.php:

<parameter name="defaultFuseaction" value="home.main" />

Lanjutkan dengan membuat circuit global, layout dan db. Tambahkan tag <circuit> dalam <circuits>  dalam file fusebox.xml.php


<circuit alias="global" path="modules/global/" parent=""/>
<circuit alias="layout" path="modules/layout/" parent=""/>
<circuit alias="db" path="modules/db/" parent="" />

Kemudian buat file-file circuit.xml.php pada direktori yang sudah ditentukan diatas, tentukan pula fuseaction yang mungkin. Berikut adalah contohnya:

Circuit global:

<?xml version="1.0" encoding="utf-8"?>
<circuit access="internal">
<fuseaction name="settings">
<set name="layout" value="false"/>
<include template="myGlobals"/>
</fuseaction>
<fuseaction name="setPostBack">
<include template="act_setPostBack"/>
</fuseaction>
</circuit>

Circuit layout:

<?xml version="1.0" encoding="utf-8"?>
<circuit access="public">
<fuseaction name="wrap">
<if condition="$withLayout=='true'">
<true>
<xfa name="home" value="home.main"/>
<xfa name="jabatan" value="jabatan.list"/>
<xfa name="karyawan" value="karyawan.list"/>
<include template="lay_main"/>
</true>
<false><include template="lay_blank"/></false>
</if>
</fuseaction>
</circuit>

Circuit db:

<?xml version="1.0" encoding="utf-8"?>
<circuit access="internal">
<fuseaction name="connect">
<include template="config"/>
<include template="db_function"/>
<include template="act_connect"/>
</fuseaction>
</circuit>

Sebuah circuit dapat mempunyai access  internal atau public. Internal berarti semua fuseaction didalamnya bersifat internal, yaitu hanya dapat diakses melalui fuseaction tidak melalui URL, sedangkan public berarti semua fuseaction didalamnya bersifat public, yaitu setiap fuseaction dalam circuit ini dapat diakses langsung melalui URL. Internal adalah default dari circuit jika tidak didefinisikan.

Setiap fuseaction dalam circuit pun dapat kita tentukan access nya, nilai yang mungkin adalah private, internal, atau public. Konsep internal dan public sama seperti circuit, fuseaction private hanya dapat di akses melalui circuit yang sama.

Setelah membuat circuit global,layout dan db, ada hal yang perlu kita lakukan disini. Saya berfikir kalau setiap request harus memiliki setting default serta koneksi ke sumber data/database (walaupun tidak selalu) dan di akhir request fuseaction saya ingin membungkusnya dengan layout. Maka saya perlu menambahkan setting berikut pada fusebox.xml dalam tag <globalfuseactions>


<preprocess>
<fuseaction action="global.settings"/>
<fuseaction action="db.connect"/>
</preprocess>
<postprocess>
<fuseaction action="layout.wrap"/>
</postprocess>

Jika Anda yakin bahwa koneksi ke sumber data selalu digunakan setiap kali request, jangan ragu-ragu untuk mendefinisikannya sebagai preprocess dalam globalfuseactions.

Saatnya kita buat circuit utama, yaitu jabatan dan karyawan. Buat dulu definisi circuitnya di fusebox.xml

        <circuit alias="jabatan" path="modules/jabatan/" parent="" />
<circuit alias="karyawan" path="modules/karyawan/" parent="" />

Kemudian buat circuit.xml.php pada direktori bersangkutan.

Circuit jabatan:

<?xml version="1.0" encoding="utf-8"?>
<circuit access="public">
<fuseaction name="list">
<set name="withLayout" value="true"/>

<xfa name="add" value="jabatan.add"/>
<xfa name="edit" value="jabatan.edit"/>
<xfa name="delete" value="jabatan.delete"/>

<include template="qry_list"/>
<include template="dsp_list" contentvariable="mainContent"/>
</fuseaction>

<fuseaction name="add">
<set name="withLayout" value="true"/>
<set name="formTitle" value="Tambah Data Jabatan"/>

<xfa name="submitPost" value="jabatan.insert"/>
<xfa name="list" value="jabatan.list"/>

<include template="dsp_form" contentvariable="mainContent"/>
</fuseaction>

<fuseaction name="edit">
<set name="withLayout" value="true"/>
<set name="formTitle" value="Ubah Data Jabatan"/>
<set name="id" value="{$attributes['id']}"/>

<xfa name="submitPost" value="jabatan.update"/>
<xfa name="list" value="jabatan.list"/>

<include template="qry_dataById"/>
<include template="dsp_form" contentvariable="mainContent"/>
</fuseaction>

<fuseaction name="insert">
<do action="global.setPostBack"/>
<include template="act_insert"/>
<do action="add"/>
</fuseaction>

<fuseaction name="update">
<do action="global.setPostBack"/>
<include template="act_update"/>
<do action="edit"/>
</fuseaction>

<fuseaction name="delete">
<include template="act_delete"/>
<relocate url="{$myself}jabatan.list"/>
</fuseaction>
</circuit>

Circuit karyawan:

<?xml version="1.0" encoding="utf-8"?>
<circuit access="public">
<fuseaction name="list">
<set name="withLayout" value="true"/>

<xfa name="add" value="karyawan.add"/>
<xfa name="edit" value="karyawan.edit"/>
<xfa name="delete" value="karyawan.delete"/>

<include template="qry_list"/>
<include template="dsp_list" contentvariable="mainContent"/>
</fuseaction>

<fuseaction name="add">
<set name="withLayout" value="true"/>
<set name="formTitle" value="Tambah Data Karyawan"/>

<xfa name="submitPost" value="karyawan.insert"/>
<xfa name="list" value="karyawan.list"/>

<include template="qry_list" circuit="jabatan"/>
<set value="\$jabatan_options = \$rows;" evaluate="true"/>
<include template="dsp_form" contentvariable="mainContent"/>
</fuseaction>

<fuseaction name="edit">
<set name="withLayout" value="true"/>
<set name="formTitle" value="Ubah Data Karyawan"/>
<set name="id" value="{$attributes['id']}"/>

<xfa name="submitPost" value="karyawan.update"/>
<xfa name="list" value="karyawan.list"/>

<include template="qry_list" circuit="jabatan"/>
<set value="\$jabatan_options = \$rows;" evaluate="true"/>
<include template="qry_dataById"/>

<include template="dsp_form" contentvariable="mainContent"/>
</fuseaction>

<fuseaction name="insert">
<do action="global.setPostBack"/>
<include template="act_insert"/>
<do action="add"/>
</fuseaction>

<fuseaction name="update">
<do action="global.setPostBack"/>
<include template="act_update"/>
<do action="edit"/>
</fuseaction>

<fuseaction name="delete">
<include template="act_delete"/>
<relocate url="{$myself}karyawan.list"/>
</fuseaction>
</circuit>

Oke…. kita telah selesai membuat struktur aplikasi. Hal yang penting dilakukan disini adalah membuat algoritma yang kemudian dituangkan melalui fusebox.xml dan circuit.xml, sehingga file-file tersebut dapat dijadikan panduan untuk melakukan perawatan aplikasi pada masa yang akan datang.

Bagian selanjutnya adalah melakukan fusecoding untuk menyempurnakan pembuatan aplikasi kita.

Happy fuseboxing :)

, , ,

  1. No comments yet.
(will not be published)

  1. No trackbacks yet.