Showing posts with label webcenter portal. Show all posts
Showing posts with label webcenter portal. Show all posts

Monday, December 12, 2016

Using the IdcCommand Utility to Access Content Server Part2

Pada part1 kita sudah berhasil menjalankan IdcCommand untuk proses Chekc-in dokumen, di part2 ini kita akan coba untuk melakukan add/create user menggunakan IdcCommand.

Prerequisite untuk proses ini sama dengan yang ada di part1, jadi kita cukup menambahkan 1 method lagi untuk proses Add User.

Cukup tambahkan satu method dibawah ini pada class java UcmClient yang sudah kita buat pada part1 sebelumnya.

public String addUser(String dName, String dFullName, String account) {
 ServiceResponse response = null;
 String result = "";
 try {
 // create request
  DataBinder binder = idcClient.createBinder();
  binder.putLocal("IdcService", "ADD_USER");

  // define UserAttributeInfo
  DataObjectImpl dataObject = new DataObjectImpl();
  dataObject.put("dUserName", dName);
  dataObject.put("AttributeInfo", "account," + account);

  DataResultSetImpl userAttribInfo = new DataResultSetImpl();
  userAttribInfo.addField(new DataResultSet.Field("dUserName"), dName);
  userAttribInfo.addField(new DataResultSet.Field
   ("AttributeInfo"), "account," + account);
  userAttribInfo.addRow(dataObject);
  userAttribInfo.addField(new DataResultSet.Field(""), "");

  binder.putLocal("dName", dName);
  binder.putLocal("dUserAuthType", "Local");
  binder.putLocal("dFullName", dFullName);
  binder.putLocal("dPassword", "welcome1");
  binder.addResultSet("UserAttribInfo", userAttribInfo);

  // check in the file
  response = idcClient.sendRequest(userContext, binder);
  result = dName;
  // result = response.getResponseAsString();

  } catch (Exception e) {
   e.getMessage();
  } finally {
   response.close();
  }

  return result;
 }

Maka java lengkapnya akan menjadi seperti berikut

import java.io.File;
import java.io.IOException;
import java.util.Collection;

import oracle.stellent.ridc.IdcClientException;
import oracle.stellent.ridc.IdcClientManager;
import oracle.stellent.ridc.IdcContext;
import oracle.stellent.ridc.model.DataBinder;
import oracle.stellent.ridc.model.DataObject;
import oracle.stellent.ridc.model.DataResultSet;
import oracle.stellent.ridc.model.DataResultSet.Field;
import oracle.stellent.ridc.model.TransferFile;
import oracle.stellent.ridc.model.impl.DataObjectImpl;
import oracle.stellent.ridc.model.impl.DataResultSetImpl;
import oracle.stellent.ridc.protocol.ServiceException;
import oracle.stellent.ridc.protocol.ServiceResponse;
import oracle.stellent.ridc.protocol.intradoc.IntradocClient;

public class UcmClient {

 public static final String idcConnectionUrl = "idc://localhost:4444";
 public static final String sysadmin = "weblogic";
 public static final int socketTimeout = 30000;
 public static final int connectionSize = 20;

 private IntradocClient idcClient;
 private IdcClientManager manager;
 private IdcContext userContext;


 public static void main(String[] args) throws IdcClientException, IOException {
  // TODO Auto-generated method stub
  String dName = "David";
  String dFullName = "Isnin David";
  String account = "IT";
  
  UcmClient main = new UcmClient();
  main.checkInDocument();
  main.addUser(dName, dFullName, account);
 }

 public UcmClient() throws IdcClientException {
  // create the manager
  manager = new IdcClientManager();

  // build a client that will communicate using the intradoc protocol
  idcClient = (IntradocClient) manager.createClient(idcConnectionUrl);

  // get the config object and set properties
  idcClient.getConfig().setSocketTimeout(socketTimeout); // 30 seconds
  idcClient.getConfig().setConnectionSize(connectionSize); // 20

  // create a trusted user context
  userContext = new IdcContext(sysadmin);
 }

