Wednesday, 10 October 2012

Webcenter PS5 Virtual Box VM

A couple of months late on this one, the BPM PS5 VM actually had WebCenter and UCM as options, all PS5 version (11.1.1.6.0) pre-installed and pre-integrated.


It's a great way to get the latest version of Spaces/UCM going fast on an 8GB RAM machine. Make sure you read the PDF and pick the WC_Spaces DOMAIN. This is not for PROD live usage. After the install it recommends running a particualr script to update IPs.
It's in the BIN folder of the oracle desktop.
Run it as sudo scriptname IP

What you get:
Spaces
UCM (including DAM/IBR, workflows)
Document Service Integration
XE DB
Apache for facilitating mail notifications
If you have a 16GB RAM machine, you can try the BPM-Spaces DOMAIN. Otherwise deploy this VM twice, once as BPM, and a second time as WC_Spaces. I recommend you keep the same memory ratios based on personal performance tuning experience.

What you still might want to setup on your own:
WCM - enable the sitestudio component and SiteStudio, externalapp, desktop Integration Suite)
WCM - sitestudiosamples
WCM - for NAT networking update listen http address to your host rather than the guest IP.
Social Taskflows from previous post :)

The entire build is very clean, great UI and prebuilt wizards.
Had an issue getting WCM editing to work from Spaces, will look for a solution to this.

Social Taskflow Pack

A very simple but useful pack of taskflows which aim to allow business users to embed video and social media updates into WebCenter Spaces PS4-PS5.

Social taskflows within Spaces
 
The Suite
The suite for now includes:




  • Facebook (page only)
    This widget aims to expose a public page created for a particular interest or company.
  • Youtube
    Embed any video using the video code at the end of the URL.
    Also includes height and width options.
  • Twitter
    Embed any twitter widget. For this you'll need to create your own widget within your account first, or get the account name and ID from the account you want to show.
Please note that Instagram was not included as it can be published straight into a twitter account.

Getting Started
 To get started simply download and extract this zip.
Press CTRL + S or File > Download when viewing the file.

The ZIP contains 3 EAR files which can be uploaded to Webcenter Spaces.

Each file within is a taskflow you can simply import by cliking on
Administration > resources > Taskflows > upload
 
Adding a widget 
To add a widget verify that they are SHOWN (click Edit>Show) from the taskflow section, by default they will appear within your catalog. When editing a page simply type the word facebook, youtube or twitter. Once the widget has been added edit the properties of the taskflow to input the video code, or facebook page account. See an examples below:

*Hint on Videocode:
Simply copy the code shown when viewing a youtube video after the 'v='.



Finally you may further specify the display properties of the box. By as changing to hiding the header or choosing a light style it can improve your look and feel.

Technical:
The widgets are simply HTML embeds with taskflow parameters set at the page flow scope level. You may further improve the look and feel from catalog by adding respective logos for the taskflow from local hosted icons in your content server. Make sure you've added your domain name if generating widgets. Spaces will need to contact the internet and may encounter a web proxy.

Know Issues:
Facebook widget requires login even for seamingly public pages.
Youtube video in edit mode overlays over edit popups in ADF
Twitter sometimes requires screen refresh to show when displayed on some page templates/layouts.
Twitter needs more user friendly input requirement (account name only, ID automated) while using a reliable source.

Feedback:
Let me know if you have any requests for social services to be embedded. I will be looking into live video streaming and live chat embed taskflows.

Wednesday, 29 August 2012

Connecting to the SES DB remotely

OOTB the Secure Enterprise Search database is secured by IP address which means if you connect either using Jdev or sqlplus remotely, you will get:
 Got minus one from a read call
To fix this issue simply follow the Oracle Support article 1446113.1

Sunday, 12 August 2012

Setting a WebCenter Maintenance Page

Background
When you shutdown WebCenter, the apache weblogic mod takes over the control of error pages and shows:

Failure of server APACHE bridge:
No backend server available for connection: timed out after 10 seconds or idempotent set to OFF.


Let's face it that's not user friendly and needs to be replaced with a nice page.

Solution
You can set a custom error page following the steps below:

*if you haven't got OHS_HOME, I recommend you set up this environment variable. The path should look similar to the below:
/apps/oracle/product/middleware/Oracle_WT1/instances/instance1/config/OHS/ohs1

First copy your custom html to the server.
Move the files to
$OHS_HOME/htdocs/
For example you have a file called
maintenance.html

Next modify the config file for the weblogic mod
nano $OHS_HOME/mod_wl_ohs.conf
within the Webcenter location add

<Location /webcenter>
LOCATION STUFF
</Location>

