Thursday, December 27, 2012

Hello World BPEL

Langkah-langkah membuat aplikasi sederhana Hello World menggunakan Oracle BPEL dengan IDE JDeveloper 11.1.1.6.
1. Buka aplikasi JDeveloper yang sudah diupdate dengan plugin untuk SOA.

2. Buat aplikasi baru. Pilih Application Template SOA Application. Klik Next.

3. Lengkapi Project Name. Klik Next.

4. Pilih Composite with BPEL Process. Klik Next.

5.Beri nama untuk BPEL Process. Pilih Template Synchronous BPEL Process. Expose as a SOAP service. Klik OK.

6. Apabila menemukan Unexpected Error, pilih Continue, Check Remember settings and don't show this dialog again. Klik OK.

7. Drag Assign Activities dari Component Pallete BPEL 1.1 ke antara receiveInput dan replyOutput.

8. Rename assign activities menjadi AssignHelloWorld.

9. Double klik untuk mengedit AssignHelloWorld activities.

10. Drag icon fx (Expression) ke outputVariable payload untuk meng-assign value ke variabel tersebut.

11. Pilih inputVariable dari BPEL Variables yang tersedia, lalu klik Insert Into Expression. Lalu manipulasi menggunakan function concat pada String Functions. Klik OK.

12. Hasil setelah proses assign menggunakan Expression. Klik OK.

13. Deploy aplikasi BPEL dengan cara klik kanan pada project, pilih Deploy, BPELProcess.

14. Pilih Deploy to SAR

15. Pilih Next dan Finish.
16. Aplikasi BPEL selesai di-deploy ke dalam file SAR (jar extension with prefix name sca)

Sekarang kita memiliki file hasil build yang dapat dideploy ke SOA Server pada WebLogic. Cheers!

Merry Christmas and Happy New Year.

Friday, December 21, 2012

Tutorial Grails #1

Sebelum kita mulai dengan grails, mari kita bertanya dengan

APA ITU GRAILS ?

Grails adalah open source yang diperuntukan dalam pembuatan web application. Bahasa kerennya Web Application Framework. Grails menggunakan bahasa pemrograman groovy dan berjalan diatas JVM.

Sebelum kita memulai ada beberapa hal yang perlu di persiapkan, yaitu INSTALASI

Ada beberapa hal yang akan kita siapkan disini :

  1. Java
  2. Grails
  3. IDE

[ Java ]
Karena grails berjalan diatas JVM, Java harus di install terlebih dahulu. Untuk download java ada disini. Download sesuai dengan OS Environment kita masing-masing dan jangan lupa setting JAVA_HOME beserta PATH-nya.

[ Grails ]
Setelah kita meng-install java, kita lanjukan dengan instalasi pada grails. Download versi grail terbaru ada disini. Untuk proses instalasi grails sangatlah mudah, yaitu :

  1. Unzip file grails yang sudah kita download.
  2. Buat folder grails (mkdir grails) dan pindahkan file yang sudah kita unzip.
  3. Setting GRAILS_HOME beserta PATH-nya.
  4. Untuk membuktikan grails berhasil diinstall, ketik grails -version pada command line. Hasilnya adalah versi dari grail yang telah kita download.

[ IDE ]
Ada beberapa IDE yang bisa kita gunakan, yaitu :


  1. IntelliJ IDEA.
  2. Eclipse.
  3. NetBeans.
  4. TextMate.

Yang biasanya dipakai adalah GGTS (Groovy/Grails Tool Suites). GGTS adalah Eclipse yang didalam  sudah terinstall plug in Groovy dan Grails. Jadi kita tidak perlu install plug in tambahan. Download GGTS terbaru ada disini.

Setelah ini apa yang kita lakukan ?

TESTING GRAILS APPS

Caranya adalah

  1. Buka terminal dan ketik grails create-app demo.
  2. Setelah aplikasi terbentuk, masuk ke folder demo (cd demo).
  3. Ketik grails run-app untuk menjalankan aplikasi yang telah kita buat.
  4. Jalankan aplikasi melalui browser dengan alamat http://localhost:8080/demo



Delete Domain WebLogic 10.3


Kesalahan dalam membuat domain di weblogic mungkin terjadi, belum ada wizard atau tools untuk menghapus domain. Berikut langkah - langkah manual untuk menghapus domain pada weblogic 10.3,

1. Buka file domain-registry.xml di $MIDDLEWARE_HOME

2. Hapus baris domain yang ingin dihapus pada file domain-registry.xml

3. Buka file nodemanager.domains di $MIDDLEWARE_HOME\wlserver_10.3\common\nodemanager

4.  Hapus baris domain yang ingin dihapus pada file nodemanager.domains

5. Hapus direktori domain di $MIDDLEWARE_HOME\user_projects\domains

6. Hapus direktori applications di $MIDDLEWARE_HOME\user_projects\applications

7. Cek melalui config wizard, domain sudah terhapus.

Sekarang domain yang salah sudah terhapus, cheers!

Monday, October 8, 2012

ADF - Table Pagination