 public void checkInDocument() throws IdcClientException, IOException {
  // create request
  DataBinder binder = idcClient.createBinder();
  binder.putLocal("IdcService", "CHECKIN_UNIVERSAL");

  // get the binder
  binder.putLocal("dDocTitle", "Test Checkin Document");
  binder.putLocal("dDocName", "Test Checkin Document Using Java");
  binder.putLocal("dDocType", "Document");
  binder.putLocal("dSecurityGroup", "public");

  // add a file
  binder.addFile("primaryFile", new TransferFile(new File("/Test.docx")));

  // check in the file
  ServiceResponse response = idcClient.sendRequest(userContext, binder);

  DataBinder binderResult = response.getResponseAsBinder();
  Collection resultSetNames = binderResult.getResultSetNames();

  for (String name : resultSetNames) {
   System.out.println(name);
  }
 }

 public String addUser(String dName, String dFullName, String account) {
  ServiceResponse response = null;
  String result = "";
  try {
   // create request
   DataBinder binder = idcClient.createBinder();
   binder.putLocal("IdcService", "ADD_USER");

   // define UserAttributeInfo
   DataObjectImpl dataObject = new DataObjectImpl();
   dataObject.put("dUserName", dName);
   dataObject.put("AttributeInfo", "account," + account);

   DataResultSetImpl userAttribInfo = new DataResultSetImpl();
   userAttribInfo.addField(new DataResultSet.Field
                                        ("dUserName"), dName);
   userAttribInfo.addField(new DataResultSet.Field
     ("AttributeInfo"), "account," + account);
   userAttribInfo.addRow(dataObject);
   userAttribInfo.addField(new DataResultSet.Field(""), "");

   binder.putLocal("dName", dName);
   binder.putLocal("dUserAuthType", "Local");
   binder.putLocal("dFullName", dFullName);
   binder.putLocal("dPassword", "welcome1");
   binder.addResultSet("UserAttribInfo", userAttribInfo);

   // check in the file
   response = idcClient.sendRequest(userContext, binder);
   result = dName;
   // result = response.getResponseAsString();

  } catch (Exception e) {
   e.getMessage();
  } finally {
   response.close();
  }

  return result;
 }
}


Demikian untuk blog kali ini, semoga dapat membantu dan bermanfaat. :)

See you next!

Using the IdcCommand Utility to Access Content Server Part1

Pada kesempatan kali ini saya ingin menulis tentang API Oracle Webcenter Content.

Webcenter Content dimanfaatkan untuk penyimpanan dokumen secara elektornik. Dokumen perlu dijaga agar dapat diakses/dicari dengan mudah jika suatu saat nanti diperlukan. Webcenter Content juga dapat digunakan untuk mengatur masa hidup dokumen mulai dari pembuatan, pencarian, konversi, hinga pemusnahan dokumen apabila diperlukan.

Istilah penyimpanan dokumen dalam Webcenter Content adalah Check-in. Profile dokumen dapat dibuat sesuai dengan jenis dokumen untuk lebih memudahkan dalam pengarsipan. Ada banyak cara untuk melakukan check-in dokumen diantaranya adalah:
  1. Check-in langsung di Document Profile Webcenter Content 
  2. Check-in di Webcenter Portal, apabila Webcenter Portal dan Content sudah ter-integrasi.
  3. Check-in dokumen via API dengan menggunakan Java.
Pada kesempatan kali ini saya ingin coba memberikan contoh penggunaan API Webcenter Content menggunakan Java. Cekidot ya guys..

Persiapan
  1. Saya menggunakan Webcenter Content versi 12.2.1.1.0
  2. lib oracle.ucm.ridc.jar
