Selasa, 27 Desember 2011

Akses Aplikasi APEX melalui Android Mobile Phone

Setelah berhasil me-publish aplikasi apex yang saya buat, maka sekarang mencoba mengaksesnya melalui mobile device. Berikut laporan sekilas.
  • Akses paling bagus memakai android terutama yg sudah dual core proc touch screen, untuk yang berbasis non touch screen bakal ruwet
  • Javascript dan CSS semua aktif saya sudah coba pake: ie,Skyfire,Dolphin.
  • Flash Chart bisa aktif saya sudah coba pake: Skyfire,Dolphin untuk firefox tidak bisa
  • Bermasalah saat memanggil report yang tampil inline dengan pdf file, kasus saya memakai report server Oracle Business Intelligence Publisher Release 10.1.3.4 with OC4J Standalone
  • Saya sudah coba beberapa browser,ie,skyfire,dolphin, opera, firefox semuanya gagal, kayaknya butuh browser yg ada plugin pdf viewernya layaknya akses bbrowser melalui PC/Laptop.
  • Untuk akses ke home BI pub berhasil, namun login selalu gagal, ini ternyata masalah SSL di BI pub, setelah di non aktifkan SSL berhasil.

Kesimpulan :
Aplikasi APEX masih harus menunggu technologi browser android seperti pc supaya bisa mengakses aplikasi yang terintegrasi dengan BI publisher. untuk transaksi yang lain sudah oke.

Kamis, 22 Desember 2011

Install APEX 4.1 on Oracle XE 11g

Oracle XE 11g sebenarnya telah ter-install APEX 4, kalau anda lihat pada user list maka akan ada user :ANONYMOUS, FLOWS_FILES, APEX_PUBLIC_USER dan APEX_040000.
Pastikan user ANONYMOUS ada, karena user ini yang akan dipakai dalam EPG, untuk OHS APEX_PUBLIC_USER yang akan dipakai. gambar dibawah setelah anda berhasil install oracle XE 11g



Lakukan langkah2 berikut:
  1. Lakukan Setup Requirement DB
    • Checking the shared_pool_size of the Target Database login ke database memakai user SYS as SYSDAB
    • SQL> ALTER SYSTEM SET SHARED_POOL_SIZE='100M' SCOPE=spfile;
      SQL> SHUTDOWN
      SQL> STARTUP
      
    • PL/SQL Web Toolkit: bisa di skip karena kita memakai oracle XE 11g j
  2. Tutup HTTP port yang telah dipakai:8080 menjadi 0
  3. SQL> EXEC DBMS_XDB.SETHTTPPORT(0);
    
  4. Extract file ke dalam folder c:\apex41 setelah berhasil akan ada folder apex disitu
  5. Pindah ke working directory :
  6. cd c:\apex41\apex
    
  7. Panggil sqlplus dan login sysbagai SYS:
  8. Lakukan instalasi APEX: catatan untuk rekomendasi buatlah tablespace yg baru menggantikan SYSAUX
  9. @apexins SYSAUX SYSAUX TEMP /i/
    
  10. Tunggu proses sampai selesai : boleh bikin kopi dulu trus rokok'an kalo anda merokok hehehe
  11. Reviewing a Log of an Installation Session: file Install_tanggal.log pastikan ada log berikut
  12. Thank you for installing Oracle Application Express. Oracle Application Express is installed in the APEX_040100 schema.
  13. Verifying the Validity of an Oracle Application Express Installation: Pastikan hasilnya VALID
  14. SELECT STATUS FROM DBA_REGISTRY
    WHERE COMP_ID = 'APEX';
    
  15. Change the Password for the ADMIN Account: masih login sebagai SYS
  16. @apxchpwd
    
  17. Configure the Embedded PL/SQL Gateway
    • Running the apex_epg_config.sql Configuration Script: working dir masih c:/apex41/apex
    • @apex_epg_config SYSTEM_DRIVE:\TEMP
      
    • Updating the Images Directory: working dir masih c:/apex41/apex
    • @apxldimg.sql c:\apex41
      
    • Verifying the Oracle XML DB HTTP Server Port
    • SELECT DBMS_XDB.GETHTTPPORT FROM DUAL;
      
    • Enabling Oracle XML DB HTTP Server
    • EXEC DBMS_XDB.SETHTTPPORT(8080);
      
  18. Enable Network Services in Oracle Database 11g
  19. DECLARE
    ACL_PATH VARCHAR2(4000);
    ACL_ID RAW(16);
    BEGIN
    -- Look for the ACL currently assigned to '*' and give APEX_040100
    -- the "connect" privilege if APEX_040100 does not have the privilege yet.
    SELECT ACL INTO ACL_PATH 
    FROM DBA_NETWORK_ACLS
    WHERE HOST = '*' AND LOWER_PORT IS NULL AND UPPER_PORT IS NULL;
    -- Before checking the privilege, ensure that the ACL is valid
    -- (for example, does not contain stale references to dropped users).
    -- If it does, the following exception will be raised:
    --
    -- ORA-44416: Invalid ACL: Unresolved principal 'APEX_040100'
    -- ORA-06512: at "XDB.DBMS_XDBZ", line ...
    --
    SELECT SYS_OP_R2O(extractValue(P.RES, '/Resource/XMLRef')) INTO ACL_ID
    FROM XDB.XDB$ACL A, PATH_VIEW P
    WHERE extractValue(P.RES, '/Resource/XMLRef') = REF(A) AND EQUALS_PATH(P.RES, ACL_PATH) = 1;
    DBMS_XDBZ.ValidateACL(ACL_ID);
    IF DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE(ACL_PATH, 'APEX_040100','connect') IS NULL THEN
    DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(ACL_PATH,'APEX_040100', TRUE, 'connect');
    END IF;
    EXCEPTION
    -- When no ACL has been assigned to '*'.
    WHEN NO_DATA_FOUND THEN
    DBMS_NETWORK_ACL_ADMIN.CREATE_ACL('power_users.xml','ACL that lets power users to connect to everywhere','APEX_040100', TRUE, 'connect');
    DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL('power_users.xml','*');
    END;
    /
    COMMIT;
    
  20. Post Installation Tasks for Upgrade Installations
    • Remove Prior Oracle Application Express Installations
    • DROP USER APEX_040000 CASCADE;
    • Fix Invalid ACL in Oracle Database 11g
    • EXEC DBMS_NETWORK_ACL_ADMIN.DELETE_PRIVILEGE('power_users.xml', 'APEX_040000');
    • Ubah default profile menjadi unlimited semua, life time dan lock untuk 11g ini wajib dilakukan agar setelah 180 hari user ANONYMOUS tidak di-lock, tau buatlah profile baru dengan unlimited life time
  21. Test Drive : http://127.0.0.1:8080/apex/

