Sunday, December 15, 2013

Simplified Node Manager Setup


Peran Node Manager terhadap WebLogic domain sangat penting. Beberapa fungsinya telah saya sampaikan juga pada artikel saya sebelumnya mengenai WebLogic Whole Server Migration. Setelah beberapa kali melakukan konfigurasi WebLogic domain secara lengkap dan terinspirasi dari 2 artikel dari Middleware Magic (di sini dan di sini), saya mengompilasi cara yang sederhana dan dinamis untuk mempersiapkan Node Manager. Dengan menjalankan prosedur berikut, kita dapat menjalankan proses AdminServer tanpa menggunakan perintah nohup. ;) Prosedurnya dapat dibagi menjadi 2 prosedur utama, yaitu persiapan Node Manager dan asosiasikan Node Manager dengan WebLogic Domain.


Persiapan Node Manager


Node Manager secara default letaknya menyatu dengan letak instalasi WebLogic. Untuk menyederhanakan administrasi dan operasional, kita akan memisahkan letak Node Manager home. Selain itu kita juga akan mempersiapkan file-file tambahan yang dibutuhkan Node Manager. Berikut adalah langkah-langkahnya:
  1. Buat Node Manager home (NODEMGR_HOME) baru di luar instalasi WebLogic (MW_HOME).
  2. Copy 2 Shell script setWLSEnv.sh dan startNodeManager.sh dari lokasi instalasi WebLogic  Server (MW_HOME/wlserver_10.3/server/bin) ke Node Manager home.
  3. Edit script startNodeManager.sh, sesuaikan variabel NODEMGR_HOME dengan lokasi Node Manager home yang baru pada langkah 1. Saya biasanya menggunakan lokasi /u02/app/oracle/admin/nodemanager sebagai NODEMGR_HOME.
    ...
    NODEMGR_HOME="/u02/app/oracle/admin/nodemanager"
    ...
    
  4. Buat file nodemanager.domains di dalam NODEMGR_HOME yang berisi  pasangan nama WebLogic domain dengan lokasi domain-nya di filesystem, contohnya seperti berikut ini:
    # DOMAIN_NAME=DOMAIN_HOME
    Access_Domain=/u01/app/oracle/admin/Access_Domain/aserver/Access_Domain
    
  5. Buat file nodemanager.properties di dalam NODEMGR_HOME yang berisi property-property yang diperlukan untuk menjalankan Node Manager. File property tersebut bisa juga di-copy dari lokasi default-nya jika sudah tersedia. Bagian terakhir dari file properties diberi tanda comment (#), kecuali jika kita perlu mengkonfigurasi fitur WebLogic Server Migration.
    # Minimal Node Manager properties
    DomainsFile=/u02/app/oracle/admin/nodemanager/nodemanager.domains
    LogLimit=0
    PropertiesVersion=10.3
    DomainsDirRemoteSharingEnabled=false
    javaHome=/u01/app/oracle/product/fmw/jrockit-jdk1.6.0
    AuthenticationEnabled=true
    NodeManagerHome=/u02/app/oracle/admin/nodemanager
    JavaHome=/u01/app/oracle/product/fmw/jrockit-jdk1.6.0/jre
    LogLevel=INFO
    DomainsFileEnabled=true
    StartScriptName=startWebLogic.sh
    ListenAddress=
    NativeVersionEnabled=true
    ListenPort=5556
    LogToStderr=true
    SecureListener=true
    LogCount=1
    DomainRegistrationEnabled=true
    StopScriptEnabled=false
    QuitEnabled=false
    LogAppend=true
    StateCheckInterval=500
    CrashRecoveryEnabled=false
    StartScriptEnabled=true
    LogFile=/u02/app/oracle/admin/nodemanager/nodemanager.log
    LogFormatter=weblogic.nodemanager.server.LogFormatter
    ListenBacklog=50
    
    # WebLogic Server Migration
    #Interface=eth0
    #NetMask=255.255.255.0
    #UseMACBroadcast=true
    
  6. Buat script Python NodeManager.py di dalam NODEMGR_HOME yang isinya adalah script WSLT untuk menjalankan proses Node Manager.
    # Start Node Manager
    startNodeManager()
    
  7. Buat script Python AdminServer.py di dalam NODEMGR_HOME yang isinya adalah script WLST untuk connect dengan proses Node Manager dan menjalankan proses WebLogic AdminServer.
    # Import necessary libraries
    from java.io import FileInputStream
    import java.lang
    import os
    import string
    
    # Load WebLogic Domain properties file
    propInputStream = FileInputStream("AdminServer.properties")
    configProps = Properties()
    configProps.load(propInputStream)
    
    # Connect to Node Manager
    userConfigFile = configProps.get("nm.config")
    userKeyFile = configProps.get("nm.key")
    host = configProps.get("nm.host")
    port = configProps.get("nm.port")
    nmType = configProps.get("nm.type")
    domainName = configProps.get("domain.name")
    domainDir = configProps.get("domain.dir")
    nmConnect(userConfigFile=userConfigFile, userKeyFile=userKeyFile, host=host, port=port, domainName=domainName, domainDir=domainDir, nmType=nmType)
    
    # Start WebLogic Server instance
    serverName = configProps.get("server.name")
    nmStart(serverName)
    
  8. Persiapkan file properties AdminServer.properties yang akan dibaca oleh script AdminServer.py untuk menjalankan AdminServer.
    # Node Manager connection info
    nm.config=/u02/app/oracle/admin/nodemanager/security/NodeManagerConfig.properties
    nm.key=/u02/app/oracle/admin/nodemanager/security/NodeManagerKey.secure
    nm.host=localhost
    nm.port=5556
    nm.type=ssl
    
    # WebLogic Domain info
    domain.name= Access_Domain
    domain.dir=/u01/app/oracle/admin/Access_Domain/aserver/Access_Domain
    
    # WebLogic instance name
    server.name=AdminServer
    
  9. Jalankan proses Node Manager dan pastikan tidak ada error yang terjadi di log output-nya.
    oracle@dev.nostratech.com:~ $ cd /u02/app/oracle/admin/nodemanager
    oracle@dev.nostratech.com:/u02/app/oracle/admin/nodemanager $ . ./setWLSEnvh.sh
    oracle@dev.nostratech.com:/u02/app/oracle/admin/nodemanager $ java weblogic.WLST NodeManager.py


Asosiasi Node Manager dengan WebLogic Domain


Ketika melakukan konfigurasi sebuah WebLogic Domain, Node Manager juga akan terkonfigurasi secara otomatis. Namun karena pada bagian sebelumnya konfigurasi Node Manager dipisahkan dari WebLogic Domain, maka kita harus mengkonfigurasi username dan password Node Manager untuk terhubung ke WebLogic Domain. Lakukan langkah-langkah berikut:
  1. Login ke Oracle WebLogic Administration Console.
  2. Pilih $NAMA_DOMAIN -> Security -> Advanced. Ubah Node Manager username dan password pada halaman tersebut. Simpan perubahan dengan memilih Save.
    Setup Node Manager Credential
  3. Login ke AdminServer melalui WLST, kemudian asosiasikan dengan Node Manager.
    wls:/offline> connect('weblogic', 'secret', 't3://accessadminvhn.nostratech.com:7001')
    wls:/Access_Domain/serverConfig> nmEnroll('/u01/app/oracle/admin/Access_Domain/aserver/Access_Domain')
  4. Buat sebuah Machine yang merupakan representasi dari Node Manager tersebut.
    Konfigurasi Machine OAMHOST1
  5. Test status Node Manager melalui WebLogic Administration Console dengan memilih Environment -> Machines -> $MACHINENAME -> Monitoring -> Node Manager Setup.
    Reachable Node Manager
  6. Generate Node Manager credential dalam bentuk yang terenkripsi melalui WLST, sesuaikan lokasi direktori dengan yang tertera pada file AdminServer.properties.
    wls:/offline> nmConnect('nodemanager', 'secret', 'localhost', '5556', 'Access_Domain', '/u01/app/oracle/admin/Access_Domain/aserver/Access_Domain', 'ssl')
    wls:/nm/Access_Domain> storeUserConfig('/u02/app/oracle/admin/nodemanager/security/NodeManagerConfig.properties', '/u02/app/oracle/admin/nodemanager/security/NodeManagerKey.secure', 'true')

Menjalankan AdminServer melalui Node Manager


Semua konfigurasi yang diperlukan sudah selesai, sekarang saatnya untuk menguji coba konfigurasi kita. Pastikan semua proses Java kita akhiri terlebih dahulu. Untuk menjalankan AdminServer, lakukan langkah berikut:
  1. Setup environment variable yang diperlukan.
    oracle@dev.nostratech.com:~ $ export JAVA_OPTIONS="-DDomainRegistrationEnabled=true"
  2. Jalankan Node Manager sebagai daemon.
    oracle@dev.nostratech.com:~ $ cd /u02/app/oracle/admin/nodemanager
    oracle@dev.nostratech.com:/u02/app/oracle/admin/nodemanager $ java weblogic.WLST NodeManager.py
  3. Jalankan AdminServer via Node Manager.
    oracle@dev.nostratech.com:/u02/app/oracle/admin/nodemanager $ java weblogic.WLST AdminServer.py

Biarkan perintah tersebut berjalan, dan jika tidak ada error seharusnya AdminServer sudah berjalan secara daemon. Sekian pembahasan untuk kali ini, jika ada isu dalam menjalankan langkah-langkah tersebut, silahkan tinggalkan komentar Anda.

Semoga bermanfaat! :)


