Tuesday, December 30, 2014

Data Presenter article in Top 10 OTN WebCenter Articles for 2014

Happy to know that my article about Data Presenter on OTN is in top 10 Webcenter articles on OTN. Below is the link for the listing of top 10 webcenter articles on OTN.

https://blogs.oracle.com/archbeat/entry/top_10_otn_webcenter_articles

Congrats to all the persons whose article is there on the list.

Its Good to close 2014 on a Happy Note :)

Have loads of fun on New Year Eve and may you have an awesome 2015.

See you guys in 2015 with next post.

Thanks

Monday, December 22, 2014

Custom Exception Handling in ADF - Model Layer Generic Framework Design

I have observed that there are lot of users who asks questions on OTN and have problem in designing the custom generic exception handling framework. So in this and next some of the posts I will be describing how we can lay down a generic way to report custom exceptions to the page. These custom exceptions may be mostly for Business Specific errors for which we need to display a custom user friendly message on the page to the user.

In this post we will be seeing how we can customize the error on Model layer and take error messages from a resource bundle defined in the application.

Lets get started. We will first create a generic framework project where we will add exception handling related classes. We give it a name as FrameworkUtil. Framework util project will be dependent on model project from where custom Exceptions will be thrown in the enterprise applications.

First lets set up FrameworkUtil project - ADF Model Project 

Friday, November 28, 2014

NIAIOUG - 9th Tech Meet at Jaipur India

I will be a part of 9th NIAIOUG Tech meet at Jaipur Rajasthan India. This is for the first time NIAIOUG is organizing Oracle User Group Tech Meet in Rajasthan. I am very please to be part of this meet and look forward to a great audience at JECRC University Jaipur. Hope to see some awesome IT Professionals and Students in my session.

Aman, Nikhil and Navneet will be speaking on Database topics. This all will be very useful for DBA's as well as aspiring DBA's.

I will be speaking on ADF and Jdeveloper 12c. There will be a small demo at the end and then there will be open question answers session where anyone can ask questions as how to learn , move into Oracle ADF.

Hope to have a good time @ JECRC Jaipur.




Thanks !!

Tuesday, November 25, 2014

Data Presenter Framework - Webcenter Portal PS7

Data Presenter

One of the most useful features of Webcenter Portal is Data Presenter. Data Presenter allows developers/administrators to create data controls at runtime, and they are readily and immediately available for application usage, without any restart of servers. One more advantage of Data Presenter is ability to create task flows at runtime. Both data controls and task flows can be created at runtime in the Webcenter Portal PS7, with no coding needed in JDeveloper. These newly created data controls can be used in the task flows to create UI and these task flows can be reused wherever needed across the application.

This is useful for Developers, Technical Leads and Technical Architects as earlier, they need to take a decision to create custom task flows separately in JDeveloper and deploy them on Weblogic and use them inside the Webcenter Portal. This is highly useful for developers and Webcenter administrators due to easy learning, and saves significant effort. All this requires quite an effort and is little cumbersome to set it up at the beginning. Data Presenter marks this problem and provides solution to this in quite good way.This article provides an overview of WebCenter Data Presenter and hands-on instructions, steps to implement above functionality.

Monday, November 24, 2014

Persisting to MDS Store using Programmatic API's in ADF

In last some of the posts regarding MDS, we saw how to achieve Personalizations and Seeded Customizations in Enterprise applications using Oracle ADF. There was explanation how to leverage Oracle ADF MDS framework for this purpose. Most of the personalization and customization is provided OOTB by the framework and just requires correct configurations and steps to achieve. These are declarative user customizations which allow to implicit save component changes done by the user.

But there are scenarios where some custom persistence is required to be saved to MDS Store. This means, that state of the components needs to be changes based on certain conditions. This explicit saving of state of components can be done using Java API provided by the framework.

Lets take an example for this post:
This example uses a ShowDetailFrame which is webcenter component. There is a button show/hide SDF which hides and shows the below SDF. Now this hide and show of SDF is being persisted in MDS Store. For now we will take File system based MDS Store. So for a particular user, when user performs show or hide of SDF, its state is stored in MDS and is presented to the user when it Logins next time into the application.

Tuesday, November 11, 2014

Sangam 14 - My Experience

It was a proud moment for myself to attend and present in Largest Independent Oracle Event in India. The conference was very well organised by AIOUG and was a way to network and learn about latest trends in Oracle Stack. Though the conference had large number of  DBA's (Yes they are super people) sessions but there were also good amount of sessions for Oracle Fusion Middleware.

Session on Big Data by Satyender was an eye opener of where we are heading towards in way to store data apart from conventional RDMS. Its the way ahead and also for Application Developers. For application developers, we should know how to use NoSQL and Big Data databases for our applications.

Friday, October 17, 2014

Session at Sangam 2014 - AIOUG

I am proud to announce that I will be Presenting a Session at Sangam 2014 this year in Bangalore India.

Sangam is a yearly Oracle User Group Conference Hosted by All India Oracle User Group (AIOUG) and is the largest Independent Oracle event in India.


Below are the details of my Session :

Session           : 201421

