Monday, March 31, 2014

Oracle BPM 11g MDS Error - Unable to Extend Table in Tablespace


Common error on BPM deployment and runtime is the engine cannot find a table or view and saying that it doesn't exist. Further investigation will result on the following error.


MDS-00001: exception in Metadata Services layer
MDS-00515: failure to save document /deployed-composites/default/ProjectName/businessCatalog/SchemaDataModule/XSD_NAME.xsd in the metadata repository 
 
ORA-01653: unable to extend table SCHEMANAME.TABLENAME by 1024 in tablespace TABLESPACENAME

This will mostly kill currently running application or fails a deployment.
Below is the solution that I take to solve the problem.

First, connect to your database as sysdba and execute this query.

select file_name,status from dba_data_files;

This query will return all the .dbf file location used by the system and its availability.
Find out the .dbf that produce the problem above. For my example, it will be soainfra table which file located on '/installPath/DEV1_soainfra.dbf'.

Take note on this location because we will use it for the next step.

Next step, execute this query and the location on highlighted 'part' based on the query above. Here's the example.


alter database datafile '/installPath/DEV1_soainfra.dbf' autoextend on maxsize unlimited;

That's it. We set the datafile to autoextend without maximum size so this problem will not reoccur. This should solve the problem on BPM application. Please note that due to the setting of unlimited autoextend, the server should have enough disk space to cater it.

Hope it helps. Cheers!

Thursday, March 27, 2014

Solving Oracle BPM 11g Composite Error - Could not locate composite. Runtime Operation Error

When you've worked on many BPM composites, deploying and undeploying it over and over, someway, you could encounter this following error in the log.

<Mar 20, 2014 11:03:30 AM WIT> <Error> <oracle.soa.services.workflow.task> <BEA-000000> <<.> Could not locate composite.
Could not locate composite for workflow component default/PROJECTNAME!1.3.1*soa_1d2b1813-58f0-4264-8581-85013cd8eaba/CompositeName.
Ensure composite has been successfully deployed, and that the SOA server has completed loading composites.

ORABPEL-30084

Could not locate composite.
Could not locate composite for workflow component default/PROJECTNAME!1.3.1*soa_1d2b1813-58f0-4264-8581-85013cd8eaba/CompositeName.

Ensure composite has been successfully deployed, and that the SOA server has completed loading composites.

When you check on Enterprise Manager console (http://host:port/em), the composite is already undeployed but the workspace is still trying to find it, thus producing the following error possibilities in the BPM workspace (http://host:port/bpm/workspace):

"Runtime Operation Error"
"Could not perform the batch operation"

This thing can impact many things, starting from simple thing like user annoyance and also major thing like unaccessible Process Tracking and altering due to Runtime Operation Error.

Annoying as it is, but the solution is very simple.

Use your DB browser and access SOAINFRA schema. There, open WFTASKMETADATA table and delete any unused composite that prompt the error on the log.

Restart your MS, then try to access BPM workspace. The error will be no more.
Hope it helps!


Tuesday, March 18, 2014

Memanfaatkan NonCatalogLogger untuk log aplikasi pada WebLogic Server

NonCatalogLogger merupakan class untuk membantu developer meng-integrasi-kan log dari aplikasi dengan file log server.

Untuk menggunakannya pada aplikasi yang berjalan diatas WebLogic Server, lakukan langkah-langkah berikut pada IDE JDeveloper 11.1.1.7:

1. Import class weblogic.logging.NonCatalogLogger

2. Gunakan construktor
  NonCatalogLogger(java.lang.String myApplication)
    untuk meng-instance sebuah object NonCatalogLogger.

3. Gunakan fungsi-fungsi dibawah ini :

    Untuk melakukan log-log informasi yang normal.
  info(java.lang.String msg)
  info(java.lang.String msg, java.lang.Throwable t)

    Untuk melakukan log-log peringatan namun tidak mengganggu jalannya aplikasi.
  warning(java.lang.String msg)
  warning(java.lang.String msg, java.lang.Throwable t) 

    Untuk melakukan log-log kesalahan aplikasi.
  error(java.lang.String msg)
  error(java.lang.String msg, java.lang.Throwable t)   

    Untuk melakukan log-log debug yang hanya muncul pada saat aplikasi berada pada mode debug.     debug(java.lang.String msg)
  debug(java.lang.String msg, java.lang.Throwable t)

4. Berikut contoh codenya :
public class MyLogServlet extends HttpServlet {
    
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
    }

    public void service(HttpServletRequest request,
                        HttpServletResponse response) throws ServletException,
                                                             IOException {

        PrintWriter out = response.getWriter();
        NonCatalogLogger myLogger = null;
        try {
            myLogger = new NonCatalogLogger("ProtoNonCatalogLogger");
            
            myLogger.info("Application started.");
            
            out.println("Testing NonCatalogLogger. See WLS Server log for output message");
            
            Environment env = new Environment();
            env.setProviderUrl("t3://localhost:7001");
            Context ctx = env.getInitialContext();
            
        } catch (Exception e) {
            out.println("Can't set initial context: " + e.getMessage());
            myLogger.warning("Can't establish connections. ", e);
        }

    }
}