Sumber :
Oracle® Application Express
Installation Guide
Release 4.1
E21673-03

Senin, 19 Desember 2011

APEX = PL/SQL + JS/JQUERY + HTML/CSS

Semakin kompleks aplikasi maka akan semakin terasa kebutuhan akan tiga teknologi tersebut, maka sebenarnya dalam mengembangkan aplikasi berbasis Oracle APEX kita memerlukan 3 jenis team development. Ini saya rasakan saat mencoba meningkatkan kompleksitas aplikasi yang saya bangun, kesulitan terbesar knowledge di dua bagian ini, teknik bonek kurang bagus karena cuma main copy-paste dari code orang lain dengan kesulitan memahami logic dari code tersebut, sehingga saat terjadi variasi lumayan ruwet untuk memodifikasi.

Saya berangkat dari oracle developer yang notabene, buta terhadap teknologi web, pada awalnya terasa sekali kesulitan untuk mengkonversi konsep trigger, process oracle developer ke dalam page render dan page processing APEX yang sudah murni webbase teknologi. Oracle form meskipun bisa dibuat webbase tapi belum murni kesitu karena masih memakai broker java jinitiator untuk merubah ke dalam applet.

Semakin lama akan terasa knowledge HTML/CSS/XML dan JS/JQUERY/AJAX menjadi mandatory dalam pengembangan aplikasi Oracle APEX.

  • PL/SQL untuk server side yang berhubungan dengan validasi database dan proses stored procedure untuk meningkatkan kecepatan aplikasi
  • JS/JQUERY untuk client side yang berhubungan sisi interactive validasi
  • HTML/CSS untuk layout template serta look and feel dari aplikasi

Jadi persiapkan diri anda untuk masuk ke dalam tiga teknologi tersebut jika ingin mengembangkan aplikasi berbasis Oracle APEX.

Selamat Belajar......
Jangan tidur sebelum bisa hehehe..
Salam bonex apex

How to Change Highlight Row on Interactive Report

Untuk Interactive Report (IR) kita tidak bisa merubah highlight row melalui template report layaknya report classic. contoh kita mau merubah HL menjadi kuning (yellow)
untuk IR tambahkan code css berikut pada bagian header region report


My demo

Sumber : Oracle APEX Forum

Sabtu, 17 Desember 2011

How to Obfuscate DADS Password

Salah satu bagian penting dalam security APEX adalah melakukan obfuscating DADS Password, karena sebenarnya apex dalam arsitektur OHS memakai satu schema dalam mengakses applikasi yaitu APEX_PUBLIC_USER. Dalam konfigurasi DADS config file password dari schema ini terekspose terbuka. karena itu oracle menyediakan fasilitas untuk me-enkripsi password ini memakai bantuan program perl dan dadtool.pl.

Berikut langkah yang anda lakukan saat melakukan enkripsi/obfuscate password.
  1. Melalui command prompt masuk ke directory diamana OHS atau apache di install
  2. set ORACLE_HOME contoh dalam hal ini "D:\OracleHTTPApache\":
    set ORACLE_HOME=D:\OracleHTTPApache\
  3. set path ke file dads tersimpan:
    set PATH=%ORACLE_HOME%\Apache\modplsql\conf;%PATH%
  4. set path ke perl.exe berada:
    set PATH=%ORACLE_HOME%\perl\5.6.1\bin\MSWin32-x86;%PATH%
  5. set path :
    set PATH=%ORACLE_HOME%\bin;%PATH%
  6. pindah working direktori ke file dads.conf berada :
    cd D:\OracleHTTPApache\ohs\modplsql\conf
  7. Lakukan Obfuscating :
    perl dadTool.pl -o 
  8. Pastikan muncul pesan :
    All password successfully obfuscated. New obfuscation : 1 

Berikut hasil sebelum Obfuscating :
Alias /i/ "directory image apex"

Order deny,allow
PlsqlDocumentPath docs
AllowOverride None
PlsqlDocumentProcedure wwv_flow_file_mgr.process_download
PlsqlDatabaseConnectString 192.xxx.xxx.xxx:1521:ORCL 
PlsqlNLSLanguage AMERICAN_AMERICA.AL32UTF8
PlsqlAuthenticationMode Basic
SetHandler pls_handler
PlsqlDocumentTablename wwv_flow_file_objects$
PlsqlDatabaseUsername APEX_PUBLIC_USER
PlsqlDefaultPage apex
PlsqlDatabasePassword anoh
PlsqlRequestValidationFunction wwv_flow_epg_include_modules.authorize
Allow from all

dan Sesudahnya Obfuscating:
...
Alias /i/ "directory image apex"