Saturday, December 14, 2013

Sentralisasi Hibernate Cache dengan Terracotta/Ehcache

ORM cache diperlukan untuk mengurangi akses ke database, yaitu untuk pengaksesan data yang sama berulang kali.

Defaultnya, hibernate telah menerapkan caching pada level Session (L1). artinya, cache tersebut hanya digunakan oleh 1 user, dalam 1 proses transaksi. Bagaimana untuk menerapkan caching untuk multi-user (multi-session)?

Untuk kasus demikian, perlu diterapkan caching pada level SessionFactory (L2). 1 aplikasi memiliki 1 SessionFactory yang menghandle setiap Session pada aplikasi.

Kemudian dalam pengembangannya, untuk penerapan aplikasi enterprise, tidak menutup kemungkinan adanya 'kerja sama' antar aplikasi untuk mengolah suatu proses bersama. dan tidak menutup kemungkinan pula adanya share data yang sama. Pertanyaan berikutnya, bagaimana cara untuk menerapkan cache untuk multi-aplikasi?

Untuk kasus demikian, kita bisa membuat suatu sentralisasi cache di mesin tertentu. Cache ini bisa berupa memcache (data tersimpan di memory) atau disk cache (data tersimpan di disk).

Pada penerapan memcache, dibutuhkan RAM yang besar karena data tersimpan di RAM. karena disimpan di RAM, jika mesin mati, maka cache akan hilang. Sedangkan pada penerapan disk cache, dibutuhkan harddisk yang besar karena data tersimpan di harddisk dan keuntungannya adalah cache akan tetap tersimpan jika mesin mati.