5. Dan tambahkan library dari JDeveloper mengikuti gambar dibawah ini :

library untuk menggunakan NonCatalogLogger

6. Jalankan WebLogic Server, dan perhatikan log servernya. Ada entry log yang nama aplikasinya ProtoNonCatalogLogger.

log pada server 

log Server Log dari WebLogic Console

log Server Log dari WebLogic Console 2

log Server Log dari WebLogic Console 3

Dengan memanfaatkan NonCatalogLogger kita sudah dapat menggabungkan log aplikasi kita dengan log server. Di blog selanjutnya saya akan menulis tentang log aplikasi yang terpisah dengan log server.

Cheers, :)

Saturday, March 15, 2014

Konfigurasi Active Directory Provider pada WebLogic Server

Latar Belakang

Active Directory menurut wiki ialah layanan direktori yang dimiliki oleh sistem operasi jaringan Microsoft seperti Windows 2000 Server, Windows Server 2003, Windows Server 2008, Windows Server 2012. Active Directory terdiri dari basis data dan juga layanan direktori.

Basis data yang dimiliki oleh Active Directory menyimpan segala sumber daya yang terdapat di dalam jaringan, seperti halnya komputer yang telah tergabung ke sebuah domain, daftar akun pengguna dan kelompok pengguna, folder yang di-share, dan lain-lain. Sementara itu, layanan direktori yang dimilikinya membuat informasi yang disimpan di dalam basis data dapat diakses oleh pengguna dan aplikasi.

Server WebLogic memiliki internal Active Directory (Embedded LDAP) yang digunakan untuk menyimpan user default seperti weblogic.

Lalu, bagaimana bila ingin menggunakan Active Directory yang sudah ada sebagai sumber credential pada server WebLogic ?

Integrasi dengan WebLogic

WebLogic memiliki banyak Authentication Provider, salah satunya Active Directory Provider. Berikut ini contoh screenshoot untuk Active Directory Provider.
1. Buat Authentication Provider baru

2. Pilih ActiveDirectoryAuthenticator

3. Ubah Control Flag menjadi Optional

4. Isi host, port, principal, credential sesuai dengan server Active Directory

5. Isi field - field untuk mendapatkan user dari Active Directory

6. Isi field - field untuk mendapatkan grup dari Active Directory

7. Simpan konfigurasi










































































































Setelah konfigurasi selesai disimpan, restart server WebLogic setelah itu user dari Active Directory dapat dilihat di Security Realm -> myrealm -> Users and Groups.

Untuk mencoba login ke Enterprise Manager / WebLogic Console, tambahkan Global Roles pada Admin

1. Klik link View Role Condition pada Roles and Policies -> Global Roles -> Roles -> Admin

2. Klik tombol Add Condition

3. Pilih User dari drop down Predicate List, lalu klik tombol Next
4. Isi nama user di field User Argument Name, lalu klik tombol Add dan Finish
5. Klik tombol Save

















