Order deny,allow
PlsqlDocumentPath docs
AllowOverride None
PlsqlDocumentProcedure wwv_flow_file_mgr.process_download
PlsqlDatabaseConnectString 192.xxx.xxx.xxx:1521:ORCL 
PlsqlNLSLanguage AMERICAN_AMERICA.AL32UTF8
PlsqlAuthenticationMode Basic
SetHandler pls_handler
PlsqlDocumentTablename wwv_flow_file_objects$
PlsqlDatabaseUsername APEX_PUBLIC_USER
PlsqlDefaultPage apex
PlsqlDatabasePassword @BRgDbE4pmrgWmkvz1Yjgl/OLePKUqlr+1Q==
PlsqlRequestValidationFunction wwv_flow_epg_include_modules.authorize
Allow from all


Catatan :
  • OS Windows Server 2003 & Oracle Application Server 10g Release 2 (10.1.2)
  • Detil instruksi ada di file dadtool.README

Selasa, 13 Desember 2011

Escape special character on query

Masalah muncul ketika data query mengandung karakter special seperti : ',". saat kita pakai JS untuk mengambil nilai tsb (kasus saya popup passback).

Berikut solusi yang saya peroleh dari oracle APEX forum (thanks patrick wolf).
  1. Lakukan modifikasi query report dengan memakai apex_javascript.escape
  2. ...
     select nama,apex_javascript.escape(nama) as nama_esc,email
     from tab_dummy
     ...
    
  3. Sembunyikan kolom yang telah di escape (nama_esc) menjadi hidden column
  4. Refensikan kolom tersebut pada kode js
  5. javascript:passBack('#NAMA_ESC#','#EMAIL#');
    

My Demo

Sabtu, 10 Desember 2011

Dynamic Home page

Kebutuhan untuk merubah home page secara dinamis mengikuti profile dari user login, membuat sering kali terjadi error saat login.
ini terjadi karena pada bagian security attribute pada aplikasi mensyaratkan page home.
karena itu kita harus merubah page home secara dinamis mengikuti nilai application item atau nilai yang disimpan dalam database. berikut langkahnya:
  1. Pada bagian procedure login buatlah sbb:
  2. declare
      v_result boolean := FALSE;
      v_home number(3);
    begin
      -- use the existing authenticate function
      v_result := pkg_test.otentifikasi(upper(:P101_USERNAME),:P101_PASSWORD);
      if v_result=true then
        -- lakukan pengisian v_home
        if upper(:P101_USERNAME)='ADMIN'then
          v_home:=31;
        else
          v_home:=1;
        end if;
        wwv_flow_custom_auth_std.post_login(
        P_UNAME => :P101_USERNAME,
        P_PASSWORD => :P101_PASSWORD,
        P_SESSION_ID => v('APP_SESSION'),
        P_FLOW_PAGE =>  :APP_ID||':'||v_home
        );
       end if;  
    
      end if;
    end;
    
  3. Pada bagian security attribute ubahlah home page menjadi : f?p=&APP_ID.:101:&SESSION.

Catatan : Page home wajib diubah sama dengan page login : 101 supaya tidak terjadi error

Selasa, 19 Juli 2011

Membuat Readonly Dynamic di Manual Tabular Form

Jika kita ada kebutuhan untuk membuat text item bersifat dinamis, contoh: kita hanya boleh merubah data gaji yang kosong sedangkan yang sudah terisi tidak boleh di ubah.
berikut contoh :

select ename,empno,
case 
when sal is not null then
 apex_item.text (3, sal, 20, 20,'style="text-align:right" readonly="1"','f03_' || '#ROWNUM#')
else
 apex_item.text (3, sal, 20, 20,'style="text-align:right"','f03_' || '#ROWNUM#')
end as salary
from EMP;

untuk form biasa anda bisa pakai dynamic action.

Senin, 04 Juli 2011

Install APEX 4.0 dengan Application Express Listener (Oracle WebLogic Server )

Setelah mencoba install APEX dengan skenario EPG dan OHS, ingin mencoba dengan skenario dengan APEX Listener. Apex dapat di deploy dengan Oracle WebLogic Server, Oracle Glassfish Server, dan Oracle Containers for J2EE (OC4J). Posting ini untuk skenario Oracle WebLogic Server.

DATA FAKTA:
  • Operating System: Windows XP Professional SP3
  • Database: Oracle Db 11g R2 (sudah ter install)
  • Web Server: Oracle BIEE 11.1.1.5.0 (Oracle WebLogic Server) (sudah ter install)
  • APEX: 4.0.2
  • APEX Listener: 1.1.2

SUMBER DOWNLOAD:

PRA SYARAT:
  • Untuk menjalankan Langkah 9.1 (membuat web archive image) anda harus memiliki java development kit (JDK) Download JDK SE 6.

