Oracle Fusion Middleware Setup from Developers’ Perspective
Intro
Having taken part in large Oracle Fusion Middleware projects (several in banking and aeroflight), I always see people struggling to setup and interlink the different OFM pieces, usually SOA, BPM, Webcenter and ADF.
Usually the start of the project takes a lot of time and any decision here may impact the development on later stage. So I decided to write this article, which will hopefully decrease the setup time and give you some good ideas on how to do the proper architecture.
Oracle SOA Suite – SOA Composites
I start with this, as it is the “backend” or the core of the Oracle Fusion Middleware solution. We will have all the business logic here and later we will expose it through ADF.
First we need to setup our SOA application in JDeveloper (of course we need to download the required JDeveloper SOA and BPM plugins). Usually under the SOA project we create multiple Composite projects, each of which is different module, that provides a number of services to be consumed by the business processes.
Each composite will have its BPELs calling different web services, JCA (DB) adapters or SDO (services exposed by ADF Application Module). Here you might want to take into consideration:
- Storage of WSDL files (you don’t want to stop your development if external WSDLs are not accessible or you are offline)
- Management of different WSDL and xsd versions
- Deployment profiles – create different deployment configurations for each environment.
You can also add Java logic using the Spring Beans component.
Oracle SOA Suite – BPMN Processes
In most of the cases you will have a separate SOA Application that contains your BPM related processes in an Oracle Fusion Middleware aolution. In a composite project you create a BPMN process that will keep the process logic. The BPMN will be calling WebServices (either the ones you’ve created or external ones for your organization).
The main complexity of a BPM project comes in the integration of the so-called Human Tasks. These represent human interaction in a form, usually located in the Oracle BPM Workspace. The other option is to implement a custom BPM workspace – we have already developed such for clients of ours as an outsourced project.
In order to create customized task you now proceed to the ADF layer.
ADF Implementation of Oracle BPM Human Task
The most time-consuming part of the implementations in an Oracle Fusion Middleware project is usually the ADF part. This is because you usually want really functional and at the same time user friendly interface. ADF is also quite sophisticated technology with a steep learning curve. Maybe that is why we are contacted by companies for outsourcing their ADF development work.
When you want to customize a human task, you create a separate ADF UI project. In the project you create a new “Task Flow from Human Task”. It will ask you to point to the task file located in your BPM project. Once you create the taskflow, you will see:
- Generated JSPX page and corresponding PageDefinition
- Generated Data Control
The page generated by default is a great start for creating your customized ADF page. With some development effort and use of the generated Data Controls you can create a really good page, that suits your exquisite user needs.
Finally, once created you can deploy the ADF Application (note you need to deploy the application, not the project). Now when you open the Task in the Oracle BPM Workspace you will see your customized page, instead of the default one.
ADF Implementation of web pages, consuming Oracle SOA Suite web services
You might need to create separate ADF pages (not BPM based) that consume your REST services, created in SOA Suite. Then you have 2 approaches, 1 of which is really more efficient:
- Data Control based on REST service – this is really inflexible approach, which I do not recommend unless it is for a WS that you know will never change or you will never need to modify its output
- Java Proxy – this is the method that I would usually use
You will almost always go for the Java Proxy. To do so you create a separate Proxy project. There you create “Web Service Client and Proxy”, which will point to the url of your REST web service.
Don’t forget that you need to be able to adjust the WS endpoint url for each environment you deploy to. This is usually done with some custom Java code and a static config file.
Additionally in ADF 12c you can consume REST services.
Webcenter Portal and ADF
Finally you might have Webcenter in the big mix of technologies in an Oracle Fusion Middleware project. What many people don’t get is that Webcenter Portal is a wrapper for ADF Taskflows (or other containers).
It provides security, navigation and pre-built features (such as BPM worklist inside the portal). It also has the great feature to create pages during runtime – unfortunately I have not taken part in project that makes good use of this.
The standard architecture includes a separate Webcenter application with Webcenter Portal project. This project then consumes other ADF projects published as ADF Shared libraries. To do that you deploy your ADF application to Shared Library and include it in the Webcenter Portal dependencies. Then you can reuse the taskflows by drag and dropping them in a page, directly making a link through the Webcenter Navigation or add them during runtime.
Conclusion
The Oracle Fusion Middleware stack is very powerful, but at the same time quite complex. It requires many different skillsets in order to develop a fully working enterprise solution. Last but not least, you need to establish a good development process in order to coordinate the output of different teams/experts and deliver a fully-working Oracle Fusion Middleware enterprise solution.
if you have any questions or need any help contact me at todor.gigilev@dreamix.eu