Kemudian coba login ke Enterprise Manager / WebLogic Console menggunakan username yang tadi sudah ditambahkan, selamat mencoba. :)

Active-Passive HAProxy with Keepalived


Beberapa waktu lalu, saya sempat membahas mengenai ZenLB, yaitu load balancer appliance yang berbasiskan Debian. Kali ini saya ingin mencoba alternatif software-based load balancer lainnya yang bernama HAProxy. HAProxy merupakan software load balancer yang sangat handal, di mana banyak sekali digunakan oleh penyedia layanan Internet besar seperti GitHub, Imgur, Instagram, Reddit, Stack Overflow, ServerFault, Tumbler, Twitter, dan masih banyak lagi. Tidak seperti ZenLB, HAProxy bukan merupakan sebuah appliance, sehingga dapat dikonfigurasi ke OS yang sudah ada.

Load balancer seperti HAProxy merupakan komponen penting dalam high availability deployment, di mana load balancer menjadi pintu gerbang utama dari semua request user ke aplikasi. Sehebat apapun aplikasi, tapi jika suatu ketika load balancer down, maka aplikasi juga tidak dapat diakses oleh user. Untuk itulah diperlukan setidaknya 2 load balancer yang saling menggantikan ketika salah satu proses/mesin menjadi down.

Keepalived merupakan routing software yang dapat dikombinasikan dengan HAProxy untuk dapat menghasilkan solusi high availability pada level load balancer. Keepalived bekerja dengan cara terus-menerus memonitor proses HAProxy di masing-masing node. Secara default, master node akan memegang virtual IP (VIP) dan akan menjadi node yang aktif. Ketika proses HAProxy di master node menjadi down dan tidak dapat di-restart kembali, Keepalived akan mendeteksi hal tersebut dan akan memindahkan VIP aktif ke backup node. Setelah backup node memiliki VIP, proses HAProxy pada backup node akan di-restart/reload kembali secara otomatis.

Pada blog kali ini, saya ingin mencoba mengkonfigurasi 2 instance HAProxy dan Keepalived pada 2 mesin Linux. Saya tidak mengkompilasi HAProxy dan Keepalived dari source code, namun saya download paket RPM dan menginstalasi melalui command rpm.

Instalasi dan Konfigurasi Keepalived


Download paket RPM untuk Keepalived dan instal pada kedua mesin.
[root@machine1 ~] # wget -c http://svn.riviera.org.uk/repo/RPMS/keepalived/RPMS/x86_64/keepalived-1.2.1-5.el5.x86_64.rpm
[root@machine1 ~] # rpm -ivh keepalived-1.2.1-5.el5.x86_64.rpm
Preparing...                 ################################################### [100%]
   1:keepalived              ################################################### [100%]
[root@machine1 ~] # service keepalived status
keepalived is stopped
Backup file /etc/sysctl.conf kemudian tambahkan 2 baris berikut di akhir file /etc/sysctl.conf di kedua mesin.
...
# HAProxy - Keepalived VIP
net.ipv4.ip_nonlocal_bind = 1
Baris tersebut berperan dalam perpindahan VIP antara machine1 dan machine2. Refresh perubahan parameter kernel tersebut dengan command berikut pada kedua mesin.
[root@machine1 ~] # sysctl -p
Backup file /etc/keepalived/keepalived.conf dan buat menjadi seperti ini pada master node (machine1):
vrrp_script chk_haproxy {  # Requires keepalived-1.1.13
 script "killall -0 haproxy" # cheaper than pidof
 interval 2   # check every 2 seconds
 weight 2   # add 2 points of prio if OK
}

vrrp_instance VI_1 {
 interface eth0
 state MASTER
 virtual_router_id 51
 priority 101   # 101 on master, 100 on backup
 virtual_ipaddress {
  192.168.0.100
 }
 track_script {
  chk_haproxy
 }
}
Lakukan hal serupa pada backup node (machine2), namun ada sedikit perubahan pada bagian priority dan state:
vrrp_script chk_haproxy {  # Requires keepalived-1.1.13
 script "killall -0 haproxy" # cheaper than pidof
 interval 2   # check every 2 seconds
 weight 2   # add 2 points of prio if OK
}