LANGKAH-LANGKAH:
  • Langkah 1 : Install Oracle Database
  • Langkah 2 : Lakukan pre-instalasi Requirement APEX Detil
  • Langkah 3 : Download APEX dan ekstrak ke direktori <DIR>/TEMP/apex
  • Langkah 4 : Install APEX Detil
  • Langkah 5 : Ubah password untuk account ADMIN Detil
  • Langkah 6 : Restart Proses
  • Langkah 7 : Un-lock user APEX_PUBLIC_USER dan beri password baru Detil
  • Langkah 8 : Download APEX Listener dan ekstrak ke direktori <DIR>/TEMP/listener
  • Langkah 9 : Install APEX listener untuk WebLogic Server
    1. Buatlah Web Archive for Oracle Application Express Images (i.war)
      1. Buka command prompt
      2. masuk ke direktori apex/images contoh: cd E:\temp\apex\images
      3. tuliskan perintah berikut:jar –cvf0 E:\temp\listener\i.war .
      4. Cek di direktori E:\temp\listener jika sudah ada file i.war
    2. Launch the Administration Server Console
      1. Buka web browser
      2. Ketik URL berikut: http://<host>:<port>/console dimana <host> adalah nama komputer contoh : localhost dan <port> adalah port yang digunakan weblogic server biasanya :7001
      3. Lakukan proses login dengan mengetikkan WebLogic Administrator username dan password
      4. Jika domain anda dalam mode: Production , click button "Lock & Edit" di panel kiri dibawah sub-menu Change Center. Jika domain anda dalam mode Development maka button tsb tidak akan tampak.
    3. Install Deployment untuk apex.war dan i.war
      1. Di bawah Domain Configuration pilih "Deployment"
      2. Klik "Install"
      3. Arahkan file ke direktori apex.war berada lalu teken "Next"
      4. Pilih Targeting Style :"Install this deployment as an application" lalu tekan "Next"
      5. Pilih dimana akan anda tempatkan aplikasi dalam cluster atau server, lalu tekan "Next"
      6. Saat muncul optional setting masukkan seperti berikut:
        • Name : apex
        • Security : Custom Roles: Use roles that are defined in the Administration Console; use policies that are defined in the deployment descriptor
        • Source accessibility : Use the defaults defined by the deployment’s targets
        • Tekan "Next"
      7. Setelah tampil summary page lalu tekan "Finish"
      8. Ulangi langkah-langkah a s/d f untuk deploy aplikasi i.war
      9. Saat muncul optional setting masukkan seperti berikut:
        • Name : i
        • Security : DD Only: Use only roles and policies that are defined in the deployment descriptors
        • Source accessibility : Use the defaults defined by the deployment’s targets
        • Tekan "Next"
      10. Jika domain anda dalam mode Production, maka pada Change Center click "Activate
        Changes"
      11. Di Summary of Deployments, pilih Control tab dan lakukan verifikasi bahwa kedua aplikasi APEX dan I dengan kondisi "State are Active" dan Health status "OK"
    4. Buatlah User dan role detil lihat pada bagian:Buatlah User dan role
    5. Access Oracle Application Express Listener Administration
      1. Melalui web browser Akses ke URL: http://:/apex/listenerConfigure contoh:http://localhost:7001/apex/listenerConfigure
      2. Saat muncul popup user password: masukkan user dan password yang anda buat di langkah 9 bagian 4 dengan role admin
      3. Buatlah koneksi database seperti gambar berikut, sesuaikan password APEX_PUBLIC_USER,TNS alias name dan TNS directory sesuai yang anda miliki
      4. Test instalasi: http://localhost:7001/apex pastikan muncul aplikasi apex seperti berikut
  • Langkah 10: Aktifkan Network Services untuk oracle database 11g Detil
  • Langkah 11: Aktifkan Indexing of Online Help untuk Oracle Database 11gR2 and Higher Detil
  • Langkah 12: Pertimbangan Keamanan APEX Detil
  • Langkah 13: Mengatur JOB_QUEUE_PROCESSES Detil
  • Langkah 14: Lakukan Proses Post-Installation Detil
  • Langkah 15: Buatlah workspace baru

SUMBER:
  • Oracle® Application Express Installation Guide Release 4.0
  • Oracle® Application Express Listener Installation and Developer Guide Release 1.1

Sabtu, 11 Juni 2011

Membuat Page Help untuk aplikasi

Page help digunakan untuk membuat sebuah keterangan dalam satu page keseluruhan yang merangkum semua keterangan bantuan semua region, item dalam satu bagian, jadi bedakan dengan item help yang mem-pop-up setiap klik label item.
Adapun langkah-langkahnya sebagai berikut:
  1. Buatlah text help untuk semua item dalam aplikasi
    • Home >> Application Builder >> Application XXX>>Item Utilities >>Edit Item Help Text
    • Isi semua item help yang tidak memiliki help dengan klik: Seed Item Help Text
    • Contoh: "Belum memiliki Help Text"
  2. Buatlah page help untuk menampung informasi help
    • Buat page baru (blank) dengan alias: HELP
    • Tambahkan region :HELP dengan tipe : PL/SQL Anonymous Block
    • Isi region source:
    • APEX_APPLICATION.HELP(
      p_flow_id => :APP_ID,
      p_flow_step_id => :REQUEST,
      p_before_region_html => '<p><br/><table bgcolor="#A3BED8"
      width="100%"><tr><td><b>',
      p_after_prompt_html => '</b></p>&nbsp;&nbsp;');
      
  3. Buatlah navigation bar entries
    • Home >> Application Builder >> Application XXX>>Shared Components >>Navigation Bar Entries >> Create
    • Entry Label: "Help"
    • Target Type:URL dan isi URL Target
    • javascript:popupURL('f?p=&APP_ID.:HELP:&SESSION.:&APP_PAGE_ID.');
      
sumber : Oracle® Application Express API Reference
catatan :
  • Buatlah pakailah template page popup (atau buat baru sesuai kebutuhan) supaya logo,nama user dan nav bar tidak tampak di page help.
  • Anda bisa memakai icon dalam nav bar namun harus ada penyesuaian dalam template page.
  • Anda bisa memanggil page help dengan tampilan pop-up atau jQuery modal.
  • Anda bisa mempelajari lebih lanjut procedure APEX_APPLICATION.HELP disini.

Jumat, 10 Juni 2011

Implementasi Widget dalam APEX

Kita bisa pakai widget ke dalam aplikasi APEX layaknya dalam blogger, untuk singkatnya kita coba widget dari http://www.al-habib.info/islamic-calendar/hijri-calendar-ornament-01.htm dan http://www.mixpod.com.

  1. Buatlah region page type:HTML TEXT
  2. Template:Chart Region (terserah boleh yang lain)
  3. Display Point :Page Template Region Position 3
  4. Isi source region dengan code berikut
    • Hijri Calendar
    • Mixpod
    • 
      
  5. Lihat Hasilnya:

Catatan :
  • Aplikasi Apex harus terkoneksi ke internet
  • Saya memakai theme 1 didemo aplikasi apex.oracle.com

Senin, 06 Juni 2011

Create Notification Marquee on #GLOBAL_NOTIFICATION# (text berjalan...)