Implementasi
  1. Buat suatu class java dengan nama UcmClient.java
  2. Buat satu method khusus untuk define connection ke Webcenter Content

  3. public static final String idcConnectionUrl = "idc://localhost:4444";
    public static final String sysadmin = "weblogic";
    public static final int socketTimeout = 30000;
    public static final int connectionSize = 20;
    private IntradocClient idcClient;
    private IdcClientManager manager;
    private IdcContext userContext;
    
    public static void main(String[] args) throws IdcClientException, IOException {
        // TODO Auto-generated method stub
        UcmClient main = new UcmClient();
        main.checkInDocument();
    }
     
    public UcmClient() throws IdcClientException {
        // create the manager
        manager = new IdcClientManager();
    
        // build a client that will communicate using the intradoc protocol
        idcClient = (IntradocClient) manager.createClient(idcConnectionUrl);
    
        // get the config object and set properties
        idcClient.getConfig().setSocketTimeout(socketTimeout); // 30 seconds
        idcClient.getConfig().setConnectionSize(connectionSize); // 20
    
        // create a trusted user context
        userContext = new IdcContext(sysadmin);
    }
    

  4. Buat method checkInDocumen()
  5. public void checkInDocument() throws IdcClientException, IOException {
     // create request
     DataBinder binder = idcClient.createBinder();
     binder.putLocal("IdcService", "CHECKIN_UNIVERSAL");
    
     // get the binder
     binder.putLocal("dDocTitle", "Test Checkin Document");
     binder.putLocal("dDocName", "Test Checkin Document Using Java");
     binder.putLocal("dDocType", "Document");
     binder.putLocal("dSecurityGroup", "public");
    
     // add a file
     binder.addFile("primaryFile", new TransferFile(new File("/Test.docx")));
    
     // check in the file
     ServiceResponse response = idcClient.sendRequest(userContext, binder);
    
     DataBinder binderResult = response.getResponseAsBinder();
     Collection resultSetNames = binderResult.getResultSetNames();
      
     for (String name : resultSetNames) {
     System.out.println(name);
     }
    }
    

  6. Buat object main untuk melakukan execute method checkInDocument
  7. public static void main(String[] args) throws IdcClientException, IOException {
     // TODO Auto-generated method stub
     UcmClient main = new UcmClient();
     main.checkInDocument();
    }
    

Berikut adalah source code lengkapnya.

import java.io.File;
import java.io.IOException;
import java.util.Collection;


import oracle.stellent.ridc.IdcClientException;
import oracle.stellent.ridc.IdcClientManager;
import oracle.stellent.ridc.IdcContext;
import oracle.stellent.ridc.model.DataBinder;
import oracle.stellent.ridc.model.DataObject;
import oracle.stellent.ridc.model.DataResultSet;
import oracle.stellent.ridc.model.DataResultSet.Field;
import oracle.stellent.ridc.model.TransferFile;
import oracle.stellent.ridc.model.impl.DataObjectImpl;
import oracle.stellent.ridc.model.impl.DataResultSetImpl;
import oracle.stellent.ridc.protocol.ServiceException;
import oracle.stellent.ridc.protocol.ServiceResponse;
import oracle.stellent.ridc.protocol.intradoc.IntradocClient;

public class UcmClient {

 public static final String idcConnectionUrl = "idc://localhost:4444";
 public static final String sysadmin = "weblogic";
 public static final int socketTimeout = 30000;
 public static final int connectionSize = 20;

 private IntradocClient idcClient;
 private IdcClientManager manager;
 private IdcContext userContext;

 public static void main(String[] args) throws IdcClientException, IOException {
  // TODO Auto-generated method stub
  UcmClient main = new UcmClient();
  main.checkInDocument();
 }
 
 
 public UcmClient() throws IdcClientException {
  // create the manager
  manager = new IdcClientManager();

  // build a client that will communicate using the intradoc protocol
  idcClient = (IntradocClient) manager.createClient(idcConnectionUrl);

  // get the config object and set properties
  idcClient.getConfig().setSocketTimeout(socketTimeout); // 30 seconds
  idcClient.getConfig().setConnectionSize(connectionSize); // 20

  // create a trusted user context
  userContext = new IdcContext(sysadmin);
 }
 
 public void checkInDocument() throws IdcClientException, IOException {
  // create request
  DataBinder binder = idcClient.createBinder();
  binder.putLocal("IdcService", "CHECKIN_UNIVERSAL");

  // get the binder
  binder.putLocal("dDocTitle", "Test Checkin Document");
  binder.putLocal("dDocName", "Test Checkin Document Using Java");
  binder.putLocal("dDocType", "Document");
  binder.putLocal("dSecurityGroup", "public");

  // add a file
  binder.addFile("primaryFile", new TransferFile(new File("/Test.docx")));

  // check in the file
  ServiceResponse response = idcClient.sendRequest(userContext, binder);

  DataBinder binderResult = response.getResponseAsBinder();
  Collection resultSetNames = binderResult.getResultSetNames();
  
  for (String name : resultSetNames) {
   System.out.println(name);
  }
 }
}

