Custom ADF Task Flows and the Spaces resource catalog

Note: This is a very roughly put-together guide. I will spend some time in cleaning this up later.

I had someone ask for help on deploying a task flow to WebCenter Spaces and exposing it through a resource catalog. Here’s a quick run-through of how I do it. I will explain the essential building blocks and you should be able to implement it any way you like.

What you’ll need

1) Read the “Extending WebCenter Spaces” whitepaper on OTN.

2) Download the sample project that supplements the whitepaper.

Both these can be downloaded from OTN here. The easiest way to expose custom ADF task flows is to use the sample project and the ANT build file it contains. You can always customize the project to fit your requirements.

Building Blocks

1. Shared ADF Library

  1. Develop your ADF Taskflow and create an ADF Library out of it.
  2. Create a new WAR file (let’s call it custom-taskflow.war) including the ADF library jar(s) from step 1 in the WEB-INF/lib of the WAR. Optionally include a manifest to name your extension and setup version info.
  3. Deploy the WAR to the weblogic server to the WLS_Spaces and AdminServer managed server as a shared library. Note the deployed library’s name from the WLS Admin Console.

2. WebCenter Spaces Customisation

To expose the custom task flow in the Spaces catalog, you have to create and deploy a customisation shared library – “custom.webcenter.spaces”. The Webcenter Spaces installation should already contain a base version of this library.

Here we create and deploy a WS customisation that makes the task flow available on the Spaces catalog. You may choose to add the task flow to either the default personal catalog or the group spaces catalog.

  1. From the whitepaper sample project, copy the resource catalog required. You’ll find them in the path SourceFiles\catalog\oracle\adf\rc\metadata\scopedMD\defaultScope
  2. Edit the xml file and add your custom task flow to the resource catalog. To obtain the correct entry for your task flow
    1. Create a file system connection to the folder containing your ADF Library Jar (from Step 1a)
    2. Navigate to the task flow entry in the file system connection
    3. Right clock on the task flow and choose the option “Show Catalog Reference”
    4. You can copy the entire XML tag that shows up in the dialog.
    5. Optionally you can add attributes to this – title, description, etc for your task flow. See the entries already present in the source catalog for reference.
  3. Create a jar that contains the resource catalog. The path to the catalog in the JAR should be custom\oracle\adf\rc\metadata\scopedMD\defaultScope
  4. Create a WAR file to deploy this as a shared library. A few important points to note on this
    1. The WAR should contain the JAR from 2c in WEB-INF/lib
    2. The WAR should contain a weblogic.xml with a library reference entry pointing to the deployment name from 1C.
    3. The WAR should contain a manifest file that specifies the following mandatorily (See the sample project for reference)
      Extension-Name: custom.webcenter.spaces
      Specification-Version: <the specification version of the default custom.webcenter.spaces library>
      Implementation-Version: <an implementation version higher than the current deployment>
  5. Deploy the WAR file as a shared library to the WLS_Spaces and AdminServer managed servers.
  6. Redeploy the webcenter application on WLS_Spaces for the changes to take effect.

Comments

  1. Hi Bijesh,

    A quick backgorund about myself. I have just started work on customising webcenter spaces for a customer of ours in sydney and am based in sydney. i am still in the learning mode and ADF Framework and webcenter is new to me. I am basically a Java/J2EE Developer, mainly worked on open source tools. Oracle suite is new to me.

    This is a good post that u have put together.
    I am particularly after the sample project mentioned in the white paper SampleWebCenterSpacesExtension.jws. It does not exist anymore. Is there a way to get it. Not sure if u have it downloaded.

    Appreciate ur help with this.

    Regards
    Karthik

  2. @Karthik: Glad you find this useful. The sample project is up there on the whitepapers section for Webcenter – http://www.oracle.com/technetwork/middleware/webcenter/white-papers-088385.html. The “Supporting Files” link against “http://www.oracle.com/technetwork/middleware/webcenter/white-papers-088385.html” lets you download a zip containing the workspace.

  3. Hello, i have followed all steps, deployed the task flow jar and used build.xml to deploy the extension project as a shared library. Everything worked fine, just like in the documentation…but i can’t find the task flow within WebCenter… i have restarted WC_SPACES but still no result… I have even tried to find it in the catalog…by searching for it (From add from library) but no results. I don’t know why this is happening.

    I have tried this with multiple task flows…

    Then I came across your post and tried it this way….Unfortunately i can’t find the taskflow in the library.

    I did double-check the shared library’s name in weblogic.xml against the deployed name (through admin console)

    I’ve verified that the shared-library is deployed with WC_Spaces as a target.

    Any idea what could be wrong?
    Thank you.

  4. Hi Marius,

    This post was for WebCenter PS2 (11.1.1.2). It should’ve been much simpler for PS3.

    The following questions may seem quite naive but your answers may help figure the problem out.

    1) How did you deploy the task flow jar? Was it as part of a shared library war file? That is how usually do it – similar to section 1 in my post above.
    2) Did you deploy it to WC_Spaces managed server?
    3) Can you upload your shared library war and extend.spaces.war somewhere for me to take a look at them?

    By the way, as far as i know, the custom taskflow will only be available from “Add From Library”

  5. Hello Bijesh, thank you for your reply. Here are my answers according to the points you made:

    1)the jar was part of a shared library.
    2)Deployed it to WC_Spaces
    3)Uploaded: http://www.2shared.com/file/QrucZuTm/detrunus.html
    4) Yes, that is true.

    the weblogic.xml contains the following lines:

    testFlow1

  6. I have managed to add it to the library by using the samples project. Adding the jar to the samples project, deploying it ,referencing the samples project in the designwebcenterspaces project and deploying the designwebcenterspaces project is the trick to make it work.

  7. My apologies, Marius. I was away from office and didn’t have access to a WC env.

    What the samples project creates is nothing but a shared library WAR. This means that your initial approach is also correct and has worked for me in the past. I am wondering if there is some error in the original shared lib that you tried.

    Anyway, good that you have it working now.

  8. Hi Marius,

    I just tried with the files you supplied and it worked for me.

    1) Cleaned up testFlow1.war so it contained only the META-INF/manifest.mf and WEB-INF/lib/testFlow1.jar.
    The war does not need to include the actual files (xml, jspx, etc). I don’t think having those files should’ve been an issue.
    2) Deployed testFlow1.war as a shared library to WC_Spaces
    3) Included testFlow1 as a library in WebCenterSpacesExtensionLibrary/public_html/WEB-INF/weblogic.xml
    4) Built and Deployed WebCenterSpacesExtensionLibrary (i.e. extend.spaces.webapp.war).
    Note: the build file also redeploys the webcenter app so there was no need to restart WC_Spaces
    5) Edit a resource catalog and use Add > Add from Library. Search for “account” and it showed accountRegistrationTF.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>