Ide ini muncul ketika saya buat marquee (text berjalan di blog). biasanya berupa pengumuman (global notification). bagaimana cara membuatnya di aplikasi APEX?
berikut langkah-langkahnya:
  1. Buat Application Item
  2. Application Item ini akan berfungsi sebagai global variable, yang secara dinamis akan bisa di ubah sesuai kebutuhan.
    • Home>>Application Builder>>Application xxx>>Shared Components>>Application Items>>Create / Edit
    • Buatlah application Item :Fxxx_G_NOTIFICATION : xxx adalah sesuai no applikasi yang anda punya
  3. Edit Definition
    • Home>>Application Builder>>Application xxx>>Shared Components>>Edit Application
    • Pada bagian tab global notification masukkan seperti gambar: jangan lupa xxx adalah no aplikasi anda
    • &FXXX_GLOBAL_NOTIFICATION.
      
  4. Edit Page Login Process
    • Edit Page Login (biasanya 101 jika belum dirubah)
    • Pada bagian : Page Processing>>edit login process
    • Pada bagian akhir code tambahkan :
    • :FXXX_G_NOTIFICATION:= 'Selamat datang di oracle apex tutorial untuk detail silahkan akses Blog ini';
  5. Test Drive
    • Lakukan login
    • Setelah login maka akan tanpak text berjalan (marquee) pada div #GLOBAL_NOTIFICATION#
Catatan :
  • Teknik ini akan memunculkan marquee di seluruh template page yang mengandung region #GLOBAL_NOTIFICATION# .
  • Untuk memunculkan hanya specifik pada page tertentu anda harus membuatnya di page yang anda inginkan dengan membuat sebuah region HTML (no template) dengan display point :page template position 1 (tergantung theme)
  • Untuk memunculkan beberapa page (kondisional) anda harus membuatnya di page 0 (zero) yang anda inginkan dengan membuat sebuah region HTML (no template) dengan display point :page template position 1, kemudian tambahkan conditional pada page yang anda butuhkan
  • Anda bisa memakai notifikasi secara dinamis berdasarkan user yang login, dengan cara query ke db data notifikasi yang disimpan untuk masing-masing user.

Minggu, 29 Mei 2011

Hindari Cara Bonek Saat Install APEX 4

Sering kali kita melakukann install aplikasi dengan cara pintas, untuk aplikasi yang menyediakan "click and go" memang tidak masalah. Tapi untuk kasus software oracle biasanya tidak bisa seperti itu.

Oke untuk kasus APEX, cara pintas atau saya sebut cara bonek (bondho nekat), misal dengan cara googling, lantas dicoba install berdasarkan hasil googling. Kali ini khusus install APEX saya tidak menyarankan cara bonex, untuk yang lain boleh :D. Karena itu disini saya tidak memposting bagaimana installasi APEX. Tapi sekedar saran-saran dalam instalasi.

Untuk Kasus installasi APEX saran saya adalah :
  • Bacalah dokumen instalasi dengan sabar dan runtut
  • Penuhi semua requirement
  • Penuhi langkah post-instalasi


Pada kasus install dengan cara googling biasanya banyak yang terlewat langkah-langkahnya yang pada akhirnya ketika akan mengaktifkan komponen atau feature pada APEX akan terjadi Error.

Beberapa hal yang harus dilakukan namun biasanya terlewat dengan cara bonek adalah:

  • PlsqlNLSLanguage yang Db pakai adalah: AMERICAN_AMERICA.AL32UTF8.
  • Menjalankan script drdeflang.sql untuk requirement oracle text nanti berguna untuk help.
  • Menjalankan script untuk update PL/SQL Web Toolkit: kasus Db 11g bisa skip ini namun untuk 10g anda harus lakukan ini.
  • Membuat tablespace tersendiri untuk engine APEX: di dokumentasi biasa memakai SYSAUX, namun sebenarnya tidak disarankan demikian karena akan bercampur dengan schema database.
  • Membuat profile baru atau edit profile: Untuk kasus 11g, default profile yang dipakai biasanya expired 180 hari, maka saya sarankan untuk edit atau buat profile dengan PASSWORD_LIFE_TIME unlimited.
  • Menjalankan script untuk Enable Network service: Khusus untuk 11g.
  • Menjalankan script untuk Enable Indexing online help: Khusus untuk 11g.
  • Mengatur jumlah JOB_QUEUE_PROCESSES.
  • Membuang schema versi sebelumnya: jika anda install di oracle XE (versi 2) atau 11g jika saat install opsi dipilih maka Apex versi 3  sudah ada di database.
  • Memperbaiki invalid ACL: untuk 11g
Kali ini cara bonex hindari!!
Oke ... selamat baca doc instalasi, lalu selamat install.

Sabtu, 28 Mei 2011

Tribute to Mr. Denes Kubicek

Kenapa saya harus ucapkan terima kasih kepada orang ini?

Tanpa mengurangi rasa hormat dan terima kasih pula pada orang-orang komunitas Oracle Application Express (APEX), yang telah bermurah hati berbagi ilmu dalam forum, blog maupun demo aplikasi yang telah mereka buat. Spesial untuk orang inilah saya sangat terkesan.

Karena dia sangat murah hati memperbolehkan orang-orang komunitas ini untuk belajar melalui workspace yang telah dia buat. Hal ini bukanlah mudah, karena butuh kepercayaan dan kemurah hatian yang tulus, banyak sekali pakar-pakar APEX yang telah berbagi ilmu, namun saya baru pertama kali yang berani memberikan aksesnya ke dalam workspacenya. Serta begitu detail langkah-langkah yang diberikan, dengan akses yang diberikan saya belajar banyak dari dia, benar-benar membuka pintu yang banyak bagi saya, antara teori dan praktek jadi lebih mudah dibayangkan. Dan itu gratis… hebat bukan..what a generous man!

Sekali lagi

Thanks You Mr. Denes Kubicek for your help, assistance and generosity !