vrrp_instance VI_1 {
 interface eth0
 state BACKUP
 virtual_router_id 51
 priority 100   # 101 on master, 100 on backup
 virtual_ipaddress {
  192.168.0.100
 }
 track_script {
  chk_haproxy
 }
}
Restart proses Keepalived pada kedua mesin.
[root@machine1 ~] # service keepalived restart
Validasi konfigurasi dengan melihat IP address di masing-masing mesin. Jika proses Keepalived sedang berjalan di kedua mesin, maka VIP address 192.168.0.100 akan berada di machine1. VIP address akan berpindah ke machine2 jika proses Keepalived pada machine1 dinonaktifkan. Berikut adalah contoh output pada machine1 ketika VIP berada di machine1.
[root@machine1 ~] # ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 08:00:27:69:8e:3e brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.193/24 brd 192.168.0.255 scope global eth0
    inet 192.168.0.100/32 scope global eth0
Pada kondisi kedua Keepalived berjalan, machine2 akan memiliki output tanpa VIP address.
[root@machine2 ~] # ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 08:00:27:25:2b:8c brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.192/24 brd 192.168.0.255 scope global eth0
Perpindahan VIP dapat diamati dari /var/log/messages.

Instalasi dan Konfigurasi HAProxy


Download paket RPM untuk HAProxy dan instal pada kedua mesin.
[root@machine1 ~] # wget -c http://svn.riviera.org.uk/repo/RPMS/haproxy/RPMS/x86_64/haproxy-1.4.10-1.el5.x86_64.rpm
[root@machine1 ~] # rpm -ivh haproxy-1.4.10-el5.x86_64.rpm
Preparing...                 ################################################### [100%]
   1:haproxy                 ################################################### [100%]
[root@machine1 ~] # service haproxy status
haproxy is stoppped
Backup file /etc/haproxy/haproxy.conf dan buat menjadi seperti ini pada kedua mesin: (sesuaikan backend server dengan kebutuhan, pada kasus ini saya membuat HAProxy menjadi frontend untuk salah satu WebLogic AdminServer yang ada)
global
 log 127.0.0.1 local0
 log 127.0.0.1 local1 notice
        maxconn 4096
        user haproxy
        group haproxy

defaults
 log global
 option dontlognull
 option redispatch
 retries 3
 maxconn 2000
 contimeout 500000
 clitimeout 500000
 srvtimeout 500000

listen blogadmin.nostratech.com 192.168.0.100:7001
        mode tcp
        option tcplog
        server adminserver blogadminvhn.nostratech.com:7001 check
Saya mengisi listen IP address untuk entry blogadmin.nostratech.com dengan VIP address yang telah saya siapkan dengan Keepalived sebelumnya. Untuk keamanan, proses HAProxy akan dijalankan oleh user dedicated, haproxy. Buat user dan group yang bernama haproxy pada kedua mesin.
[root@machine1 ~] # useradd haproxy
[root@machine1 ~] # id haproxy
uid=54322(haproxy) gid=54323(haproxy) groups=54323(haproxy)
Restart proses HAProxy pada kedua mesin.
[root@machine1 ~] # service haproxy restart
Sekarang saatnya pengujian. :)

Pengujian HAProxy dan Keepalived


Buka browser kemudian coba akses VIP dan listen port yang telah kita spesifikasikan pada file /etc/haproxy/haproxy.conf yaitu http://192.168.0.100:7001/console.
HAProxy pada machine1 menjadi frontend AdminServer
Simulasikan proses HAProxy pada machine1 down dengan cara menghentikan proses HAProxy pada machine1.
[root@machine1 ~] $ service haproxy stop
Akses kembali alamat yang sama, seharusnya masih dapat diakses.
HAProxy pada machine2 menjadi frontend AdminServer
Jika masih bisa diakses, selamat konfigurasi Anda berhasil. :) Selamat mencoba!

Tutorial Liferay Part 2

