Using end user monitoring tools with ADF (eg CA APM Customer experience monitor)

214 views
Skip to first unread message

michael.qui...@gmail.com

unread,
Oct 9, 2015, 8:04:07 AM10/9/15
to ADF Enterprise Methodology Group
Not really a methodology question, but here goes

I have reviewed posts in this group, about using google analytics javascript tags etc for measuring screen activity, but my requirement is a bit different

We have a tool (CA APM Customer Experience monitor) which relies on interrogation of the HTML traffic (similar to Oracle RUEI)
to extract timings for screen submits etc... 
The problem is that for our implementation, there is no obvious changes such as URLs, in fact the URL does not change (stuff after the ? does).
Values such as afrLoop etc, do not change, is there something else in the HTTP header we can use that will give us something

We cant use the DMS/ADF interface, coz our tool relies entirely on the HTTP stream only,  

hope this is not too vague ;-)

Wilfred van der Deijl

unread,
Oct 9, 2015, 8:31:50 AM10/9/15
to ADF Enterprise Methodology Group
We've had some experience using Oracle RUEI and were very impressed with the ease of use and its out-of-the-box ADF support. But since you already licensed CA APM I guess switching to RUEI is not a viable option (although I would really consider it).

If you really want to stick with CA's tool, you might give it a try to set oracle.adf.view.faces.context.ENABLE_ADF_EXECUTION_CONTEXT_PROVIDER to true in your web.xml. This adds an additional XML element to each ADF request with all the information you need. This is also what RUEI uses.

An example of this data is below:
<m xmlns="http://oracle.com/richClient/comm">
  <k v="previous">
    <m>
      <k v="_contextId"><s>01f75139f7c633c3:-45edadbc:14618a78bf4:-8000-0000000000011d</s></k>
      <k v="_clientStartTime"><s>1400574533848</s></k>
      <k v="_clientEndTime"><s>1400574534199</s></k>
    </m>
  </k>
  <k v="primary">
    <m>
      <k v="_clientStartTime"><s>1400574546294</s></k>
      <k v="_eventInfo"><m>
      <k v="eventType"><s>action</s></k>
      <k v="componentClientId"><s>ptemp:r1:0:cb2</s></k>
      <k v="componentType"><s>oracle.adf.RichCommandButton</s></k>
      <k v="componentDisplayName"><s>Next</s></k>
      <k v="regionViewId"><a n="1"><s>/customer-registration-task-flow/basicInfo</s></a></k>
      <k v="regionViewName"><a n="1"><s>ptemp:r1</s></a></k>
    </m>
  </k>
  <k v="_pprTargets"><s>ptemp:r1</s></k>
</m>

The _pprTargets key let's you know which components where the ppr targets (re-rendered). The primary gives you a map with all the information about the current request including which region (taskflow) triggered the request and which component. The 'previous' key gives you timing information about the previous request. The client side javascript measured this and submits this back to the server on the subsequent request. RUEI (or your tool) can capture this information and use it for further analysis. It is all in the http stream.

Hopefully I understood your question and this is helpful.

--
--
You received this message because you are subscribed to the ADF Enterprise Methodology Group (http://groups.google.com/group/adf-methodology). To unsubscribe send email to adf-methodolo...@googlegroups.com
 
All content to the ADF EMG lies under the Creative Commons Attribution 3.0 Unported License (http://creativecommons.org/licenses/by/3.0/). Any content sourced must be attributed back to the ADF EMG with a link to the Google Group (http://groups.google.com/group/adf-methodology).

---
You received this message because you are subscribed to the Google Groups "ADF Enterprise Methodology Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to adf-methodolo...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Florin Marcus

unread,
Nov 16, 2015, 5:42:36 AM11/16/15
to ADF Enterprise Methodology Group
Hi Michael,

I came late to this post, but I guess I should share our experiences on monitoring user actions in ADF.

We needed this type of monitoring on our Redsamurai Performance Audit and using Click History was not really an option as most of our customers still run  ADF 11g.
Therefore we had to come up with a custom implementation, similar with the one Oracle offers.
We accomplished this by adding a clientListener  to every UI component (buttons, menu inputText, Choice lists etc). This means we monitor from Javascript when a button is clicked and how much time it takes for the button to execute. Additionally we collect information about the context: button name, header title, page name etc.

We did this in generic fashion, changing the HTML response generated by ADF at runtime.

For example, the HTML generated by  an af:commandLink looks like this:

 "new AdfRichLink('pt1:bBarFDC:logoLinkAlt',{'shortDesc':''})";

We are changing the button at runtime to look like this:

 "new AdfRichLink('pt1:bBarFDC:logoLinkAlt',{'clientListeners':{action:callJavascriptFunction},'shortDesc':''})";

Where
callJavascriptFunction is the function doing the monitoring.


Based on our texts the introduced overhead is minimum, but there is one drawback to it: each version of ADF needs a slightly different implementation, as the generated HTML changes.













Frank Houweling

unread,
Nov 23, 2015, 11:15:15 AM11/23/15
to ADF Enterprise Methodology Group
Application performance tools on the market can indeed only distinguish business transactions by looking at the URL. As we all know in ADF applications, the URL of ADF applications does not change during a session due to the use of AJAX for partially refreshing pages.

Some APM tools however let you distinguish HTTP request by configuring a HTTP parameter. Then your APM monitor not only looks at the URL but also at the HTTP parameter.
I recommend to try out the event parameter. It's in the HTTP request itself. Configure this parameter to distinguish requests in your monitoring tool.
This gives the ID of the button/link (ADF Component ID) that initiated the request. Your APM tool can then recognise business actions like like 'add to cart' or 'pay bill'. A good habit is to give your buttons/links a recognizable name (like 'addToCard', 'startEmployeesReport').

Just for an example how to get it programmatically (but you should configure it in your APM tool):
String event = httpServletRequest.getParameter("event");

For our own APM monitoring tool (ADF Performance Monitor) we have used the parameter described earlier in this thread; oracle.adf.view.faces.context.ENABLE_ADF_EXECUTION_CONTEXT_PROVIDER (set to true) in web.xml. Works quite well.

Frank

Op vrijdag 9 oktober 2015 14:04:07 UTC+2 schreef michael.qui...@gmail.com:

vikceo

unread,
Dec 15, 2015, 12:41:36 PM12/15/15
to ADF Enterprise Methodology Group
what the performance overhead for enabling the parameter in web.xml ?
Reply all
Reply to author
Forward
0 new messages