Sebagai bahan perbandingan, bisa baca juga artikel ini http://surniaulula.com/2012/12/04/memcached-vs-disk-cache/.

Sentralisasi cache ini konsepnya adalah meletakkan cache di mesin/alamat tertentu, dan tiap aplikasi yang ingin menggunakannya bisa mengeset L2 cachenya ke alamat tersebut. Dengan demikian, tiap aplikasi akan menggunakan cache yang sama dan konsistensi data tetap terjaga.

Yang akan kita gunakan di sini adalah penggunaan disk cache dengan terracotta bigmemory.

PRE-REQUISITES:
- bigmemory-max-4.0.2 distribution

LIBRARIES:
- maven repository: terracotta-releases http://www.terracotta.org/download/reflector/releases
- org.hibernate.hibernate-core-4.1.12.Final
- org.hibernate.hibernate-ehcache-4.1.12.Final - exclusion: net.sf.ehcache.ehcache-core
- net.sf.ehcacheehcache-ee-2.7.0
- org.hibernate.javax.persistence.hibernate-jpa-2.0-api-1.0.1.Final
- org.slf4j.slf4j-jdk14-1.6.6
- org.terracotta.bigmemory-4.0.2
- org.terracotta.terracotta-toolkit-runtime-ee-4.0.2

DOWNLOADS:
- http://terracotta.org/downloads/bigmemorymax/free

STEP BY STEP CONFIGURATION
SERVER SIDE:
1. download bigmemorymax, mesti download sendiri karena di situ ada license key
2. terracotta-license.key (yg didapat dari email dari terracotta) diletakkan di BigMemory Max Free home directory
3. taruh bigmemory-max home directory ke server
4. edit bigmemory-max-4.0.2/server/tc-config.xml, host disesuaikan dengan ip server
5. utk menyalakan: bigmemory-max-4.0.2/server/bin/start-tc-server.sh (unix) atau start-tc-server.bat (win)