Melanjutkan tutorial sebelumnya, saat ini kita akan membuat user di liferay web portal.

Pada bagian kiri bawah, terdapat link untuk Create Account, klik link tersebut untuk membuat user di Lireray Portal.

Setelah kita mengisi mandatory data, klik tombol save.

Liferay akan men-generate password default. Untuk login pertama kali, gunakan password default tersebut.

Pada bagian term, klik I Agree button.

Karena kita login dengan password default, kita akan di minta membuat password baru, klik tombol Save jika sudah selesai.

Password Reminder digunakan jika kita lupa password kita sebagai bentuk keabsahan identitas diri. Klik tombol Save jika sudah selesai.

Berikut adalah halaman utama dari user yang telah login. Untuk selanjutkan kita ada meng-edit user kita.

Pilih tombol panah kebawah yang terletak di pojok kanan atas, lalu pilih My Account.

Disini kita akan menambahkan foto profile. Klik tombol change.

Klik Choose File lalu pilih gambar yang ada di hard disk kita. Setelah selesai klik tombol Save.

Sekali lagi klik tombol Save untuk menyelesaikan perubahan profile kita.

Setelah kita berhasil melakukan perubahan data, muncul gambar kecil yang merupakan foto dari profile yang berhasil kita tambahkan.

Yiiipiie... saat ini kita berhasil membuat user dan meng-edit profile. Selanjutkan kita akan membahas lebih dalam tentang liferay portal. Tunggu blog saya selanjutnya.

Tutorial Liferay Part 1

Sebelum kita membahas tentang Liferay Portal, kita akan berbicara tentang Portal.

Apa itu portal ?
Portal atau yang biasa kita sebut web portal adalah sebuah web yang mampu mengakomodasi kebutuhakan perusahaan, seperti :

  • Web Platform
  • Content Management System
  • Integration Platform
  • Collaboration Platform
  • Social Platform
Banyak sekali produk web portal yang ada, seperti :
Kenapa Liferay ?
Liferay salah satu market leader untuk web portal dan memiliki kelebihan, seperti :
  • User Friendly
  • Business Friendly
  • Developer Friendly
Terlebih lagi Liferay memiliki 2 versi, yaitu versi berbayar dan open source. Hal ini lah yang menyebabkan saya tertarik mempelajari lebih dalam tentang Liferay Web Portal.


Tanpa membuang waktu lagi mari kita mulai dengan :

Liferay Installation
Proses instalasi liferay sangat mudah, apalagi jika kita install dengan bundle application server. Berikut cara instalasi liferay web portal :

  1. Download liferay disini.
  2. Pilih liferay dengan versi yang terbaru yang di bundle dengan tomcat.
  3. Klik tombol Download dan tunggu beberapa saat.
  4. Extract file tersebut.
  5. Masuk ke directory tomcat-nya, contoh 
    cd /Users/yukibuwana/Liferay/liferay-portal-6.2.0/tomcat-7.0.42/bin
  6. Jalankan perintah berikut, ./startup.sh dan tunggu beberapa saat.
  7. Untuk memastikan liferay sudah jalan atau belum, lihat file log-nya dengan perintah berikut, tail -1000f /Users/yukibuwana/Liferay/liferay-portal-6.2.0/tomcat-7.0.42/logs/catalina.out
  8. Tunggu hingga ada log berikut
  9. Saat liferay pertama kali di jalankan, ada Basic Configuration yang akan dijalankan. Di bagian ini kita akan memilih database yang akan kita pakai, sample portal dan administrator user.
  10. Klik tombol finish configuration jika sudah selesai.
  11. Tunggu beberapa saat hingga muncul tombol Goto My Portal.
  12. Klik accept term untuk melanjutkan konfigurasi.
  13. Selanjutkan kita akan mengisi password Administrator User di lanjutkan dengan password reminder.
  14. Dan wooopla... kita sudah ada di halaman utama portal



Yups... kita sudah bisa menajalankan liferay web portal. Next tutorial kita akan membahas tentang pembuatan user portal.

Create WebService using Jdeveloper



