When you are building a portal with WebCenter Spaces, you often want to extend WebCenter Spaces with your own functionality. This can be done by deploying portlets or by adding taskflows to WebCenter Spaces. There are distinct differences on when to go for portlets and when to go for taskflows. In short, when scalability is important you should go for portlets. When personalization is very important you also should go for portlets. If design is very important or integration with the security context then taskflows should be used. For more information on the differences I can point you to another blog post that discusses this topic in more dept.
This post will focus on how to add your own custom taskflows to WebCenter Spaces. Oracle has provided some documentation that explains how to do this. When I was following this documentation I faced some issues that weren't addressed so I will try to explain them here.
I will not explain all the steps into details because they are explained in the documentation. I will focus only on the things I do differently.
In my case I had an existing Fusion Web Application that uses ADF. That application contains several taskflows that I now want to expose in WebCenter Spaces. When you create taskflows from scratch that are designed for spaces, the steps in the documentation are sufficient. When you, like me, want to add existing taskflows from a different application, the steps provided in the documentation are not sufficient.
First of all we need to add the project (or projects) to the DesignWebCenterSpaces application. This can be done by selecting File, Open from the menu and navigate to your project. Select the jpr project file and press open.
if you are also using business components, you also will need to add the model project as well.
Also notice that when you are using ADF BC, you always should use a JDBC data source configured in the WebLogic server and not use a local database connection as this will not work with the DesignWebcenterSpaces application.
This is the result:
The Model and ViewController project are the projects from my ADF Application.
The next thing to do is to add a taskflow-registry.xml to the META-INF folder under the application source of the ViewController project:
This file contains all the taskflows that you want to expose to Spaces. Here is an example that only exposes a single taskflow:
The task-flow-descriptor contains information about your taskflow such as the path to the taskflow definition, a unique ID, a parameter that tells if your taskflow is using fragments or not and if it is a train or not.
The deployment process is the same as described in the documentation. Deploy the ViewController as an ADF library Jar and add this jar to the libraries of the WebCenterSpacesExtensionLibrary:
Also make sure that the library is added to the deployment profile. This can be done by selecting the Deployment section in the Project Properties and edit the default profile:
Make sure you select the checkbox so the library will be added to the EAR file:
Run the clean-stage ant target and then the deploy-shared-lib.
Once the deployment is finished you should be able to add the taskflow to a resource catalog. By default the taskflow will not be available in any RC. Your custom taskflows will be available in the taskflow library.