CLIENT SIDE CONFIGURATION
1. set repository dan dependency tiap aplikasi
2. set di hibernate config:
 <property name="hibernate.cache.use_second_level_cache">true</property>  
 <property name="hibernate.cache.use_query_cache">true</property>  
 <property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory</property>  
 <property name="hibernate.cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</property>  
 <property name="hibernate.generate_statistics">true</property>  
 <property name="hibernate.cache.use_structured_entries">true</property>  
 <property name="net.sf.ehcache.configurationResourceName">${ehcache-config-location}</property>  

3. set di ehcache config:
 <!-- default -->  
 <defaultCache maxElementsInMemory="0" eternal="false" statistics="true">  
   <cacheEventListenerFactory class="net.sf.ehcache.event.TerracottaCacheEventReplicationFactory" />  
   <terracotta clustered="true" />  
 </defaultCache>  
 <!-- cache per entity -->  
 <cache name="com.nostra.entity.Class" eternal="false" statistics="true" >  
   <cacheEventListenerFactory class="net.sf.ehcache.event.TerracottaCacheEventReplicationFactory" />  
   <terracotta consistency="eventual" />  
 </cache>  
 <!-- server address: disesuaikan dengan tc-config.xml di server -->  
 <terracottaConfig url="ip-server:port" />  

SOURCE CODE IMPLEMENTATION
1. tambahkan annotation @Cache dan concurrency strategynya pada entity yang akan dicache.

REFERENCES:
- http://ehcache.org/documentation/2.5/integrations/hibernate
- http://terracotta.org/documentation/4.0/bigmemorymax/get-started

Monday, December 9, 2013

Webcenter Portal (Spaces) and Oracle BPM Integration - Part 2


Blog ini melanjutkan Webcenter Portal (Spaces) and Oracle BPM Integration - Part 1. Sekilas review, blog ini akan menjelaskan bagaimana caranya mengintegrasikan workspace yang ada di Oracle BPM ke dalam Webcenter Portal. Hal ini diperlukan apabila anda mengimplementasi Portal dan BPM bersamaan, tapi ingin BPM diakses melalui Portal. Sebelum membaca blog ini, silahkan terlebih dahulu membaca Part1-nya agar dapat lebih memahami langkah-langkah yang dilakukan dari awal :)

Prerequisite:


  • Webcenter Portal, Oracle BPM dan Webcenter Content sudah terinistall (tutorial ini menggunakan versi 11.1.1.7 untuk ketiga sistem)
  • Basic knowledge untuk navigasi ke folder-folder instalasi masing-masing komponen diatas :)
  • Membaca dan mengeksekusi Webcenter Portal (Spaces) and Oracle BPM Integration - Part 1

Langsung saja kita lanjutkan.

1. Masuk ke folder oracle_common/common/bin dan jalankan ./config.sh

2. Configuration Wizard terbuka. Pilih 'Extend my domain using an existing extension template'. Pilih template bpm yang ada di folder /templates/applications/oracle.bpm.spaces_template_11.1.1.jar. Ini akan meng-extend dan meng-include jar yang diperlukan oleh Webcenter Spaces anda untuk menjalankan workspace BPM. Lokasi template biasanya ada di: ~/Oracle_WC1/common/templates/applications/oracle.bpm.spaces_template_11.1.1.jar

3. Layar configuration summary akan terbuka, pilih Extend untuk meng-extend domain anda.
4. Progress screen tentunya :)
5. Copy folder berikut:
~/Oracle/Middleware/Oracle_SOA1/bpm/process_spaces/
ke ~/Oracle/Middleware/process_spaces. Edit file process-portal-install.properties. Berikut adalah contoh untuk environment yang saya gunakan. Anda dapat sesuaikan berdasarkan environment anda (Cluster, Database Name dsb). Pastikan property extendSoa = false.
################################################
# BPM Process Portal installation properties   #
################################################

#  Flag to decide whether to extend existing BPM domain or create a new one.
#  Set extendSoa to true, if the webcenter space and the SOA server are running in the same domain  
#  Set extendSoa to false, if the webcenter space and the SOA server are running in different domains
extendSoa=false

#  Flag to decide whether install will prompt for passwords or read them from this file
promptForPasswords=false