With all My Heart
Lutfi Hedir
Denes Kubicek's Blog
Denes Kubicek's Demo Tutorial

Apa itu Oracle Application Express (APEX) ?


Oracle Application Express (Oracle APEX) yang dulu disebut HTML-DB adalah sebuah framework yang berbasis pada sebuah database dedicated (sementara ini sampai versi terbaru masih dedicated untuk Oracle Db saja dan lisensi include dalam lisensi database), ini artinya apa bahwa engine aplikasi dibangun sepenuhnya didalam sebuah database. Bahkan untuk arsitektur Embedded PL/SQL Gateway seperti yang dipakai dalam Oracle XE dan Oracle 11G file image (library,css,theme,dll) disimpan didalam database metadata juga. Inilah hal yang berbeda dibandingkan framework yang lain.

Oracle APEX kenapa me-claim sebagai Application Express?

  • IDE Browser Based.
    didalam framework anda telah memiliki, application developer, SQL workshop untuk interaksi dengan object Database,Team development dan Administration dalam satu paket yang bisa diakses melalui web browser.
  • APEX menganut RAD dimana memudahkan untuk membuat prototyping. Disisi client tidak ada instalasi apapun serta tidak memerlukan kemampuan knowledge yang handal dalam HTML,CSS,XML dan Javascript (catatan : anda hanya memakai komponen basic) anda dengan mudah bisa membangun form, report, chart dan komponen-komponen yang lain yang diperlukan dengan menggunakan wizard, theme dan komponen yang ada dengan kecepatan yang mengagumkan.

Asitektur


Komunikasi antara web browser dan Database dimana engine APEX berada melalui Web Listener. Adapun web listener yang bisa dipakai adalah

  • Oracle Application Express Listener
    Cara pertama memakai Oracle Application Express Listener yang merupakan sebuah Java based sebagai alternative dari Apache mod_plsql. Anda bisa memakai web listener seperti OC4J, Oracle WebLogic Server dan Oracle GlassFish Server (Lihat implementasi arsitektur weblogic di posting ini)
  • Apache MOD_PLSQL
    Cara kedua dengan mengimplementasikan Oracle HTTP Server (Apache) sebagai middle tier yang berisi mod_plsql plug-in . Plugin berfungsi sebagai penghubung komunikasi antara Web server dan Oracle Application Express objects yang ada didalam Oracle database. Arsitektur ini memerlukan konfigurasi file dads.conf. serta file image yang disimpan didalam Oracle HTTP Server (Apache).

  • Embedded PL/SQL Gateway
    Cara ke tiga dengan Embedded PL/SQL Gateway (EPG) yang bekerja didalam oracle Database itu sendiri yaitu XML DB HTTP server. Arsitektur ini menyimpan file metadata seperti images, CSS, dan JavaScript didalam database. Konfigurasi ini cocok untuk development karena memerlukan konfigurasi yang mudah namun untuk production tidak disarankan untuk memakai ini.
Sejarah 
Diperkenalkan pertama kali sebagai bagian dari Oracle Db 10gR1 adalah HTML DB 1.5 tahun 2003, dan berikut perkembangannya dan sedikit feature nya sampai sekarang:

  • 2003 - HTML DB 1.5 : release pertama.
  • 2004 - HTML DB 1.6 : memperkenalkan Theme.
  • 2005 - HTML DB 2.0 : memperkenalkan SQL Workshop.
  • 2006 – Oracle APEX 2.1 & 2.2 : memperkenalkan Package Application dan Oracle XE.
  • 2007 - Oracle APEX 3.0 : memperkenalkan Flash Chart, PDF Printing dll.
  • 2008 - Oracle APEX 3.1 : memperkenalkan Interactive Report ,BLOB dll.
  • 2009 - Oracle APEX 3.2 : memperkenalkan migrasi dari Form Developer dll.
  • 2010 - Oracle APEX 4.0 : memperkenalkan Dynamic Actions,Websheets, Chart Improvement, RESTful Webservice dll.
  • 2011 - Oracle APEX 4.0.2 : perbaikan dari versi 4.0 .
Perkembangan terakhir Oracle Application Express 5.0 Early Adopter is now available ‼ untuk mencobanya disini dan keterangan improvementnya disitu.

Browser Requirement

Pada bagian ini saya hanya focus pada versi terbarunya, yaitu APEX 4, browser yang support adalah:

  • Microsoft Internet Explorer 7.0 ++.
  • Mozilla Firefox 3.5 ++ .
  • Google Chrome 4.0 ++ .
  • Apple Safari 4.0 ++ .
Namun harap di-ingat anda harus tetap mencobanya dulu ke masing-masing browser untuk memastikan semuanya lancar, karena script CSS dan JavaScript akan menampilkan hal yang berbeda di masing-masing browser.

APEX dan jQuery

Mulai versi 4 APEX sudah built-in dengan jQuery 1.4 ini artinya anda tidak perlu upload UI ke dalam APEX . jQuery telah tersedia di file image /i/libraries/ seperti gambar dibawah :



 
Sumber : Oracle APEX Documentation dan referensi yang lain

Jumat, 27 Mei 2011

Implementasi Syntax Highlighter ke Dalam Blogger

Ketika menuliskan contoh coding ke dalam blogger akan menghasilkan tulisan yang susah dibaca ketika tampil di blog. hal ini bisa dibantu dengan mengimplementasikan Syntax Highlighter ke dalam design template page blogger.