Sebelum kita membahas Pagination di ADF, mari kita pahami dulu Pagination.

Apa sih Pagination itu ?
Pagination berasal dari kata page, yang artinya halaman. Jadi pagination adalah proses pembacaan data per-halaman atau per-bagian. Banyak sekali contoh pagination, salah satunya adalah aplikasi instagram. Dimana saat aplikasi tersebut di jalankan, instagram hanya menampilkan beberapa bagian data terbaru saja. Bukan semua data yang di tampilkan dalam gadget kita.

Kenapa harus menggunakan Pagination ?
Pagination digunakan saat proses pengambilan data yang besar (biasanya ratusan ribu atau jutaan data). Tidaklah bijak jika kita mengambil data dari database secara keseluruhan, bukan bagian per bagian. Dengan adanya pagination kita bisa mengefektifkan penggunaan memori dan tentunya data yang ditampilkan lebih cepat.

Lalu, apa yang bisa dilakukan oleh ADF ?
Seperti yang kita tahu, ADF adalah framework yang begitu mudah digunakan. Banyak sekali wizard yang disediakan di JDeveloper, untuk mempercepat kita dalam proses pembuatan aplikasi. Pagination pada ADF juga sangat mudah, cukup optimalisasi pada VO (View Object).

Bagaimana caranya ?
Sebelum kita membahas lebih lanjut, disini kita hanya menggunakan komponen ADF Table yang akan di tampilkan dalam bentuk Web. Kenapa table, karena pagination biasanya digunakan pada table.
Tanpa banyak membuang waktu, mari kita coba cara pembuatan pagination di ADF. Untuk itu ada beberapa hal yang harus kita lakukan, yaitu :
  1. Membuat aplikasi ADF dengan menggunakan JDeveloper. Pada bagian Model kita menggunakan EO (Entity Object) dan VO (View Object) yang terkoneksi ke database. Sedangkan di bagian ViewController kita menggunakan JSF Page dengan komponen ADF Table. Untuk langkah-langkah pembuatan aplikasi tersebut, nantikan blog saya selanjutnya, yaitu Step by step - ADF Pagination.
  2. Setelah aplikasi selesai dibuat, klik VO yang digunakan pada ADF Table.
  3. Pada bagian Tuning, ubah Access Mode menjadi Range Paging.
  4. Nilai yang kita isikan pada bagian range size sesuai dengan range size yang dipakai di iterator.
View Object
View Object

Setelah melakukan perubahan tersebut, aplikasi siap untuk di deploy dan di test. Jangan lupa klik tombol save sebelum melakukan proses deploy.

Tunjukan buktinya ?
Sebelum kita memberikan bukti, mari kita lakukan test sederhana berikut ini :

  1. Setelah aplikasi berhasil di deploy, buka aplikasi tersebut di browser.
  2. Tunggu beberapa saat hingga kita bisa melihat aplikasi secara sempurna.
  3. Lakukan scroll hingga mencapai akhir dari Vertical ScrollBar.
  4. Bandingkan hasilnya, antara yang menggunakan pagination dan yang tidak.
Ini lah buktinya. Kedua gambar di bawah, diambil dengan menggunakan jconsole dengan kisaran data mencapai 100 ribu.

Table tanpa pagination
Table tanpa pagination

Table dengan pagination
Table dengan pagination

Dari gambar disamping terlihat bahwa ada pergerakan penggunaan memori pada saat :

  • Aplikasi mulai di jalankan, dimana penggunaan memori berkisar antara 160Mb.
  • Sedangkan saat proses scroll data hingga mencapai akhir dari Vertical ScrollBar berkisar antara 250Mb.






Jika kita bandingkan dengan gambar di sebelah kanan terlihat sekali beda. Saat aplikasi di jalankan dan proses scroll data hingga akhir dari Vertical ScrollBar tidak lebih dari 200mb, atau kisaran 160Mb dari titik awal dan 170Mb untuk titik tertingginya.








Kok bisa seperti itu ?
Terlihat seperti magic bukan, apa yang dilakukan oleh ADF. Namun tidak ada yang magic di dunia komputer. Jadi apa yang dilakukan ADF adalah mengubah query yang ada dengan menambahkan hint dan range. Untuk lebih jelasnya perhatikan contoh query ini:

SELECT Sample.ID, Sample.DATA FROM SAMPLE Sample

Query diatas adalah bentuk awal sebelum kita ubah access mode-nya menjadi range paging. Apabila kita rubah menjadi range paging, query diatas berubah menjadi:


SELECT * FROM (SELECT /*+ FIRST_ROWS */ IQ.*, ROWNUM AS Z_R_N FROM (SELECT Sample.ID, Sample.DATA FROM SAMPLE Sample) IQ WHERE ROWNUM < :Bind_RangePage_High) WHERE Z_R_N > :Bind_RangePage_Low

Jadi adanya penambahan hit dan range pada saat kita melakukan proses pagination berlangsung.

Friday, September 28, 2012

Plugin Maven untuk WebLogic server

Petunjuk ini didapat dari http://docs.oracle.com/cd/E21764_01/web.1111/e13702/maven_deployer.htm untuk membuat maven plugin weblogic 10.3