Web service menurut W3.org mendefinisikan web service sebagai “sebuah software aplikasi yang dapat teridentifikasi oleh URI dan memiliki interface yang didefiniskan, dideskripsikan, dan dimengerti oleh XML dan juga mendukung interaksi langsung dengan software aplikasi yang lain dengan menggunakan message berbasis XML melalui protokol internet”.

Web service adalah sebuah sofware aplikasi yang tidak terpengaruh oleh platform, ia akan menyediakan method-method yang dapat diakses oleh network. Ia juga akan menggunakan XML untuk pertukaran data, khususnya pada dua entities bisnis yang berbeda.



  1. Buka Jdeveloper buat new Application
  2. Create new project pilih Generic Project dan berikan nama HelloServices

  3. Create java class dengan nama class "Hello" dan tambahkan method "getName" seperti gambar di bawah :

  4. Lalu klik kanan di Hello.java klik "Create Web Service"
  5. Silahkan isi seperti berikut :
  6. Lalu pilih method yang akan di expose menjadi web services dan klik finish

  7. Dan akan muncul annotation @WebService, lalu tambahkan @WebParam(name = "id") seperti gambar dibawah.

  8. Nah tahap sekarang marik kita test webservice  nya. Klik kanan di file hello.java

  9. Maka akan muncul tab seperti dibawah, Operations merukapan list method yang kita expose tadi. Selanjutnya langsung isi paramater dan klik send request maka hasil  response akan muncul di sebelah kanan :D


 Selanjutnya kita buat Web Service Proxy yang berfungsi untuk menghubungkan java client dengan web service bisa saling berkomunikasi. Proxy di Jdeveloper tsb akan men-Generate class-class yang dibutuhkan. Untuk detailnya bisa cari di google :D

  1. Langkah Pertama create new project dan pilih Web Service Proxy
  2. Pergunakan wsdl dari web service yang telah kita buat.
  3. Maka hasilnya akan seperti ini :
Nah sekarang kita generate model dr xsd ke java class menggunakan JAXB.

  1. Create New Project, pilih xml schema.
     <?xml version="1.0" encoding="ISO-8859-1" ?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                xmlns="http://www.nostratech.org"
                targetNamespace="http://www.nostratech.org"
                elementFormDefault="qualified">
      <xsd:element name="bookElement">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="book" type="bookType" maxOccurs="unbounded"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:complexType name="bookType">
        <xsd:sequence>
          <xsd:element name="title" type="xsd:string"/>
          <xsd:element name="bookID" type="xsd:string"/>
        </xsd:sequence>
      </xsd:complexType>
    </xsd:schema>
  2. Klik kanan di file xml tsb dan klik Generate JAXB, Maka secara otomatis akan mengenerate class berdasarkan xsd tsb beserta annotation. Dan tentu saja akan mempermudah kita :D
  3. lalu di class hello di tambahkan method ini :

        public void setBook(BookElement be){
            BookType bt=new BookType();
            be.book.add(bt);
            
        
    
        }
  4. Lalu test web service dan pilih operation setBook
Terima Kasih :). Selamat Mencoba ^_^

Referensi :
http://hamdani.blog.ugm.ac.id/2011/07/15/apa-itu-web-service/

WLST in Java

hallo,

Pada blog kali ini saya akan menulis bagaimana menggunakan WLST command di java dengan studi kasus menambahkan group di user LDAP.

Langsung mulai saja WLST adalah :

The WebLogic Scripting Tool (WLST) is a command-line scripting interface that system administrators and operators use to monitor and manage WebLogic Server instances and domains. The WLST scripting environment is based on the Java scripting interpreter, Jython. In addition to WebLogic scripting functions, you can use common features of interpreted languages, including local variables, conditional variables, and flow control statements. WebLogic Server developers and administrators can extend the WebLogic scripting language to suit their environmental needs by following the Jython language syntax. See http://www.jython.org
Nah langsung saja pertama - tama saya membuat class dengan nama WLSTUtil.

  • WLSTIntepreter berfungsi untuk wrapper Jython interpreter. Sehingga java client dapat menjalankan WLST 
  • execute commend berfungsi untuk mengeksekusi syntax jython.

