Thursday, August 27, 2015

Red Samurai ADF Performance Audit Tool v 4.0 - Web Client Request Monitoring and Complete Query Analysis

I'm excited to announce, we have released a new version of our RSA audit tool. This is a major update after previous version released in February 2015 - Red Samurai ADF Performance Audit Tool v 3.4 - ADF Task Flow Statistics with Oracle DMS Servlet Integration.

It is already 3 years, since initial version - Red Samurai Performance Audit Tool - Runtime Diagnosis for ADF Applications. We are using it for many of our customers to monitor ADF performance in both test and production environments. Many new features were added during these years, more features to come.

RSA Audit v4.0 New Features

1. RSA Audit v4.0 dashboard is supporting ADF 12c and Alta UI look

2. Web Client Request Time monitoring. Supported with ADF 11g and 12c. Generic method tracks request time for all ADF UI components. Logged data can be analysed through ADF UI dashboard or directly in the DB. Request time represents complete time from user action in the browser, until request is completed. This includes real user experience - browser processing time, network time, server side time and ADF BC/DB processing times. Runs in VERBOSE logging mode

3. Detail information about ADF fragment, button or other ADF UI component involved into request is being logged together with request processing time and is accessible from audit dashboard. This helps to identify slow actions spanning from Web Client to DB

4. Information about each request is grouped, this allows to compare differences between multiple requests and identify bottlenecks in the application performance

5. Duplicate Queries. Allows to track all executed VO’s, very helpful to identify redundant VO’s executions. Groups VO executions per ECID, this helps to identify VO’s re-executed multiple times during the same request. Runs in MEDIUM logging mode

6. VO’s executed from the same ECID are automatically highlighted - this simplifies redundant queries analysis

7. Number of duplicate executions of VO’s per ECID is calculated and presented in the table and sunburst chart

8. We calculate top VO’s per AM. This helps to set priorities for SQL tuning and understand heavy used VO’s

9. Sunburst chart displays visual representation of duplicate and top VO’s per AM

Tuesday, August 18, 2015

Smart Combo Box LOV with Filter

Combo box LOV with filtering is simple, but effective feature not used often. You should rethink LOV design and apply combo box LOV with filtering where possible. Advantage of such LOV implementation is pretty clear - fast list items access, based on filter criteria. This will reduce number of times required to open LOV popup and improve performance of UI.

LOV VO should implement View Criteria, returning top items to be included into choice list. My example retrieves all jobs with minimum salary greater or equal than 10000. Users will see list items based on this criteria first:

I would recommend to use List UI Hints section of the LOV VO to define LOV UI definition. This will save time when assigning LOV for the attributes, do it once and reuse. I have specified Combo box LOV with filtering based on View Criteria - to include jobs with minimum salary greater than 10000 into initial choice list:

Time is saved when assigning LOV for the attribute - UI Hints are automatically set, based on LOV UI Hints definition:

This is how it looks on UI. Top records are displayed in the choice list, based on applied filter criteria.  All list items can be accessed through More... option:

This is how LOV popup looks by default in ADF 12c. Height is stretched automatically to occupy all possible display height, width is not stretched. Such layout is not good, users don't like it:

LOV popup can be made stretchable with little help of ADF UI CSS. We should use -tr-stretch-search-dialog CSS property to enable LOV popup stretching in ADF 12c (CSS sample is provided with example):

Another important thing to remember about LOV's in ADF 12c - List Range Size property. By default it is being set to -1. This is OK for simple choice lists, where you would like to show all data at once. But not suitable for LOV or combo with LOV, where we don't want to fetch all LOV items at first load:

I would set it to 10, this will populate only visible set of LOV records:

Take a look, how LOV popup window will look after improvements applied - it is stretchable by the user and only initial set of list item records is fetched:

Make sure to use combo LOV with initial filter criteria, to optimise LOV behaviour. Download sample application -

Thursday, August 6, 2015

Tabs Layout Support in Alta UI Tablet First Template

Tablet First Template in ADF 12c is ideal for both tablet and desktop. Combined with Alta UI layout, it offers light and responsive UI experience to the end users. I'm going to describe in this post, how to use ADF Faces Tabs with Alta UI in Table First template. I will show ADF regions are friendly with Web like UI design, without internal scrollbars in the page.

Page can be created referencing Tablet First template with JDeveloper wizard, same as we would use it to create page based on UI Shell template:

Table First template provides multiple facets, Central facet is supposed to contain main content. I'm going to include two ADF Faces UI tab components into central facet. Both tabs will render ADF regions:

Unfortunately it doesn't work properly. Tabs are rendered in the centre of the page:

Luckily there is a fix. We should apply special CSS style class, provided with Oracle WorkBetter Alta UI application - ContentContainerWorkaround. This class must be set for ADF Faces UI panel tabbed component:

After CSS style class fix is applied, tabs are rendered correctly:

I have implemented second tab - Employees Table to test how large ADF UI table renders in Tablet First Template. Table is set with page scroll policy:

ADF region renders table without internal scrollbar, it looks Web style alike:

There are more rows, than can fit into screen. User can scroll down entire page to see the remaining rows. This is especially good for tablet screens, ADF provides really good UI experience:

Download sample application -