Category Archives : Technology


Webcenter Content User Security Check in RIDC call for Specific Content 1

User Security Check in RIDC call for Specific Content


IdcClientManager m_clientManager = new IdcClientManager ();
IdcClient m_client = m_clientManager.createClient("<Your Hostname : Port>/cs/idcplg");

//RIDC superuser context
IdcContext m_superuser = new IdcContext("sysadmin", "idc");

//Examples of the three concrete cache classes
IUserSecurityCache m_SGCache = new UserSecurityGroupsCache (m_client, 20, 1000);
IUserSecurityCache m_SGAcctCache = new UserSGAccountsCache (m_client, 20, 1000, 20000);
IUserSecurityCache m_SGAcctAclCache = new UserSGAcctAclCache(m_client, 20, 1000, 20000, m_superuser);
DataBinder dataBinder = m_client.createBinder ();
dataBinder.putLocal ("IdcService", "DOC_INFO");
dataBinder.putLocal ("dID", "<dID of Specific Content>");
ServiceResponse response1 = m_client.sendRequest(m_superuser, dataBinder);
dataBinder = response1.getResponseAsBinder();

//Get the document information (typically in the first row of DOC_INFO)
DataObject docInfo = dataBinder.getResultSet ("DOC_INFO").getRows ().get (0);
IdcContext context = new IdcContext(<User Name for Whom to Check Access>,<Correct Password>);
CacheId ccID= new CacheId (context.getUser (), context);

//Get the access level for this document by this user
int access = m_SGAcctAclCache.getAccessLevelForDocument (ccID, docInfo);

//access level in Content Server form (1=Read, 3=Write, 7=Delete)

Here if access returns 1 then user have Read Access

if 3 user have Write Access
If 7 user have Delete Access


WebCenter Content Add New Link in Search Result Action Menu

Below is small snippet to add a New Link under Search Result Action Menu by idocs script in resource file,


<@dynamichtml extra_setup_search_results_action_popups@>
<$exec rsAppendNewRow("PopupProps")$>
<$exec setValue("PopupProps", "label", "<Add your label here>")$>
<$exec setValue("PopupProps", "ifClause", "<Add your Conditions here>")$>

<$exec setValue("PopupProps", "function", "<Add URL for which we need to link>")$>

<$exec setValue("PopupProps", "class", "document")$>
<$exec setValue("PopupProps", "id", "<Any id here>")$>

<$include super.extra_setup_search_results_action_popups$>
<@end@>

 

Label –> User Defined Label which should display for end User
ifClause Condition –> (dExtension like ‘doc’)
URL  –> Any url as where to link (Ex:www.google.com)

Screenshot:

Add_Link (1)

 


How to add Menu in Content Information Page in WebCenter Content

Adding Menu in Content Information Page in Webcenter Content

To add New Menu in Content Information page we need to use “custom_docinfo_menus_setup” dynamichtml in Resource file.


<@dynamichtml custom_docinfo_menus_setup@>

<$include super.custom_docinfo_menus_setup$>

<$exec rsAppendNewRow("PageMenusData")$>
<$PageMenusData.nodeId = "<Any ID>"$>
<$PageMenusData.ifClause = "<Your Condition>"$>
<$PageMenusData.parentId = "CONTENT_ACTIONS"$>
<$PageMenusData.label = "<Your display Label>"$>
<$PageMenusData.type = "item"$>
<$PageMenusData.href = "<URL to link>"$>
<$PageMenusData.linkTarget = "_self"$>
<$PageMenusData.loadOrder = 150$>

<@end@>

 

Screenshot:

ContentInfo_Link


Date formatting while using RIDC 1

RIDC API allows you to call IDC Services from Java programs. You can develop services that integrate with WebCenter Content server reliably. If you are using RIDC to check-in documents into WebCenter Content, and trying to set the Document Create Date (dCreateDate or dInDate), you should encode the date in the standard iso8601 date format (The default Content Server setting uses iso8601). You can accomplish this by using the encodeDate method of oracle.stellent.ridc.model.impl.DataObjectEncodingUtils object provided by RIDC API

The most common error if you do not format the date properly is “csDateParseError” which is caused by !syUnableToFindText,/ method and throws !syUnableToParseDate exception.

The following code shows how to encode the date


//Import the required classes:
import java.util.Date;
import oracle.stellent.ridc.model.impl.DataObjectEncodingUtils;

//Set the dCreateDate to that of a local files last modified date. 
File sourceFile = new File(localFile);
String dCreateDate = DataObjectEncodingUtils.encodeDate(new Date(sourceFile.lastModified()));

//Optionally, you can set the Date Format and Time Zone to specific values if required in the DataBinder object. 
binder.putLocal("UserDateFormat", "iso8601");
binder.putLocal("UserTimeZone", "UTC");

//Set the dCreateDate in the DataBinder object
binder.putLocal("dCreateDate",dCreateDate);

If your Content Server date format was changed from iso8601, you can determine the setting by using the following service and then use the same in your code.

binder.putLocal("IdcService", "PING_SERVER");
binder.putLocal("tableNames", "CoreFeatures");
ServiceResponse response = idcClient.sendRequest(idcContext, binder);
//Get the User Date Format and User Time Zone since 
DataBinder resultData = response.getResponseAsBinder();
String userDateFormat = resultData.getLocal("UserDateFormat");
String userTimeZone = resultData.getLocal("UserTimeZone");

If you are still having issues with setting the date, your Managed Server logs (UCM_server1) or System Audit Trace with “systemdatabase” and “requestaudit” selected (Administration > System Audit > Tracing section), should give you more information to troubleshoot. The following is a System Audit Trace information when the date is not encoded.