package wlst;
import org.python.util.InteractiveInterpreter;

import weblogic.management.scripting.utils.WLSTInterpreter;

public class WLSTUtil {
    private InteractiveInterpreter interpreter;
    
    private String weblogicUser="weblogic";
    private String weblogicPassword="welcome1";
    private String weblogicURL="192.168.1.159:7001";
   
    public WLSTUtil() {
        super();
        interpreter = new WLSTInterpreter();
    }

  

    public void disConnect() {
        StringBuffer buffer = new StringBuffer();
        buffer.append("disconnect(force='true')\n");
        this.interpreter.exec(buffer.toString());
    }

    public void connect() {
        StringBuffer buffer = new StringBuffer();
        buffer.append("connect('" + this.weblogicUser + "','" + this.weblogicPassword +
                      "','" + this.weblogicURL + "')");
        
        this.interpreter.exec(buffer.toString());
        }

    public  void execute_command (String cmd) {
      StringBuffer buffer = new StringBuffer();
      System.out.println ("* Execute WLST command : " + cmd );
      buffer.append(cmd);
      interpreter.exec(buffer.toString());
      System.out.println ("* Executed");
  }



}

Dengan class diats kita sudah bisa terhubung dengan WLST, Saya akan memberikan contoh menambahkan menambah group ke user tertentu.


    public void addUserToGroup(String username) {
        WLSTUtil wlstUtil;
        wlstUtil = new WLSTUtil();
        wlstUtil.connect();
        wlstUtil.execute_command("serverConfig()");
        wlstUtil.execute_command("print 'Lookup DefaultAuthenticator' ");
        wlstUtil.execute_command("cmoDefaultAuthenticator=cmo.getSecurityConfiguration().getDefaultRealm().lookupAuthenticationProvider('DefaultAuthenticator')");
        wlstUtil.execute_command("cmoDefaultAuthenticator.addMemberToGroup('" +
                                 this.groupName + "','" + username + "')");
        wlstUtil.disConnect();
    }

    public static void main(String[] args) {
        ServiceSetGroup serviceSetGroup = new ServiceSetGroup();
        serviceSetGroup.addUserToGroup("andre");
    }

Diatas merupkan contoh scipting jython yang di panggil menggunakan java client. Selain itu jg kalian bisa create, configure dan manage weblogic domain menggukan WLST.

Demikian blog dari saya, semoga bermanfaat :)



sumber :
http://docs.oracle.com/cd/E21764_01/web.1111/e13715/using_wlst.htm#autoId0

Transfer Comment & Attachment On Oracle BPM With Different Process Part 2