Session Title   : Customizations of Enterprise Applications using Meta Data Services in Oracle ADF

Duration          : 50 Minutes

Track               : Development Track


The Session will be about Customizations and Personalizations of Applications using powerful XML based MDS framework provided by Oracle ADF. It will consist of introduction to Meta Data Services (MDS) and how MDS framework is enabled in ADF applications using Jdeveloper. There will be an explanation of how MDS works behind the scenes and how requests for Customizations are being persisted in MDS Store. Finally there will be a Demo of Personalization using Jdeveloper 12c.

I am excited to talk about this topic @ Sangam14.

See you there !!


Friday, September 19, 2014

Customization Classes for MDS in Oracle ADF

In last blog posts Seeded Customizations using MDS in Oracle ADF & Personalization using MDS in Oracle ADF Personalization and Customizations were described using power of MDS framework. The most important part in configuring/implementing Customizations which we can say is heart are Customization Classes. So it becomes very important to know and have a clear concept about what Customization classes are , what they do and how to implement them for use cases.

Customization Classes

First we need to understand what are Customization Classes. Customization classes provide a layer of customization. This is a very common technical definition for MDS Customization classes. In very simple terms, they return a single/multiple values for which different customizations are applied to the base document.
This means suppose while configuring/designing customizations, developer configured ABC changes (Customizations) for X value, then at the runtime when the Customization class method(will the method later in article) will return X value, ABC Changes will be applied on the document. Thus Customization classes return values and changes stored in MDS are applied to the base document based on these Classes.

Sunday, August 24, 2014

Seeded Customizations using MDS in Oracle ADF

In the last post Personalization using MDS in Oracle ADF we saw the power of MDS Framework in Oracle ADF using which Users can personalize pages, components etc according to their own need. MDS saves these changes in MDS Store based on every user and applies on the runtime to the base document.

In Personalization, user is at the driver seat , changing things according to the needs. But there are cases where the application is developed and after there is a requirement of two different flavours of the same application. For example, there is a ADF application and there are two clients. One client wants some fields to be visible and some specific color settings while other client wants other fields to be hidden and different color settings. We can also put in this way, that one client want some regions (task flows) to be displayed and other client says other regions to be displayed.

Now in these cases the , making changes to the existing application will be difficult. Most common solution will be we create two versions of application , each version having specific changes required by the client. Hmm that works good for two clients but what will happen if there are hundreds, thousands of clients. One has to create / maintain same number of versions of applications. More to it, what will happen if there will be a common functionality change which needs to go to all versions. Maintenance will become a nightmare.

So by using Seeded Customizations provided by MDS, changes for specific needs / clients can be done on base document. There will be a single Base Application and changes corresponding to all the clients/layers will be done and these changes will be applied on runtime depending upon which client is using it..

Friday, August 15, 2014

Personalization using MDS in Oracle ADF

Personalization for the users is the most wanted features in Enterprise applications nowadays. This gives user good experience and makes him to decide what and how he needs to see things in Enterprise Applications .

This post we will see how can we do User level Personalizations in Oracle ADF Applications and steps to configure it.

Example uses Jdev 11.1.1.7. Lets get started !


Created a simple ADF Application. Created BC from HR schema consist of EmployeesEO/VO and DepartmentsEO/VO and AppModule.

Implemented ADF Security. This is required since we are doing personalization for a particular user


Saturday, August 2, 2014

SecurityContext TaskFlowViewabe in ADF

Many times in our ADF Applications, we create Module workspaces which are specific to module and use these workspaces as ADF Shared Libraries in the Master Application. Master application has JSPX pages which uses adf task flows from shared libraries as regions in them.

While enabling ADF Security and granting permissions, authorizations are given to only Pages and task flows. There are other components on the page which also requires authorizations. For example Widgets/Buttons/Headers ,they should be shown to the user only when they are authorize to.

So for the above said use case, most common solution is SecurityContext which is provided by ADF Framework. Below code is being set to rendered/visible property.

#{securityContext.userInRole['UserRoles']}

Sunday, June 15, 2014

Attributes in Page Templates ADF

In most of the applications, one of the most versatile reusable component that is being used is Page Templates. Page templates serve as a generic component which is used to define the structure and layout of the pages.

There are many use cases where there is a requirement to have different behaviour for some of the pages than rest of the pages using the same Page Template. In this scenario, the components for which different behaviour is required are made parametrize. These parametrized are provided in the form of attributes. These are simply variables which can be set in the Page which is using the Page Template having these variables.

Use Case : In this use case, we have a requirement that some of the pages should show error messages on the top of the adf editable form, while some pages should not show error message on top.

Thursday, June 12, 2014

Drag and Drop Movable Box in Webcenter Portal

Webcenter provides Out of the box component to create a wrapper (widget) which is movable. Moveable box provides drag and drop features where drag and drop can be done between the moveable boxes.

The component used to do this is panelCustomizable. One can use this component in through both Portal Builder as well as Portal Framework Application.

In framework application in Jdeveloper, panelCustomizable can be found in composer option in Components Palette.

Friday, May 23, 2014

