Senin, 19 November 2012

Example on Using RESTful Web Service on APEX (User Agent Tracking)

Setelah pada contoh sebelumnya kita membuat RESTful web service dengan output XML, pada contoh ini kita akan membuat dengan dengan output response TEXT.

Kasus kita ingin melakukan tracking User Agent (UA) dengan bantuan mini API dari useragentstring.com yang di dokumentasikan disini.

Oke sekarang kita implementasikan ke dalam apex dengan RESTful web service.

  1. Buatlah Web Service Reference seperti berikut:
    • Name : UA Info
    • URL : http://www.useragentstring.com/?uas=&G_UA.&getText=all
    • Basic Authentication : No
    • HTTP Method : GET
    • Output Format : Text
    • Parameter Delimiter : ;
    • REST output parameter seperti berikut
  2. Buatlah page baru dengan detil berikut:
    • Buat page item : G_UA
    • Buat computation item G_UA Before header sql query :
    • select apex_util.url_encode(owa_util.get_cgi_env('HTTP_USER_AGENT'))
      from dual
      
    • Buat Process web service (UA Info)on load after header: store report on collection dengan nama UA_RESULTS
    • Buat Report sql base on web service :
    • select substr(c002,INSTR(c002,'=', 1, 1)+1) "agent_name"
           , substr(c003,INSTR(c003,'=', 1, 1)+1) "version"
           , substr(c005,INSTR(c005,'=', 1, 1)+1) "OS Name"
       from apex_collections 
      where collection_name = 'UA_RESULTS'
      
    • Test Drive

Minggu, 18 November 2012

Example on Using RESTful Web Service on APEX (ISP Tracking)

Pada posting kita kali ini kita akan mencoba memakai feature APEX untuk integrasi melalui RESTful web service dengan contoh kasus melakukan query untuk memperoleh informasi ISP berdasarkan IP address.

Disini kita akan melakukan query ke http://services.ipaddresslabs.com. lakukan langkah-langkah berikut:
  1. Buatlah web service reference pada shared components sebagai berikut:
    • Name : ISP Info
    • URL : http://services.ipaddresslabs.com/iplocation/locateip?key=demo&ip=&MY_IP.
    • Basic Authentication : No
    • HTTP Method : GET
    • Output Format : XML
    • Response XPath : /response/geolocation_data
    • Input Type:
  2.  Buatlah parameter seperti gambar berikut:
  3. Gunakan dalam sebuah form report.
  4. Buatlah page item MY_IP.
  5. Test drive.

Senin, 12 November 2012

How to get CGI environment

Melalui value dari CGI kita bisa mengetahui IP address client yang akses, user agent dan lainnya. Melalui package OWA_UTIL kita bisa peroleh dengan sub program GET_CGI_ENV. namun dengan GET_CGI_ENV kita harus menentukan masing-masing parameter name untuk memperolehnya.

Untuk mempersingkat code bisa gunakan teknik berikut. dengan catatan bahwa nama dan value yang akan diperoleh tergantung dari web server yang dipakai APEX.

BEGIN
htp.prn('<tr>');
htp.prn('<th>CGI Variable Name</th>');
htp.prn('<th>CGI Variable Value</th>');
htp.prn('</tr>');
FOR i IN 1..owa.num_cgi_vars LOOP
htp.prn('<tr> <td align="left">'||owa.cgi_var_name(i)||'</td> <td align="left">'||owa.cgi_var_val(i)||'</td> </tr>');
END LOOP;
END;

Kita coba implementasikan ke dalam APEX dengan memakai Region PL/SQL Dynamic Content seperti contoh ini

Sabtu, 10 November 2012

Membuat koneksi Jasper iReport ke Oracle Database melalui JDBC driver

Bagi masbro dan mbaksis yang bingung gimana cara buat koneksi database dari iReport Jasper ke oracle, lakukan langkah-langkah berikut:
  1. Copy file ojdbc14.jar yang telah dipersiapka ke <ireport_home>/libs.
  2. Buka iReport pada Tools >> Options : pilih tab Classpath
  3. Pilih add jar : lalu ambil file ojdbc14.jar yang telah dipersiapkan.
  4. Pilih icon report datasource : new
  5. Isilah seperti berikut:
  • Name : oracle-hr
  • JDBC Driver : Oracle (oracle.jdbc.driver.OracleDriver)
  • JDBC URL   : jdbc:oracle:thin:@localhost:1521:orcl
  • Username      : hr
  • Password      : hr
  1. Test koneksi jika berhasil silahkan coba buat report.

Kamis, 01 November 2012

Check internet connection using UTL_TCP

Pertanyaan yang muncul pertama kali kenapa kita harus melakukan cek ini di level database? well..anda tahu bahwa APEX adalah aplikasi database. Jadi kebutuhan ini sangat memungkinkan.
Contoh : saat kita memakai item plugin google recaptcha jelas hal tersebut membutuhkan koneksi internet ke google untuk mengaktifkan plugin tersebut bukan?.

Jadi kita bisa gunakan solusi UTL_TCP untuk digunakan dalam pengecekan kondisi apakah aplikasi sekarang sedang bisa akses internet atau tidak.
  1. Pastikan anda memberi akses ACL google.co.id (contoh) jika memakai 11g.
  2. Grant akses UTL_TCP ke schema ybs.
  3. Buatlah sebuah function seperti berikut :
  4. CREATE OR REPLACE FUNCTION PING_INTERNET(P_HOST_NAME VARCHAR2, P_PORT NUMBER DEFAULT 1000) RETURN VARCHAR2
      IS  
        tcpConnection  UTL_TCP.CONNECTION;  --TCP/IP connection to the server    
        C_PING_OK           CONSTANT VARCHAR2(10)  := 'OK';
        C_PING_ERROR        CONSTANT VARCHAR2(10)  := 'ERROR';
      BEGIN
        tcpConnection := UTL_TCP.open_connection(remote_host => p_HOST_NAME, 
                                                 remote_port => p_PORT,tx_timeout=> 5);
        UTL_TCP.close_connection(tcpConnection);    
        
        RETURN C_PING_OK;    
      EXCEPTION 
        WHEN UTL_TCP.NETWORK_ERROR THEN
          IF( UPPER(SQLERRM) LIKE '%HOST%' )THEN 
            RETURN C_PING_ERROR;        
          ELSIF(UPPER(SQLERRM) LIKE '%LISTENER%' )THEN
            RETURN C_PING_OK;        
          ELSE
            RAISE;
          END IF;            
      END PING_INTERNET;
    /
    
  5. Gunakan dalam condition di aplikasi APEX untuk me-check apakah jaringan terkoneksi ke internet:
  6. select ping_internet('google.co.id', 80) from dual;