Ada banyak API yang dapat kita gunakan selain untuk kebutuhan Check-in dokumen, kita juga dapat melakukan create user, delete user hingga pembuatan account. Untuk contoh java create user-nya ada di part2 ya..


Referensi
https://docs.oracle.com/cd/E23943_01/doc.1111/e10807/c21_idc.htm#CSSDK325

Sunday, September 18, 2016

Cara Merubah Layout Pada Webcenter Portal

Pada kesempatan ini saya ingin berbagi cara untuk merubah tampilan layout pada suatu page tertentu di webcenter portal.

  1. Pertama tama masuk ke menu administer portal yang sudah kalian buat



  2. kemudian pada bagian Edit Portal, kalian pilih page mana yang ingin kalian edit layout nya.
    Jika sudah klik edit page pada bagian atas kanan
  3. Klik change layout
  4. Pilih layout yang akan kalian gunakan

  5. Save
Layout yang bisa dipakai itu sangat banyak, tidak terbatas dari apa yang sudah di sediakan saja, namun kita jg bisa membuat sendiri layout seperti apa yang ingin kita inginkan.

Selamat mencoba !

Tips and Trick Skinning Webcenter Portal

Pada kesempatan ini saya ingin membagikan pengalaman saya ketika mengerjakan Skinning Webcenter Portal 12c. Pada dasarnya ada 2 pedekatan untuk skinning webcenter portal yang saya tau. 
  • Pertama menggunakan page template yang sudah disediakan secara default oleh Oracle. 
  • Kedua dengan membuat page template sendiri. 

Apa sih yang dimaksud dengan page template? Page template itu bisa di bilang seperti skeleton website yang ada pada umum nya yang biasa ada di index.html. Disini page template yang bisa dibuat bukan hanya mencakup header & footer pada website kebanyakan, namun hingga style keseluruhan webcenter portal itu sendiri.  

Pada awalnya saya mencoba membuat page template sendiri, semula semuanya berjalan mulus, hingga tiba saat bagian integrasi dengan webcenter content, Css page template yang saya gunakan ternyata konflik dengan css bawaan webcenter, yang menyebabkan tampilan komponen yang akan di integrasikan menjadi jelek. Ketika itu saya mempunyai 2 pilihan, yang pertama adalah memodifikasi komponent adf yang akan di integrasikan, atau membuat ulang menggunakan page template bawaan, dan hanya memodifikasi page page tertentu saja sesuai dengan keinginan saya. Akhirnya saya memutuskan untuk mengambil pilihan ke 2. Kenapa saya mengambil opsi ke dua?

Pertama dikarenakan deadline project yang mepet yang menyebabkan saya tidak bisa RND pada bagian komponen bawaan webcenter, yang pastinya akan menghabiskan waktu lama. Kedua, sepertinya lebih mudah untuk memodifikasi page yang sudah kita desain sendiri dibanding memodifikasi apa yang sudah dibuat oleh orang lain. Kira kira itu 2 pertimbangan saya kenapa saya mengambil opsi ke dua.

Untuk membantu teman teman memutuskan pendekatan mana yang akan diambil, saya akan mencoba untuk membuatkan case case sehingga teman teman tidak perlu mengalami apa yang sudah saya alami :)

  • Page template bawaan. Sebaiknya teman teman memilih menggunakan ini jika portal yang ingin kalian buat itu banyak integrasinya dengan komponen, seperti webcenter content, bpm workspace, disccussion forum dll. Dikarenakan jika banyak integrasi kalian akan kewalahan untuk memodif template itu ketika komponen yang baru di pasang ternyata tampilan nya sedikit aneh.
  • Page template custom. Sebaiknya teman teman memilih menggunakan ini jika portal yang ingin kalian buat itu tidak banyak integrasi aplikasi, sebab tampilan nya bisa dibilang akan jauh lebih bagus dibanding dengan template bawaan.
Sekian share dari saya, semoga ini membantu !