Oracle

What is MDS and how is it used in WebCenter

Overview
In order for Oracle WebCenter to find a way of making a generic, flexible and configurable application Oracle needed to find a way of configuring the application to behave and look different based on the needs of the customer. The changes to the system whether they are Design changes (also known as seeded customisations) or Runtime changes all use the MDS to store the customisations.

To do this Oracle created the Metadata Service. Metadata is essentially data about data, if you think of file properties in any OS, that is metadata on the file itself.

So, WebCenter uses this metadata store to keep track of all of the system changes and also any tweaks that the user can make to their pages as well. It provides a very flexible mechanism to have a single product that can behave and look different user to user and company to company.

The data can either be stored on the file system or in a database. Oracle recommend that you use a relational database rather than the file system.

Accessing the data
To be able to gain access to the metadata or to upload changes you can use the WLST shell. You’ll need to connect to your server and then from there you can run the commands importMetadata and exportMetadata.

Here are a few example commands to get you going.

– Connect to wlst using the command
– $MIDDLEWARE_HOME/Oracle_WC1/common/bin/wlst.sh
– connect(“weblogic”, “welcome1”, “127.0.0.1:7001”)

To export the data from the meta data store execute the following command in the wlst shell.
– exportMetadata(application=’webcenter’,server=’WC_Spaces1′,toLocation=’/home/oracle/mdssys.zip’,docs=’/mdssys/**’);
– To delete meta data from the store execute the following command in the wlst shell.
– deleteMetadata(application=’webcenter’,server=’WC_Spaces1′,docs=’/mdssys/**’);

To import meta data into the store call the following function:
– importMetadata(application=’webcenter’,server=’WC_Spaces1′,fromLocation=’/home/oracle/file.zip’);

Where to find GenericConstants.AM_REQUEST_TOKEN_IDENTIFIER when creating a custom login page for Oracle WebCenter

Whilst working on creating a custom login screen for Oracle WebCenter I came across something in the instructions that was assumed and undocumented.

In the guide Developing Custom Pages it contains the code below:

String reqToken = request.getParameter(GenericConstants.AM_REQUEST_TOKEN_IDENTIFIER);

<%
if(reqToken != null && reqToken.length() > 0) {%>
<input type="hidden" name="" value="">
<%
}%>

However, I couldn’t find the location of GenericConstants.AM_REQUEST_TOKEN_IDENTIFIER anywhere, google searches returned nothing of any use. Hence why I’m sharing this.

The jar that you need to include in your project is bizarrely only available on the target OAM server! If you search for utilities.jar which on our server was located at $MIDDLEWARE_HOME/user_projects/domains/OAMDomain/servers/oam_server1/tmp/_WL_user/oam_server_11.1.2.0.0/88g74i/APP-INF/lib

Bits of this path will be different on your system beacause of how your domain is configured, however, you should roughly have the structure.

Copy the utilities.jar to your projects lib folder and include it in the JDeveloper libraries for your custom login page project. You should then have access to these pre-defined Strings.

How to launch the Oracle Forms Builder 11g

Yesterday I had the privilege of installing Oracle Forms on a Linux machine and then attempting to get the Forms Builder application running. Searching for documentation on how to do this was impossible, all I found where a lot of links to articles asking for help because it wouldn’t start.

The errors that I was getting while trying to launch Forms Builder where:

FRM-91111: Internal Error: window system startup failure.
FRM-10039: Unable to start up the Form Builder.

Below are the commands that I entered to get it working on my Oracle SOA Virtual Box VM downloaded from Oracle. I took this base install box and then installed Forms using their documentation.

To launch Forms Builder open a terminal window and type the following:
Note /oracle/middleware was my middleware install location for forms and I had created a Oracle_FRHome1 in there when installing Forms. /oracle/javahome/ was where Oracle put their JDK on the VM, if your server is different then you’ll need to make sure you change these paths to your JDK location. These are referred to in PATH, LD_LIBRARY_PATH and JAVA_HOME.

cd /oracle/middleware/Oracle_FRHome1/asinst_1/bin
export ORACLE_HOME=/oracle/middleware/Oracle_FRHome1
export PATH=/oracle/middleware/Oracle_FRHome1/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/oracle/javahome/jdk1.6.0_29/jre/lib/amd64/native_threads/
export FORMS_BUILDER_CLASSPATH=$ORACLE_HOME/jlib
export NLS_LANG=
export MW_HOME=/oracle/middleware/
export JAVA_HOME=/oracle/javahome/jdk1.6.0_29/
export PATH=/oracle/javahome/jdk1.6.0_29/bin/:$PATH
./frmbld.sh

Verify these values are correctly set by typing echo $ORACLE_HOME etc. and type java -version to verify that the correct java is being used.

Critical Note: The part that differs here from all the other blogs on this issue is that I am running the script frmbld.sh in /oracle/middleware/Oracle_FRHome1/asinst_1/bin/ rather than the actual application file which is just frmbld and located somewhere else.

“Development Lifecycle for Taskflows in WebCenter Portal” whitepaper guidance notes

Whilst following the white paper from Oracle on the “Development lifecycle in Oracle WebCenter Portal” I came across a significant issue for new users of WebCenter which was a missing project for the tutorial.

It stated in the introduction that there are applications shipped with the whitepaper but I couldn’t find them and neither could Oracle Support. To get going in the meantime I created my own “GenericWebService” project that satisfied the requirements of the tutorial. This is available here.

Alternatively, follow the steps below to create it yourself.

Missing connection.xml file
Section 3a: Create a Web Service Proxy Facade – On page 28 the whitepaper says to update the connection.xml file with the contents in yellow in the page above. However, for my application that I had created I didn’t have a connection.xml file for some reason. To resolve this I closed the GenericServiceConsumer application, went to the GenericServiceConsumer\.adf\META-INF folder and created a new file called connection.xml. On re-opening the GenericServiceConsumer project the file was then available and I could paste the conents below into it.

<?xml version = '1.0' encoding = 'UTF-8'?>
<References xmlns="http://xmlns.oracle.com/adf/jndi">
  <Reference name="GenericUserWebServiceConnection"
             className="oracle.adf.model.connection.webservice.impl.WebServiceConnectionImpl"
             manageInOracleEnterpriseManager="true" deployable="true" xmlns="">
    <Factory className="oracle.adf.model.connection.webservice.api.WebServiceConnectionFactory"/>
    <RefAddresses>
      <XmlRefAddr addrType="WebServiceConnection">
        <Contents>
          <wsconnection description="http://localhost:7101/GenericWebService-UserWebService-context-root/UserServiceWS?WSDL"
                        service="{http://oracle.com/}UserServicePort"/>
        </Contents>
      </XmlRefAddr>
    </RefAddresses>
  </Reference>
</References>

Nullpointer Exception
I also had a nullpointer exception thrown when I first started up the taskflow in the JSF page. This was probably because of the home made web service project that I created above. It wasn’t a SOAP based web service and therefore the URL was wrong in the connection.xml file.

You will notice that mine above contains the URL http://localhost:7101/GenericWebService-UserWebService-context-root/UserServiceWS?WSDL whereas the whitepaper’s URL is http://localhost:8888/GenericWebService-UserWebService-context-root/UserServiceSoap12HttpPort?WSDL

What do all the ADF/JDeveloper configuration files do?

One thing that is particularly overwhelming when starting out with WebCenter is the number of configuration files used. My background is from working on JSF based applications, particularly Richfaces. Some of the files are common but a lot aren’t and the question in my mind so often was, “What on earth is this file doing?”

This post covers a number of useful links that I have come across during my reading that explain the purpose of all the diffent configuration files.

What configuration files should I know about?
http://docs.oracle.com/cd/E23943_01/webcenter.1111/e10148/jpsdg_quick_start.htm#CIAJFHEE

Configuration files touched when manually migrating a project.
http://docs.oracle.com/cd/E23943_01/webcenter.1111/e10148/jpsdg_app_migration.htm#CHDCFHAD

Web User Interface Configuration
http://docs.oracle.com/cd/E25054_01/web.1111/b31973/ap_config.htm#CEGGGEEF

ADF Meta Files
http://docs.oracle.com/cd/E23943_01/web.1111/b31974/appendixa.htm#ADFFD1418

More Files
http://docs.oracle.com/cd/E23943_01/webcenter.1111/e10148/jpsdg_files.htm#BABHFBIE

Files affected when developing and why
http://docs.oracle.com/cd/E23943_01/webcenter.1111/e10148/jpsdg_team.htm#autoId3

Customising WebCenter Portal Spaces

This post is aimed at providing a summary of what is required and what is available when developers want to customise their WebCenter Portal: Spaces application (Renamed to WebCenter Portal from 11.1.1.8). It doesn’t go into detail, however, does provide useful links to the Oracle documentation on where to go for further details.

There are a couple of options available to developers if they want to customise Spaces within WebCenter.

  • Browser – If adding spaces, tweaking/selecting templates customising portals, spaces and pages with respect to content.
  • JDeveloper – If you want to deploy additional shared libraries, include custom code or tasksflows. You can also edit skins, page templates and navigations in JDeveloper too.
  • In order to customise any Spaces in JDeveloper you’ll need to download the DesignWebCenterSpaces project available here for version 11.1.1.6. This consists of a JDeveloper application which contains two projects “WebCenterSpacesExtensionLibrary” and “WebCenterSpacesResources”.

    WebCenterSpacesExtensionLibrary (11.1.1.6)
    On the Weblogic server there is already an empty extended.spaces.webapp.war and the WebCenterSpacesExtensionLibrary project in this application allows the developer to add and build a new extended.spaces.webapp.war.

    WebCenterSpacesExtensionLibrary (11.1.1.8)
    There is a zip file in this page that you’ll need for customising skins and page templates. Search for DesignWebCenterSpaces_11.1.1.8.0.zip download that and open the application in JDeveloper to get going.

    This project essentially contains a weblogic.xml that you can insert the shared library declarations into.

    Creating your own extended.spaces.webapp.war informs WebCenter Portal: Spaces that you are deploying customisations that the server needs to make available.

    Important Note – It is best practice to deploy your extended.spaces.webapp.war in addition to the one that comes with the server. As long as the version in the Manifest.MF file in the war is greater then this will take precedence. Keeping the original ensures that if needed you can go back to the base configuration.

    WebCenterSpacesResources
    This project contains resource customisations, e.g. custom skins, page templates, page styles, navigations etc. It provides a single project that enables the developer to customise the look and feel of Spaces and allows you to make these changes from within JDeveloper. As a starting point you can export your existing application to get it’s templates and then make incremental changes to that rather than trying to start from scratch.

    Getting to grips with Oracle WebCenter Portal

    I have the task of getting to grips with Oracle WebCenter Portal applications. The product I am working on provides a number of customisations to “WebCenter Portal: Spaces” that have since been rebranded as “WebCenter Portals” from version 11.1.1.8 onwards.

    To get up an running the quickly I came across a VirtualBox image for another Oracle product, however, that VM is configurable to start up a WebCenter Spaces server with JDeveloper pre-installed which is exactly what I needed.

    Using the Oracle VM I am progressing through the tutorials on Oracle Fusion Middleware. The VM is based on the 11.1.1.6 code, so I am sticking with those tutorials for now.

    Tutorial 1
    This tutorial introduces the WebCenter Portal. Using JDeveloper it shows how to create a new Portal application and how to deliver content from the UCM server. Topics covered are initial setup, creating a new portal, adding pages, customising the look of those pages by introducing page templates and skins.

    Tutorial 2
    This tutorial looks like the most suitable next step for anyone developing new custom portal/portal producer applications. It builds upon the previous tutorial and explains in much more detail the concepts and technology behind the scenes.

    Tutorial 3
    This tutorial looks more like a tutorial for front end administration of WebCenter Portals. It seems to cover page template customisations, skinning (CSS), building new pages and wiring them together.

    This blog, certainly in the short term will contain posts on any parts of these tutorials that weren’t obvious to me, or tips on using the VM in these tutorials to help anyone else get to grips with this stack.

    How to customise a WebCenter Portal site

    These pages are as much for me as a reminder on how to do things, but hopefully, they are useful to others too.

    It is possible to customise the look and feel of your Oracle WebCenter Portal by creating and activating a new Page Template and CSS file (Also known as Skin in the Oracle world).

    The tutorial on how to do this can by found on Oracle’s site here.

    Creating a WebCenter Portal Application & Customising a page template

    This post follows on from the previous one which is part of a series of explaining any non-obvious parts of the Oracle Tutorial.

    I am using the Virtual Box development environment which makes things a lot easier because everything for WebCenter is pre-installed and configured. This can be found here.

    In this post I will be following this tutorial.

    This part of the tutorial is essentially all in JDeveloper and goes through setting up your first project. Section 3 is just a case of following the steps, there is nothing here that I feel is worth commenting on further.

    Important note from this article is that when creating a new page template you also need to create a Page Definition as well. A page definition file is an XML file that specifies ADF bindings, page parameters, and permission settings. Various mappings and bindings used by pages and page templates are also specified. In this case, the myTemplatePageDef.xml file specifies the task flow for navigation rendering of the site, as well as parameters defining site structure paths.

    The Application Sources folder is primarily a repository for page definition files, like the myTemplatePageDef.xml file, as well as for source code in a project.

    Missing Step
    In Step 3, item 12 there is a missing step on this page. The page shows the new template that has been created, however, it is not available. You first need to make it available before being able to select it in the Configuration tab.

    To do this select the “Hidden” template, click the Edit menu and then select “Show”. This will make the template available and then it can be selected in the Configuration tab in the next step.

    Also, on the step when we need to select the Default skin. I didn’t have an drop down to select from. This was because although my skin was available the default skin wasn’t. Making this available enabled the drop down. (You can enable this by clicking on “Skins” in the “Look and Layout” menu on the left and selecting the skin, clicking the Edit menu and selecting “Show”.

    How to develop portals for Oracle Web Center

    This is going to be the first in a series of articles explaining how to get up and running with developing Oracle WebCenter Portal: Spaces.

    Note the name has changed from 11.1.1.8 onwards. “WebCenter Portal: Spaces” has become just “WebCenter Portal”.

    The article will be going through the tutorials that Oracle provide here: but I will attempt to explain what I needed to do when the instructions aren’t all that clear to a newbie.

    Step 6, item 4 of this article isn’t particularly helpful. It instructs the reader to upload the content into WebCenter Content. This is in fact the new name for Oracle UCM. The pre-built 11.1.1.6 server that I am using only has a UCM instance, so this needs to be running for this tutorial.

    What I did here was in UCM.

  • – Login to your UCM server as user: weblogic and password: welcome1
  • – Go to Browse Content on the left hand side. Then expand Contribution Folders.
  • – Select the Contribution Folders and then click “New Item” on the right then “New Folder” to create “About Us”. I then repeated this for the other folders.
  • – Next I then selected the folder and clicked “New Item” then “New Content”. I clicked the browse button to upload the file from the expanded zip file selected a file and then gave it the same title as the file name. Saved this then repeated the process for all the other files and folders.
  • For Step 7 I didn’t do anything as it seemed to be explaining what we’d need to do but not at this point. (Following through the rest of the tutorial you do not need to do this step now)

    The next post will cover anything I did/discovered in the next section “Creating a WebCenter Portal Application