Now to test the change, restart OHS. (if you're in clustered mode run with 1 spaces, 1 OHS only for now)
Stop Spaces.
Go to WebCenter home.
New html maintenance page displays.
Restart spaces in WLS console.
Spaces displays correctly.

Ensure you copy the files/change in every OHS if you're in a clustered deployment.

Business Justification
The reason behind having a maintenance page, is to provide links to areas if WebCenter is being relied on as home page or key jumping point. In key business contexts people need to find key systems even if the system is down (timesheets, expenses, or other). The next step will be for you to assess if you need to handle the event when both OHS and WebCenter are down and what error page should be displayed at that point. I recommend the below:
"The Administrator of this system is currently busy looking for a new job, the system will be back up shortly, thanks for your patience"

Sunday, 24 June 2012

Configuring Coherence for Spaces Content Presenter PS4


Reason:
Coherence is becoming the strategic caching method for Webcenter. OOTB it is not enabled for the content presenter integration on top of PS4.
This was tested on PS4 with BundlePatch4 installed running on linux x86-64.

Steps:
Download the Jdeveloper project from George Maggessy’s blog. The approach on the original post is for WebCenter Portal.

For now we have a manual deployment process. This should be enhanced via Jdev deployment.

Copy content-coherence-cache-config.xml to your Spaces Customization Project in a new folder called APP-INF/classes

These folders should be created at the same level as META-INF.
Edit the deployment properties of the application and include the new folders in the deployment.
Redeploy the project against Spaces.
*Within the server this will copy the file to this location:
$MW_HOME/user_projects/applications/[your_domain]/custom.webcenter.spaces.fwk/APP-INF/classes
(it will create these folders and copy the file here, if you want a quick test, you can copy this file here)

Add the JVM startup parameter to your setDomainEnv.sh  ($DOMAIN_HOME/bin). Remember to do this for every machine.
Since it’s a big file I recommend you make edits in a separate file.

Search for this comment
# If you want to override the default Patch Classpath, Library Path and Path for this domain,

Add the following line below it.
. ${DOMAIN_HOME}/bin/setCustomProperties.sh

Now let’s create this file. In the bin folder directly.
nano setCustomProperties.sh

You can include entries depending on your environment. It is recommended to have a domain bin process to push all files to your TEST-UAT-PROD servers to ensure they always match.
For clustered solutions try the below. (if you are viewing this article you are most likely scaling and clustered anyway, in our case we had 4 nodes, modify this statement to reflect your managed server names and numbers)
COHERENCE_JAVA_PROPERTIES=" -Dtangosol.coherence.management=all"

if [ "${SERVER_NAME}" = "WC_Spaces1" ] ; then
    EXTRA_JAVA_PROPERTIES=" ${COHERENCE_JAVA_PROPERTIES} ${EXTRA_JAVA_PROPERTIES} "
elif [ "${SERVER_NAME}" = "WC_Spaces2" ] ; then
    EXTRA_JAVA_PROPERTIES=" ${COHERENCE_JAVA_PROPERTIES} ${EXTRA_JAVA_PROPERTIES} "
elif [ "${SERVER_NAME}" = "WC_Spaces3" ] ; then
    EXTRA_JAVA_PROPERTIES=" ${COHERENCE_JAVA_PROPERTIES} ${EXTRA_JAVA_PROPERTIES} "
elif [ "${SERVER_NAME}" = "WC_Spaces4" ] ; then
    EXTRA_JAVA_PROPERTIES=" ${COHERENCE_JAVA_PROPERTIES} ${EXTRA_JAVA_PROPERTIES} "
fi

export EXTRA_JAVA_PROPERTIES

You may save and close the file.
Remember to chmod 755 setCustomProperties.sh so the server can execute it.
(or lower depending on your security concerns)
If you encounter weird errors on Spaces startup, run this cmd:
Dos2unix setCustomProperties.sh
This should remove weird characters that can interfere with WLS.

We are finally ready to restart spaces.
Start WC_Spaces in WLS Console.
*If you are clustering I recommend you start 1 node only at this point.
Let’s walk before we run.

Next we want to confirm that after starting spaces the change is initialised.
*prerequisite: Setup xming for putty

First let’s look for the Spaces process once it has been restarted via WLS console.
ps -eaf | grep WC_Spaces
You can verify that the entry
-Dtangosol.coherence.management=all
Is shown in the JVM start parameters.

Get the first number from this cmd it’s the Spaces PID.
Then cd to the java location in that cmd as well.
Eg) cd /apps/oracle/java/jrockit-jdk1.6.0_26/bin/
Then type
Jconsole [PID]
*lookout for an upcoming post on jvisualvm and jconsole for more info on monitoring webcenter.

You can use this tool to monitor performance, and in this case check that coherence has been initialised against spaces. Click on the MBeans tab, coherence should show at the top.