Blog ini merupakan kelanjutan dari Transfer Comment & Attachment On Oracle BPM With Different Process. Sebagai review, pada kesempatan sebelum nya kita sudah membuat semua BO dan DO serta Argument yang akan sangat diperlukan pada blog kali ini.
  1. Setelah kita selesai membuat Argument pada Start node dan End node, maka kita akan membuat mapping agar data bisa mengalir sesuai dengan yang kita harapkan.  Buka implementation pada Start Node kemudian pilih Data Associations. Tarik node Data ke DataDO, kemudian pada node AttachmentDO klik kanan kemudian pilih XSL Tranformation. Beri nama file xsl yang akan anda buat untuk mempermudah mengolah data. Kemudian pilih Ok. Setelah keluar dari tampilan Properties Start, maka akan muncul file xsl yang telah kita buat tadi. Tarik sesuai dengan gambar yang telah saya post. Ketika keluar window Auto Map Preferences, langsung klik Ok untuk secara otomatis melakukan mapping.








  2. Setelah selesai, klik kanan pada task yang sudah kita buat tadi, kemudian properties dan pilih tab implementation. Pilih Data Association dan kemudian pilih tab Input, kemudian tarik DataDO ke data dan buat mapping dengan menggunakan metode xsl transformation pada node exedata, mengambil reference data dari AttachmentDO. Setelah selesai, buka tab Output, kemudian tarik data ke DataDO, kemudian buat xsl transformation pada node AttachmentDO dan mengambil reference data dari execdata. Setelah selesai 2 hal tersebut, Klik Ok kemudian tarik mappingan dari node task ke task dalam file xsl yang telah kita buat tadi.









  3. Setelah selesai melakukan Mapping, klik kanan node End kemudian pilih implementation dan pilih Data Association tarik node DataDO ke Data dan AttachmentDO ke Attachment. Kemudian deploy project AttachmentSub.

  4. Setelah selesai mendeploy project anda, maka buka Enterprise Manager anda, cari project AttachmentSub, kemudian pilih menu testing. Setelah memilih menu testing, copy link WSDL service untuk kita gunakan di dalam project AttachmentMain.

  5. Buka kembali project AttachmentMain anda, kemudian buka composite.xml anda, tambahkan vitur WebService, kemudian paste link WSDL yang telah kita copy tadi.


  6. Simpan semua file project anda, kemudian buka prosess AttachmentMain, klik kanan di SendTask yang sudah kita buat di awal tadi dan pilih properties, setelah itu pilih implementation. Pilih type nya menjadi Service Call, kemudian klik gambar magnifier untuk memilih service yang telah kita masuk kan tadi. (Jika service tidak muncul setelah kita tambahkan WebService dalam composite.xml nya silahkan restart JDeveloper anda) Setelah memilih nama Service yang sesuai, kemudian klik Data Association, buat xsl transformation pada node start, pilih reference datanya dari DataDO dan AttachmentDO. Setelah itu mapping data pada file xsl sesuai dengan yang saya buat.






  7. Setelah selesai, Klik kanan pada Receive Task, pilih properties dan pilih tab Implementation, kemudian pilih type nya menjadi Service, kemudian klik tombol kacapembesar untuk melihat service yang telah kita buat sebelum nya. Setelah itu klik Data Association, buat file xsl pada node AttachmentDO dengan mengambil data dari endResponse. Lalu mapping Data yang tersisa seperti gambar yang saya buat.





  8. Klik kanan pada task yang pertama kali kita buat dalam process AttachmentMain, kemudian pilih properties dan pilih tab Implementation, lalu klik DataAssociation. Pada tab Output, tarik data ke DataDO, kemudian buat xsl transformation pada node AttachmentDO, dengan menggunakan reference data dari execData. Tarik mappingan sesusai dengan gambar.



  9. Pada Usertask kedua yang telah kita buat klik kanan, kemudian pilih properties dan pilih tab implementation dan klik Data Association. Setelah itu pilih tab Input lalu tarik DataDO ke Data, kemudian buat file xsl pada node execData dengan menggunakan refrence data dari AttachmentDO. Tarik Mapping sesuai dengan gambar.




  10. Setelah selesai, deploy AttachmentMain anda, jangan lupa untuk membuat UI nya yah.. ^__^Namun belum selesai sampai disini. Akan ada 2 hasil yang terjadi. 
  • Pertama, jika anda tidak menggunakan UCM pada setiap Task yang telah anda buat, maka Comment dan Attachment akan terjadi duplikasi di setiap proses transfer balik data (Main > Sub >Main) duplikasi akan terjadi pada proses Main yang terakhir.
  • Kedua, jika anda menggunakan UCM pada setiap Task yang telah anda buat, makan tidak akan ada terjadi duplikasi pada setiap proses.
Best Practice : Selalu gunakan UCM agar tidak terjadi duplikasi comment dan attachment.
Untuk mengaktifkan UCM, klik kanan pada usertask yang ingin di aktifkan UCM nya, kemudian pilih open human task, dan pilih Documents, checklist Use Document Package. Setelah itu akan muncul 2 data, pada SecurityGroup pilih Valuenya dengan menggunakan Expression, lalu tambahkan kata PersonalSpaces. Lalu pada DocumentType, pilih Valuenya dengan menggunakan Expression, lalu tambahkan kata Document.


Sekian Blog dari saya. Semoga membantu !