#
#  Setting up domain global trust
#  Provide information to set up trusted domains between the webcenter domain and the SOA domain
#
#  Flag to control whether to set domain realm password or not, set to true if extendSoa is false
wcSetDomainRealmPassword=true
#  This is the password to setup trusted domains. Same password should be set on BPM domain as well
wcDomainRealmPassword= password
wc.server.port=8888

#
#  Information of SOA server to which webcenter space is connected.
#

#  BPM Schema and MDS details
#  Provide the SOA MDS database and schema details here
bpmDBUser=DEV_SOAINFRA
bpmDBPassword= password
bpmDBType=ORACLE
bpmDBDriver=oracle.jdbc.OracleDriver
bpmDBUrl=jdbc:oracle:thin:@ORACLEDB:1521:ORCL


bpmMDSUser=DEV_MDS
bpmMDSPassword=password

#
#  BPM Runtime details
#  Provide the BPM server weblogic and admin credential here
#

# Specify the BPM server URL (t3://<bpmHost>:<bpmRuntimePort>) in the case of a single
# BPM server, ex- t3://myHost:8001
# In case of BPM Cluster provide the ',' separated list of BPM servers URL's (t3://<host1>:<port1>,<host2>:<port2>,...)
# for all the servers in the Cluster . Example: t3://myHost1:8001,myHost2:8002,myHost3:8003
bpmServerURL=t3://SOABPM1:8001

bpmAdminUser=weblogic
bpmAdminPassword=Passw0rd01


#
#  Information of the Webcenter server where process BPM process portal would be installed
#

#
#  Webcenter spaces installation details
#  Provide the webcenter space server information
#
#  Provide the oracle home location of the webcenter install (e.g. /Oracle/Middleware/Oracle_WC)
#  in wcOracleHome
wcOracleHome=/u01/app/oracle/product/fmw/wc
#  Provide the Webcenter domain name in wcDomainName
#  --if extendSoa flag has been set to true, Webcenter domain name should be the same as SOA domain name
#  --if extendSoa flag has been to false, Webcenter domain name will be different from SOA domain name
wcDomainName=domain_name



#Mention Whether the webcenter install is configured for cluster or not;
#pass 'true' if in cluster mode, 'false' otherwise
isWebcenterClusterConfig=false

#Required if 'isWebcenterClusterConfig' is set to true
# Specify the name of the webcenter spaces Cluster
wcSpacesClusterName=

#  Webcenter's weblogic installation details
wcHost=SOABPM1
wcAdminPort=7701
wcAdminUser=weblogic
wcAdminPwd= password

#In the case of a single server environment,
#specify the name of the Webcenter Spaces Managed server. In a clustered environment,
#specify the name of any one of the Spaces managed servers that is part of the Cluster.
wcManagedServerName=WC_Spaces


#Flag to control whether to configure services
wcConfigServices=true

#content server details
wcContentServerName=SOABPM1
wcContentServerPort=4444
wcContentSpacesRoot=/WebCenter0809
wcContentAdminUser=weblogic

#discussion server details
wcDiscussionServerUrl=http://SOABPM1:8890/owc_discussions
wcDiscussionAdminUser=weblogic


6. Jalankan ant script dengan memasukkan command berikut:


7. Build successful akan muncul apabila konfigurasi yang anda buat di tahap nomor 5 sudah benar.
8. PENTING!! Edit lagi file konfig di langkah nomor 5. Pastikan value extendSoa=true. Jalankan kembali script dengan mengeksekusi perintah di step nomor 6 dan hasil berikut muncul:



9. Restart Seluruh Managed Server dan Admin Server anda.

10. Masuk ke Weblogic Server /em. Navigasi ke server Webcenter Portal Anda. Pilih Application Configuration -> Service Configuration dan layar berikut akan muncul. Cek di bagian Content Repository, pastikan bahwa koneksi portal-content-server berhasil dibuat dan menjadi active connection.
11. Klik koneksi tersebut, ganti Administrator User Name menjadi user name admin anda (dalam kasus saya weblogic).
12. Cek juga di Discussion and Announcement, koneksi baru, portal-discussions berhasil juga dibuat.
13. Kedua tahap diatas menandakan bahwa konfigurasi anda berhasil dan BPM Workspace sudah dapat diakses melalui Spaces!

14. Log in ke dalam spaces dan anda akan menemukan Spaces baru bernama Process Spaces. Ini adalah BPM workspace yang telah terintegrasi ke dalam portal. Disini anda dapat log in, membuat task baru, membuka task yang di-assign kepada anda dan melakukan proses approval layaknya fungsionalitas yang ada di BPM.