Then you can proceed to load WebCenter spaces pages with content presenters. In general performance should improve and be measured against page load time with at least over 200-1000 concurrent test users. As you increase test users, continue to monitor UCM query responses.

If you still have performance issues, ensure your DB is doing the right thing. Is memory allocation within the DB correct for the total memory, is the DB shared? Are nightly stat run to optimize the DB?

Monday, 16 April 2012

Patches for WebCenter 11.1.1.5.0 in HA

If you are planing to go live with a client soon, on that particular version, it is mandatory for HA to install BP4 (11.1.1.5.4) - 13647251 and the following patches.
1) 12800721
2) 11077089
3) 13700256
4) 12412604
5) 13597766
*do a quick check of each patch here to ensure you are using these components.
Note that you need to download them for the 11.1.1.5.4 version of WebCenter and install them after the BP. You'll need to update OPatch(6880880) as well.Make sure you download the version for your environment.

The patches fix critical issues in Java Object Cache, serialization and deadlock issues which occur under medium load. I recommend you  apply these patches as soon as possible after install.

If you are on 11.1.1.6.0, you have the equivalent of BP4 already with a couple extra features. You may still need the individual patches mentioned.
I will make a broader post about HA soon.

Thursday, 15 March 2012

Relative URLs and WebCenter

You want to write code in webcenter resources that's re-usable accross all instances (DEV-TEST_UAT-PROD).


Ensure you reference all UCM resources with either  a single '/', or a double '//' at the start of the relative reference. A good way to get all your images to load is to use single slash for all of them, and those that don't load maybe in a content presenter template or other, use the double slash.


Word to the wise, slash first. Not to get slashed later.

Always show UCM skin images in webcenter

If images aren't loading without being logged on to UCM (in another browser tab) when viewing webcenter, follow the steps below:
  • First ensure you put your skin's images in a folder under Contribution Folders.
  • Second web map your skin folder in ucm. (in your webcenter skin reference the web mapped URLs)
  • Third, use the image metadata profile for all images.
  • Fourth, use the WebCenterSpaces security group, not the public group.
Now all your UCM skin images will load regardless of being logged on to UCM.
If even one of your images does not adhere to this metadata combination all of your images will fail to load.

Wednesday, 14 March 2012

A better Find in linux

Looking for a file on linux?
Want to search to whole machine and you're getting permission denied errors?

Use this command:
find / -name YOUR_SEARCH_WORD_HERE 2>/dev/null

Tuesday, 28 February 2012

Enhancements to Content Presenter Image Gallery

Original code and instrucions:
(credit John Brunswick and Kyle Hatlestad)

The following is an enhancement of the image gallery template.
Prereqs: 
-Requires static renditions to be accessible, need config.cfg renditions for preview and thumbnail. You can just google that
-Requires dispersion to be turned off, kyle has an article on this

You'd replace the iterator code in the template with the below:
<af:iterator rows="0" var="node" varStatus="iterator" value="#{nodes}" id="it0">       
 <af:outputText escape="false" value="&lt;a class=&quot;grouped_elements&quot; title=&quot;#{node.propertyMap['xComments'] != 'xComments: ' ? node.propertyMap['xComments'].asTextHtml : node.propertyMap['dDocTitle'].value.stringValue}&quot; rel=&quot;group&quot; href=&quot;/cs/groups/#{fn:toLowerCase(node.propertyMap['dSecurityGroup'].value.stringValue)}/documents/#{fn:toLowerCase(node.propertyMap['dDocType'].value.stringValue)}/~extract/#{node.propertyMap['dDocName'].value.stringValue}~1~staticrendition/preview.gif&quot;>"/>       
 <af:image source="//cs/groups/#{fn:toLowerCase(node.propertyMap['dSecurityGroup'].value.stringValue)}/documents/#{fn:toLowerCase(node.propertyMap['dDocType'].value.stringValue)}/~extract/#{node.propertyMap['dDocName'].value.stringValue}~1~staticrendition/thumbnail.png" styleClass="gallery"/>         
<af:outputText escape="false" value="&lt;/a>"/>     
</af:iterator>

This allows any security group, or document type on checkin, also uses relative urls.
It standardizes the thumbnail and enlarged size to the standard IBR renditions.

The only remaining issue with this code, is if you put the image inside a space rather than any contribution folder, it requires the auth and account value to be dynamically set in the folder path. I haven't worked out how to do string manipulation to make this dynamic. EL APIs are still a mystery to me, anyone with a good link? As a result this code only supports sourcing the images from any contribution folders.
Also the folder must only contain images. If your images are in folders with mixed content or sub folders, you need to use a list rather than point presenter to a folder.