Langkah-langkah untuk membuat plugin maven untuk weblogic server yaitu :

Buat jar plugin menggunakan WebLogic JarBuilder Tool (wljarbuilder)
*) Pastikan WebLogic server sudah diinstall pada pc.
*) Buka console, pindah direktori ke ${MIDDLEWARE_HOME}/wlserver_10.3/server/lib/
*) Jalankan perintah
java -jar wljarbuilder.jar -profile weblogic-maven-plugin

*) Hasilnya akan terbentuk file weblogic-maven-plugin.jar, didalam file tersebut terdapat pom.xml.
*) Ekstrak file pom.xml yang ada didalam file tersebut ke direktori ${MIDDLEWARE_HOME}/wlserver_10.3/server/lib/,
dengan cara :
jar xvf ${MIDDLEWARE_HOME}/wlserver_10.3/server/lib/weblogic-maven-plugin.jar META-INF/maven/com.oracle.weblogic/weblogic-maven-plugin/pom.xml

lalu copy file tersebut dengan perintah :
cp ${MWMIDDLEWAREHOME}/wlserver_10.3/server/lib/META-INF/maven/com.oracle.weblogic/ weblogic-maven-plugin/pom.xml ${MIDDLEWARE_HOME}/wlserver_10.3/server/lib

Setting tambahan untuk menyingkat prefix pemanggilan
*) Ubah file setting.xml yang ada di local repository, secara default akan ada di $HOME/.m2 dengan code dibawah ini :
<pluginGroups>
 <pluginGroup>com.oracle.weblogic</pluginGroup>
</pluginGroups>
*) Ubah file pom.xml di ${MW_HOME}/wlserver_10.3/server/lib, sesuaikan dengan kode dibawah ini :
<project xmlns="http://maven.apache.org/POM/4.0.0" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0  
        http://maven.apache.org/maven-v4_0_0.xsd">   
 <modelVersion>4.0.0</modelVersion>   
 <groupId>com.oracle.weblogic</groupId>   
 <artifactId>weblogic-maven-plugin</artifactId>   
 <packaging>maven-plugin</packaging>   
 <version>10.3.4</version>   
 <name>Maven Mojo Archetype</name>   
 <url>http://maven.apache.org</url>   
 <dependencies>     
  <dependency>       
   <groupId>org.apache.maven</groupId>
   <artifactId>maven-plugin-api</artifactId>      
   <version>2.0</version>     
  </dependency>   
 </dependencies>    
 <build>    
 <plugins>       
  <plugin>        
   <artifactId>maven-plugin-plugin</artifactId>        
   <version>2.3</version>        
   <configuration>          
    <goalPrefix>weblogic</goalPrefix>        
   </configuration>       
  </plugin>     
 </plugins>   
 </build>   
</project>

*) Install file weblogic-maven-plugin.jar ke local repository maven, dengan perintah :
mvn install:install-file  -Dfile=${MW_HOME}/wlserver_10.3/server/lib/weblogic-maven-plugin.jar -DpomFile=pom.xml

*) Note : perintah mvn install akan mendownload library-library Maven dari repository (local/internet) yang dibutuhkan supaya proses eksekusi berhasil.

Konfigurasi di file pom.xml untuk project Maven
*) Pada file pom.xml di project Maven tambahkan kode dibawah ini :
<plugin>        
 <groupId>com.oracle.weblogic</groupId> 
 <artifactId>weblogic-maven-plugin</artifactId> 
 <version>10.3.4</version> 
 <configuration> 
  <adminurl>t3:/${ipServerWebLogic}:${portServerWebLogic}</adminurl>
  <user>${userAdminWebLogic}</user> 
  <password>${passwordAdminWebLogic}</password> 
  <upload>true</upload>
  <remote>false</remote> 
  <verbose>true</verbose> 
  <targets>{nameServerWebLogic}</targets>
  <name>${project.build.finalName}</name>
 </configuration>
</plugin>


Deploy ke weblogic server menggunakan weblogic maven plugin *) Dari path project, jalankan perintah dibawah ini :
mvn weblogic:deploy –Dadminurl=t3://{serverHost}:7001 –Duser={userWebLogic} –Dpassword={password} –Dtargets={namaInstanceServer} –Dsource={path ke jar/war/ear} –Dname={namaAplikasi}

*) Note : apabila pada pom.xml sudah diset property adminurl, user, password, targets, name maka perintah deploy menjadi :
mvn weblogic:deploy –Dsource={path ke jar/war/ear}


Undeploy dari weblogic server menggunakan weblogic maven plugin
*) Dari path project, jalankan perintah dibawah ini :
mvn weblogic:undeploy –Dadminurl=t3://{serverHost}:7001 –Duser={userWebLogic} –Dpassword={password} –Dtargets={namaInstanceServer} –Dsource={path ke jar/war/ear} –Dname={namaAplikasi}

*) Note : apabila pada pom.xml sudah diset property adminurl, user, password, targets, name maka perintah deploy menjadi :
mvn weblogic:undeploy