>services/3 09.16 21:43:46.638 IdcServer-41011 !csUserEventMessage,weblogic,CIS!$ intradoc.common.ServiceException: !csServiceDataException,CHECKIN_NEW_SUB,makeNewRevClass!$
services/3 09.16 21:43:46.638 IdcServer-41011 *ScriptStack CHECKIN_NEW_SUB
services/3 09.16 21:43:46.638 IdcServer-41011 3:doScriptableAction,**no captured values**3:doSubService,**no captured values**CHECKIN_NEW_SUB,**no captured values**3:makeNewRevClass,**no captured values**
services/3 09.16 21:43:46.638 IdcServer-41011 at intradoc.server.ServiceRequestImplementor.buildServiceException(ServiceRequestImplementor.java:2220)
services/3 09.16 21:43:46.638 IdcServer-41011 at intradoc.server.Service.buildServiceException(Service.java:2404)
services/3 09.16 21:43:46.638 IdcServer-41011 at intradoc.server.Service.createServiceExceptionEx(Service.java:2398)
services/3 09.16 21:43:46.638 IdcServer-41011 at intradoc.server.Service.createServiceException(Service.java:2393)
services/3 09.16 21:43:46.638 IdcServer-41011 at intradoc.server.ServiceRequestImplementor.handleActionException(ServiceRequestImplementor.java:1860)
services/3 09.16 21:43:46.638 IdcServer-41011 at intradoc.server.ServiceRequestImplementor.doAction(ServiceRequestImplementor.java:1810)
services/3 09.16 21:43:46.638 IdcServer-41011 at intradoc.server.Service.doAction(Service.java:566)
services/3 09.16 21:43:46.638 IdcServer-41011 at intradoc.server.ServiceRequestImplementor.doActions(ServiceRequestImplementor.java:1527)
services/3 09.16 21:43:46.638 IdcServer-41011 at intradoc.server.Service.doActions(Service.java:561)
services/3 09.16 21:43:46.638 IdcServer-41011 at intradoc.server.ServiceRequestImplementor.executeSubServiceCode(ServiceRequestImplementor.java:1390)
services/3 09.16 21:43:46.638 IdcServer-41011 at intradoc.server.Service.executeSubServiceCode(Service.java:4189)
services/3 09.16 21:43:46.638 IdcServer-41011 at intradoc.server.ServiceRequestImplementor.executeServiceEx(ServiceRequestImplementor.java:1266)
services/3 09.16 21:43:46.638 IdcServer-41011 at intradoc.server.Service.executeServiceEx(Service.java:4184)
services/3 09.16 21:43:46.638 IdcServer-41011 at intradoc.server.Service.executeService(Service.java:4168)
services/3 09.16 21:43:46.638 IdcServer-41011 at intradoc.server.Service.doSubService(Service.java:4078)
services/3 09.16 21:43:46.638 IdcServer-41011 at sun.reflect.GeneratedMethodAccessor459.invoke(Unknown Source)
services/3 09.16 21:43:46.638 IdcServer-41011 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
services/3 09.16 21:43:46.638 IdcServer-41011 at java.lang.reflect.Method.invoke(Method.java:606)


WebCenter Resources you must know 1

Here is a quick list of websites that every Oracle WebCenter developer should be aware of:

Oracle WebCenter blog: http://blogs.oracle.com/webcenter
Proactive Support Portals: https://blogs.oracle.com/PortalsProactive/
WebCenter Content product alerts http://blogs.oracle.com/ecmalerts
Oracle WebCenter Homepage: http://oracle.com/webcenter
Oracle WebCenter Newsletter: http://oracle.com/newsletters
Twitter: http://twitter.com/oraclewebcenter
Facebook: http://facebook.com/webcenter
LinkedIn: http://linkd.in/ORCL_Social


Creating a Top Level Folder with No Parent Folder in WebCenter Content

WebCenter Content allows you to create Virtual Folders and store contents in the folders. Folders presents a easy to use user interface to organize your content. You can browse the folders and its content from WebCenter Content web interface from Browse Content navigation.

Out of the box two folders are created and they are Contribution Folder and Library Folders. If you want to create another top levell folder you can use the IDC Service COLLECTION_ADD. You can call this service through HTTP by executing the following command in a browser window:

http://HOST_NAME/cs/idcplg?IdcService=COLLECTION_ADD&hasParentCollectionID=true&dParentCollectionID=-1&dCollectionName=FOLDER_NAME&force=1&idcToken=IDC_TOKEN

Where HOST_NAME is your Content Server’s host/cluster name
FOLDER_NAME is the Name of the Parent Folder you want created Ex: PandyansFolder
IDC_TOKEN is your environments unique token. You can find this by performing the following:
Click on Browse Content > Contribution Folders
View source in Browser
Click Edit > Find: idcToken


Setting up Archiver for Replication between Content Servers

WebCenter Content Archiver helps you replicate content between different environments. The Archiver is capable of replicating content real-time as they are published in one environment. This post describes the setup of the archiver in two environments for a real-time content replication.

Steps:
Target Content Server:
1. Update the config.cfg file to include the IP Address of the Source Content Server (Requires a recycle to effect changes)
2. Setup an Archiver that is Target-able. (Admin Applets > Archiver > Edit > Add [Archiver Name and Description], Transfer To > Transfer Options > Is Targetable)
3. Register Self as Importer for automated replication (Replication > Registered Importer > Register Self)

Source Content Server:
1. Setup an Outgoing Provider pointing to the Target Content Server (Requires a recycle to effect changes)
2. Setup an Archiver with Transfer Destination set to that of the Target Content Server Archiver
3. Transfer content automatically by selecting “Transfer Automated”.

Archiver_Replication