AutoSelect & Deselect Checkbox in ADF Tree Component

This post is about how to implement a use case having checkboxes in ADF Tree component. Below is the use case :

Use Case
There is an ADF Tree component using Departments as master and Employees as child. Departments acts as parent node and has all the child employees under it in the Tree. Departments as well as child employees should have checkbox. When user checks the checkbox of a department , all the checkboxes of the child employees should be autoselected. And when user deselects the department, they should be deselected.

Friday, May 9, 2014

Parent to Region Communication using Shared & Isolated DataControls

In this post we will look at how Parent and Region communications are done in ADF. We will take two cases in this post. One is when by default Task Flows are set to have Shared Data Control scope and the other one is when Task Flows are set to use Isolated Data Control Scope.

Below is the picture which depicts what we are targeting to achieve.




Thursday, April 24, 2014

Unlocking HR Account in Oracle XE Database

In this post I will be showing the steps to how to unlock HR account in Oracle XE database. After some days, when you try to access HR schema, it says Account Locked. 

I always forget the steps in order to unlock the HR schema, so that's the reason I am writing this simple post.

Open command prompt and enter the command as follows :

sqlplus / as sysdba

This will not ask password and will open the SQL plus prompt.

Tuesday, April 22, 2014

Consuming SOAP Service without creating/using RequestVO/ResponseVO on Client Side

Many times in ADF/Webcenter implementation projects, consuming SOAP services is one of the requirement. Web Services are consumed in ADF by creating Web Service Data Control or by generating proxys.

Some of the services expect very few input parameters may be 2-4 but most of the Web Services expect more parameters. For services which expect more number of parameters, most of the times, all the input variables are a part of RequestVO POJO object. Since this RequestVO is required to provide input to the WebService, the structure with attributes of POJO or VO expected by the service needs to be shared to the client making the request.

For example, in this post we will be taking a simple example of EmployeeService.

Friday, April 4, 2014

Too Many Open Files Exception while running application on Unix

While working on client side and running Webcenter portal application on the Unix System, we saw exception stating : error = 24 , Too Many Open Files.

Caused by: java.io.IOException: java.io.IOException: error=24, Too many open files
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:148)
    at java.lang.ProcessImpl.start(ProcessImpl.java:65)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
    ... 40 more

Saturday, March 22, 2014

Could not create the Java Virtual Machine Unrecognized option: -jrockit

While working with a client, after client installed all the required softwares, WLS, Jdeveloper and JDK on the machines , there was an error which came up on starting integrated weblogic server from Jdeveloper. That error was something like below :-

Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Unrecognized option: -jrockit

Friday, February 28, 2014

Application Module Connection Sharing - Code Example Proof

There is a excellent and very informative video on AM Connection Sharing by Chris Muir where he describes how Multiple Root application modules due to sharing of ADF Library jars can be made to use single connection under the covers by using powerful feature of transaction management in task flows. Thanks to Chris for explaining this wonderful concept. Here is the link to the video AM Connection Sharing .

In this post we will see this powerful concept with the help of code example. Below is the concept:

"If there are multiple root AM's may be due to shared libraries, if task flows are used with default No Controller Transaction option, then there will be as many number of connections to DB as number of Root AM's. On the other hand if task flows in the application uses any of the three Transaction Option, then there will be Only Single connection to the DB be there any number of Root AM's , i.e. connection will be shared."

Tuesday, February 11, 2014

Af InputDate Default Message hint - Disable

When we click on the af:InputDate , As soon as we click inside it, there is a default note hint which comes besides the inputDate field. Below is how it does.


So this works good for some implementations but sometimes client wants to avoid this default behaviour.
We had a requirement where client dsnt wanted this default hint note to be displayed on clicking the Input Date field.

Tuesday, January 28, 2014

Custom Rules for ADF BC Java Files

There is a very good explanation of how to write custom rules using Jdev Extensions @ Write your own Audit Rule Extension in JDeveloper 12C by Richard Olrichs.

We will be discussing how we can write rules for ADF BC framework classes like EntityImpl and ViewObjectImpl.

The way how we identify that we are in current file for example, to know wether we are in Entity defination XML file we need below piece of code. This tells the Custom Analyzer that for all the files other than entity defination files, the Rules should be set false. This means that for all files other than entity files, rules for Entity Objects should be disabled i.e  Framework should not execute further drill down methods of the Analyzer which are exit(AuditContext, Drill Down Elements) in most of the cases.

Friday, January 17, 2014

Jdev Extensions & Custom Audit Rules

Introduction to Oracle Jdeveloper Extensions SDK. Setting up project and developing Custom Rules using Jdev Extensions.

Monday, January 13, 2014

Configuring Extensions.xml and Manifest.MF after creating extensions project

In my last post Creating and Debugging Jdeveloper 12c Extensions project, I explained how to download Extensions SDK and create a new Jdev Extensions project.
But that was not all to set and start creating jdev extensions.

After creating the project, there is very important step which has to be taken care of to start working with extensions.

So after we created the extensions project, it still does not have library dependencies for jdev audit extensions. If we check its classpath, it shows something like below :-