Implementasi ini pada dasarnya memasukkan link library javascript ke dalam design blogger kita, yang kemudian akan dieksekusi di bagian body.oke untuk singkatnya kita coba saja.
  1. Login ke dalam blogger.
  2. Backup template awal (klik Download Full Template) jaga-jaga untuk merestore template ke keadaan semula jika terjadi masalah.
  3. Edit bagian <head></head> design. Design >>Edit HTML
    • copy paste css ini ke bagian head sebelum ]]></b:skin>
    • Sebelum tag </head> copy kode berikut:
    • 
      
      
      
      
      
      
      
      
      
      
      
      
      
    • Bagian sebelum tag </body> tambahkan code berikut
    • <script language='javascript'>
      dp.SyntaxHighlighter.BloggerMode();
      dp.SyntaxHighlighter.HighlightAll('code');
      </script>
      
  4. Simpan perubahan template design.
  5. Test Drive
    • Lakukan posting dengan Edit HTML
    • Tuliskan kode berikut
    • <pre name="code" class="sql"> select sysdate from dual; </pre>
    • Lakukan preview
    • Tampilan posting pastikan seperti ini
    • select sysdate
      from dual;
      

Catatan :

  • Anda tidak harus me-copy seluruh link script, tergantung kebutuhan code. Jika anda cuma butuh highligth untuk code: sql,css,xml dan javascript cukup copy seperti ini :
  • 
    
    
    
    
    
  • Gunakan tool ini untuk membantu escape HTML, terutama jika mengandung tag <link>

original source : http://heisencoder.net

Senin, 23 Mei 2011

Memanggil Procedure Melalui URL APEX 4 & Db 10g XE

Dengan apex kita bisa memanggil langsung sebuah procedure yang telah dibuat dalam sebuah schema database.

Salah satu contoh penggunaanya adalah untuk link verifikasi saat registrasi online, dimana user nanti tinggal di berikan sebuah URL yang langsung menjalankan sebuah procedure dalam DB.

Mengikuti langkah-langkah keren yang telah diberikan oleh Dietmar Aust's Blog,

eh..ternyata tetap saja gagal, karena contoh kasus yang dipakai adalah APEX versi 2 sedangkan yang saya pakai versi 4. coba-coba akhirnya ketemu solusinya.

ternyata untuk menggantikan skema FLOWS_020100 bukan FLOWS_FILES
melainkan APEX_04000 jadi modifikasi script menjadi :
alter session set current_schema=APEX_040000;

CREATE OR REPLACE function wwv_flow_epg_include_mod_local(
    procedure_name in varchar2)
return boolean
is
begin
    --
    -- Administrator note: the procedure_name input parameter may be in the format:
    --
    --    procedure
    --    schema.procedure
    --    package.procedure
    --    schema.package.procedure
    --
    -- If the expected input parameter is a procedure name only, the IN list code shown below
    -- can be modified to itemize the expected procedure names. Otherwise you must parse the
    -- procedure_name parameter and replace the simple code below with code that will evaluate
    -- all of the cases listed above.
    --
    if upper(procedure_name) in (
          'TUTORIAL.HELLO_WORLD') then
        return TRUE;
    else
        return FALSE;
    end if;
end wwv_flow_epg_include_mod_local;
/

Selanjutnya ikuti saja yang lain.

Jangan lupa untuk menyebutkan schema dan nama procedurenya sama persis (sensitive case). insyaallah berhasil, jika tidak berarti anda belum beruntung :)).

Danke Mr Dietmar Aust

Jumat, 20 Mei 2011

Implementasi jQueryUI Accordion

Implementasi jQueryUI Accordion pada dasarnya sama dengan ketika implementasi jQueryUI Tabs.
Yang berbeda adalah sbb:

  • Pada bagian template definition :
  • <div id="#REGION_STATIC_ID#" #REGION_ATTRIBUTES#>
    #BODY##SUB_REGION_HEADERS##SUB_REGIONS#
    </div>
    
    <link rel="stylesheet" href = "/i/libraries/jquery-ui/1.8/themes/
    ui-lightness/jquery-ui.css" type="text/css" />
     
    <script src="#IMAGE_PREFIX#libraries/jquery-ui/1.8/ui/minified/jquery.ui.accordion.min.js" type="text/javascript"></script>
    
    
    
  • tambahkan pula function js untuk menyimpan cookies state (supaya ketika di submit posisi yang terbuka tetap pada section yang sama). Serta memakai icon custom
  •  
    <script type="text/javascript">
    apex.jQuery(function() {
      apex.jQuery("##REGION_STATIC_ID#").accordion({cookie:{expires:1}});
    });
    jQuery(function($) {
        var userpanel = $("##REGION_STATIC_ID#");
        var index = $.cookie("accordion");
        var active;
        if (index !== undefined) {
            active = userpanel.find("h3:eq(" + index + ")");
        }
        userpanel.accordion({
            header: "h3",
            event: "hoverintent",autoHeight: true,animated: 'bounceslide',collapsible: true,fillSpace: false, 
            active: active,
            change: function(event, ui) {
                var index = $(this).find("h3").index ( ui.newHeader[0] );
                $.cookie("accordion", index);
            }
        });
    });
    
    </script> 
    
    <script>
     $(function() {
      var icons = {
       header: "ui-icon-circle-arrow-e",
       headerSelected: "ui-icon-circle-arrow-s"
      };
      $( "##REGION_STATIC_ID#" ).accordion({
       icons: icons
      });
      $( "#toggle" ).button().toggle(function() {
       $( "##REGION_STATIC_ID#" ).accordion( "option", "icons", false );
      }, function() {
       $( "##REGION_STATIC_ID#" ).accordion( "option", "icons", icons );
      });
     });
     </script>
    
  • Pada bagian Sub Region template :
  •  <h3><a href="#">#SUB_REGION_TITLE#</a></h3>
    <div>#SUB_REGION#</div>
    
  • catatan region child yang akan memakai parent jQuery accordion sebaiknya memakai no template.
  • Demo hasil di sini
  • Eksplorasi lebih lanjut silahkan pelajari di sini
Oke sekarang kita lihat hasilnya


source awal : Thanks Patrick Wolf for sharing on oracle forum

Membuat Tree dengan custom icon