Apabila anda membuat project BPM baru dan mendeploynya ke soa_infra, maka otomatis project/process ini akan muncul juga di Process Workspace yang ada di Webcenter Spaces. Akses user untuk menggunakan aplikasi di BPM sekarang sudah dapat diarahkan melalui portal!

Selamat! Anda berhasil mengintegrasikan BPM Workspace dan Spaces Anda.
Semoga membantu. See u in the next blog!




Webcenter Portal (Spaces) and Oracle BPM Integration - Part 1

Blok kali ini akan membahas bagaimana cara mengintegrasikan Oracle BPM Workspace ke dalam Webcenter Portal (Spaces). Apabila kita membangun aplikasi BPM yang berjalan di BPM workspace & Portal, akan terdapat 2 workspace, 1 portal dan 1 bpm workspace. Hal ini tentu tidak praktis, karena portal harusnya menjadi gerbang utama tempat user mengakses semua aplikasi, akan tetapi BPM workspace mempunyai URL sendiri yang berjalan di tempat yang berbeda dengan portal. 

Karena set up untuk proses ini cukup panjang, maka saya akan membagi blog menjadi 2 bagian. Bagian 1 ini akan menjelaskan persiapan yang diperlukan sebelum integrasi. Perlu diingat bahwa meskipun ini namanya 'Persiapan' dan terdengar sepele, tapi tahap ini harus dikerjakan terlebih dahulu agar tahap berikutnya dapat berjalan.

Problem:
  • Webcenter Portal dan BPM sudah terinstall, tapi memiliki URL yang berbeda. Akses ingin dilakukan melalui 1 gerbang yaitu Webcenter Portal.


Solution:
  • Menggabungkan workspace BPM ke dalam Webcenter Portal

Result:
  • User dapat mengakses BPM workspace melalui portal. Seluruh capability workspace BPM seperti inbox, initiate Process, Approve, Reject dsb dapat dilakukan melalui Webcenter Portal.
  • BPM composer juga dapat berjalan di Portal

Prerequisite:
  • Webcenter Portal, Oracle BPM dan Webcenter Content sudah terinistall (tutorial ini menggunakan versi 11.1.1.7 untuk ketiga sistem)
  • Basic knowledge untuk navigasi ke halaman-halaman administrasi masing-masing komponen diatas :)
Untuk memungkinkan hal diatas di portal, ikuti langkah-langkah dibawah ini. PENTING: langkah-langkah ini harus diikuti step by step sebelum anda masuk ke bagian inti yang saya jelaskan di Part 2.

1. Kita mulai dari webcenter Content. Buka Advanced Component Manager -> show All Components


2. Di bagian Disabled Components, klik Enable untuk komponen Folders_g
3. Lakukan hal yang sama untuk komponen WebCenterConfigure
4. Pastikan 2 komponen diatas masuk ke bagian Enabled Components berikut komponen dibawah:
- Dynamic Converter
- InboundRefinerySupport
- ZipRenditionManagement
5. Buka Applet User Admin. Add User baru dengan Authorization Type = Local dan nama PersonalSpaces
6. Untuk User tersebut, buat juga Role baru dengan menekan tombol Add Role
7. Beri nama PersonalSpaces untuk Name dari role baru tersebut
8. Lakukan Step 5-7, beri nama user dan role-nya ProcessPortal
9. Add Role = Process Portal
10. Masuk ke weblogic server /console. Masuk ke security realm yang anda gunakan. Buat Group baru dengan nama ProcessPortalUser
11. Masuk ke weblogic server /em. Masuk ke farm domain anda, navigasi ke instance Content Server anda. Masukkan filter IP address yang sesuai, dan masukkan Intradoc Server anda. Dalam contoh ini saya menggunakan 4444
12. Masuk ke instance Webcenter Portal anda. Add Repository Connection ke Webcenter Content dengan memasukkan detail berikut. PENTING!! Server Port harus sama dengan nilai yang anda masukkan di tahap 11.

13. Restart Admin Server, SOA Server dan Spaces anda.

Oke. Tahap persiapan sudah selesai :)
Untuk lanjut ke tahap inti dari integrasi, kita akan lanjut ke blog berikutnya: Webcenter Portal (Spaces) and Oracle BPM Integration - Part 2.
Selamat Mencoba!