Jika anda telah mengimplementasikan APEX tree, tentu tahu bahwa ada 3 tree template
1. Default : tanpa icon
2. Blue : dengan icon default warna biru
3. Classic : dengan icon folder


Namun untuk digunakan sebagai menu navigator tentu kurang menarik dan tidak merepresentasikan proses atau sekedar folder, nah untuk membuatnya cukup mudah.
Lakukan langkah2 berikut :

  • Buatlah nested table (table yang mereference ke table itu sendiri). Jangan lupa untuk membuat kolom untuk membedakan tipe node.
CREATE TABLE T_TREE
(
  ID           NUMBER(10)                       NOT NULL,
  SEQ          NUMBER(5),
  DESCRIPTION  VARCHAR2(100 BYTE),
  ALIAS        VARCHAR2(50 BYTE),
  PAGE         NUMBER(10),
  STATUS       VARCHAR2(2 BYTE),
  MENU_ID      NUMBER(10),
  LINK         VARCHAR2(500 BYTE),
  TOOLTIP      VARCHAR2(100 BYTE)
)
  • Upload data.
  • Buatlah page dalam apex.
  • Upload icon yang kan dipakai melalui shared component>images>upload file image
  • Buatlah region tree dengan query seperti ini.
select case when connect_by_isleaf = 1 then 0
            when level = 1             then 1
            else                           -1
       end as status, 
       level, 
       DESCRIPTION as title, 
       case when "STATUS" = 'X' then '#WORKSPACE_IMAGES#pt_process2.png'
            when "STATUS" = 'M' then '#WORKSPACE_IMAGES#folder.gif'
            when "STATUS" = 'F' then '#WORKSPACE_IMAGES#form.png'
            when "STATUS" = 'R' then '#WORKSPACE_IMAGES#article.gif'
       end         as icon,
       "ID" as value, 
       "TOOLTIP" as tooltip, 
       case when "STATUS" in ('F','R') then
        'f?p=&APP_ID.:'||"PAGE"||':&SESSION.::NO::P1_SELECTED_NODE:'||"ID" 
       else
        'f?p=&APP_ID.:1:&SESSION.::NO::P1_SELECTED_NODE:'||"ID"
       end as link 
from T_TREE
start with "STATUS" = 'X'
connect by prior "ID" = "MENU_ID"
order siblings by "SEQ"

Oke selanjutnya anda akan lihat hasilnya
eng..ing..eng....


Kamis, 19 Mei 2011

Mengatur Tampilan Login ke Workspace APEX

Setelah membaca membaca Peter Raganitsch's Blog  
Dan dicoba diterapkan...
Bah...bah...keren juga hasilnya

oke langkah2 ringkasnya sebagai berikut :
  • Download source js dari sini
  • Pindahkan ke lokal
  • Masuk ke apex dengan ws: internal
  • pada baginan manage instance>define login message >custom message
  • masukkan script untuk memanggil js





catatan : pada IE 8 gambar logo tidak berubah, untuk Firefox 3.6, Google Chrome 11 dan apple safari 5.0.5 berhasil

Selasa, 12 April 2011

Memakai jQuery Tab

gambar 1
Gambar 2
Oke setelah kita memakai konfirmasi jQuery, maka untuk ekplorasi lebih jauh apex dan jQuery kita akan memakai tab. Pertama disini tab bukan sebuah tabb page seperti yang anda bayangkan dalam template page apex namun sebuah region.

Tab region akan berguna dalam sebuah page yang memuat banyak transasksi atau informasi yang harus ditampilkan dalam satu halaman, menggunkan scroll tidak masalah untuk page berita atau page report, namun untuk page transaksi tentu kurang bagus dalam tampilan.

oke ..untuk membuatnya kita memerlukan prasyarat berikut :
  • Upload file jquery.cookie.js ke dalam static file.
  • Buatlah template region baru seperti berikut:
  1. Nama : terserah contoh (jQueryTab)
  2. Template class : custom1
  3. Definition  (Template) :
  4. #BODY##SUB_REGION_HEADERS##SUB_REGIONS#
    <link rel="stylesheet" href = "/i/libraries/jquery-ui/1.8/themes/ overcast/jquery-ui.css" type="text/css" /> */
  5. Sub Region (Header Template) lihat gambar 1 :
    >#ENTRIES#</ul> 
  6. Sub Region (Header Entry Template) :
  7. #SUB_REGION_TITLE#
  8. Sub Region (Template) :
    #SUB_REGION#




Setelah region jQueryTab terbentuk maka anda kan bisa memakainya sesuai kebutuhan page anda dengan syarat .
  •  Jadikan region tsb sebagai parent
  • Region child harus no template (karena akan di cover oleh region parent-nya).
contoh pemakaian :
Sumber : Oracle Apex Forum (Patrick Wolf thanks for sharing )

Kamis, 07 April 2011

Membuat Konfirmasi jQuery menggantikan standard APEX

Mungkin kita telah tahu standard konfirmasi di apex yang biasanya muncul ketika akan menghapus sebuah transaksi. jika kita lihat button tsb akan memanggil function js berikut :

javascript:apex.confirm(htmldb_delete_message,'MULTI_ROW_DELETE');


dan akan memunculkan sebuah windows konfirmasi. berikut :
standard konfirmasi


Sekarang bagaimana membuat nya lebih baik dengan memakai jQuery karena apex 4 sudah built in dengan jquery. lakukan langkah-langkah berikut:
  • Buat page zero (0).
  • Buatlah region (with no template) pada posisi before footer dengan source berikut :
  • Ubah code standard digantikan dengan function yang baru tersebut.
javascript:confirmSubmit('Anda yakin akan memnghapus biaya ini ?','MULTI_ROW_DELETE'); 

tadaaaa...
 
jQuery konfirmasi
selanjutnya anda tinggal membuat function untuk handle URL.

Sumber : Oracle Apex Forum (Jari Laine thanks for sharing )