Friday, April 17, 2015

JDev/ADF sample - Monitoring PPR Request Time on ADF UI Client Side

  • Monitoring PPR Request Time on ADF UI Client Side. We can measure how long it takes to process request on the server side, however it is equally important to measure how long PPR request takes on the client side. Mainly because this will be a key factor for application performance exposed to the end user. There is relatively easy approach in JSF 2.0 to measure PPR request time on client side - with a special ajax tag. ADF 11g R2 and ADF 12c are based on JSF 2.0, this means we can use such tag and measure request performance. Read in my previous post how to monitor page load time in ADF UI client - Monitoring Page Load Time on ADF UI Client Side.
    Download - ADFAltaApp_v3.zip

Wednesday, April 15, 2015

JDev/ADF sample - Monitoring Page Load Time on ADF UI Client Side

  • Monitoring Page Load Time on ADF UI Client Side. In certain situations, it might be useful to monitor ADF page load time. This is pretty easy to achieve with Navigation Timing API and Java Script. Navigation Timing API is supported by modern browsers and allows to retrieve client side load time. It takes into account data transfer time and actual rendering in the browser - real time it took for a user to see the content.
    Download - ADFAltaApp_v2.zip

Wednesday, April 8, 2015

JDev/ADF sample - Simple (Effective) Refresh Approach for ADF Regions

  • Simple (Effective) Refresh Approach for ADF Regions. I often hear developer asking about how to refresh different regions on the same page, when specific event happens in one of the regions - to refresh dependent regions. Usually developers would like to use something more simple than Contextual Event approach. There is more simple approach, may be it doesn't work for all the possible use cases - but it does it job, when just refresh is needed. This approach is based on dummy parameter value, being used as dependent region input parameter, with refresh option set to be ifNeeded.
    Download - SimpleReloadRegionApp.zip

Friday, April 3, 2015

JDev/ADF sample - Indicator for Background REST Service Access with A-Team Mobile Persistence Accelerator

    Download - MobileServiceBusApp_v8.zip

Sunday, March 29, 2015

JDev/ADF sample - Automatic ADF Popup Opening on Fragment Load

  • Automatic ADF Popup Opening on Fragment Load. I had a post about opening ADF Popup on page load - Opening ADF PopUp on Page Load. Approach is quite straightforward, developer needs to use showPopupBehavior operation with appropriate trigger type. When it comes to ADF Popup opening on fragment load, implementation is a bit more complex. There is a known method to implement hidden text field and in the getter method call your custom logic - getter will be executed when fragment loads. However, this is not very efficient, you will need to add condition to distinguish between first and subsequent calls to the getter (it will be executed multiple times). I will describe in this post different approach - using ADF poll component and forcing it to execute only once after fragment load.
    Download - FragmentPopUpLoadApp.zip

Sunday, March 22, 2015

JDev/ADF sample - Background REST Service Access with A-Team Mobile Persistence Accelerator

    Download - MobileServiceBusApp_v7.zip

Tuesday, March 17, 2015

JDev/ADF sample - ADF BC Property Set to Group Attribute Hints

  • ADF BC Property Set to Group Attribute Hints. There is one ADF BC component not mentioned often - Property Set. This is a bag of properties/hints, it can be applied for EO/VO attributes. Frequently used hints can be defined in Property Set once, without repeating the same for each attribute. This simplifies maintenance, if there will be a change required in the future - much easier to change it in single place. I will show below a practical example, where Property Set is applied for EO attribute to define a date type.
    Download - PropertySetApp.zip

Monday, March 16, 2015

JDev/ADF sample - REST Service Access with A-Team Mobile Persistence Accelerator

  • REST Service Access with A-Team Mobile Persistence Accelerator. A-Team Mobile Persistence Accelerator (AMPA) works on top of Oracle Mobile Application Framework (MAF) and provides tools to simplify consumption of REST services. It enables transparent persistent layer usage on the device with the option of synchronising offline data with the server side. In this post, I will be testing AMPA in the context of the use case implemented previously - MAF 2.1 Alta Mobile UI and Oracle Mobile Suite. Working MAF application, where REST service calls are coded by hand, will be changed to fetch REST service data through AMPA - reusing existing Data Control. This is unusual approach, most of the tutorials related to AMPA describe end-to-end scenario, where Data Control is generated on top of AMPA service class and UI is generated with AMPA wizard. Mobile UI in most of the cases will be custom made and we rarely generating it. This is why it is important to explain, how to use AMPA with custom UI and Data Control.
    Download - MobileServiceBusApp_v6.zip

Friday, March 6, 2015

JDev/ADF sample - Invoking REST Service from Oracle ACM Java Activity

  • Invoking REST Service from Oracle ACM Java Activity. In this post I will show you, how to call REST service from ACM Java activity class method. This could be useful in the situations, when you would like to have programmatic ACM activity integrated with REST service data. We could access ACM payload data from within the method overriden in the class implementing Case Activity Callback.
    Download - HotelBookingProcessing_v2.zip

Thursday, February 19, 2015

JDev/ADF sample - ADF BC Range Paging and REST Pagination

  • ADF BC Range Paging and REST Pagination. In this post I would like to explore and integrate two thing - ADF BC Range Paging and REST service pagination. It would inefficient to retrieve entire set of data in the REST service, ideally should be available option to specify number of rows and range number to fetch. ADF BC allows to query VO in Range Paging mode - SQL query will be constructed with row numbers, to query data in certain range of rows (this allows to fetch less data from DB). We could combine this with REST service and provide light interface to access data.
    Download - RestADFBCApp.zip

Monday, February 9, 2015

JDev/ADF sample - MAF 2.1 Alta Mobile UI and Oracle Mobile Suite

    Download - MobileServiceBusApp_v5.zip

Tuesday, February 3, 2015

JDev/ADF sample - Oracle Mobile Suite - Web Service Performance Optimisation with Result Caching

    Download - MobileServiceBusApp_v4.zip

Saturday, January 31, 2015

JDev/ADF sample - MAF 2.1 - Debugger Improvements and Mobile REST Client

  • MAF 2.1 - Debugger Improvements and Mobile REST Client. I was blogging previously about Oracle Mobile Suite and REST service transformation from ADF BC SOAP service. Today I'm going to blog the next step in the same series - MAF client consuming REST service exposed from Oracle Mobile Suite ESB. I'm going to highlight improvements in debugging process for MAF, provided with the latest 2.1 release. I had couple of challenges implementing and mapping programmatic MAF client for REST service, all these were solved and I would like to share the solution with you.
    Download - MobileServiceBusApp_v3.zip

Monday, January 26, 2015

JDev/ADF sample - How To Add New Operation in Oracle Mobile Suite Service Bus REST Service

    Download - MobileServiceBusApp_v2.zip

Friday, January 16, 2015

JDev/ADF sample - Reading MAF iOS Simulator Logging Output

  • Reading MAF iOS Simulator Logging Output. It could be very handy to know how and where to read MAF logging output from iOS simulator. This is not that obvious to find logging output on Mac OS system. All log is written into application.log file, this file is located inside temporary application directory. I will explain how to locate this directory and how to open application.log file. You can read more about MAF testing and logging here - 18.5 Using and Configuring Logging.
    Download - ADFMobileLogginApp.zip

Saturday, January 10, 2015

JDev/ADF sample - How To Start a Case in Oracle Adaptive Case Management 12c

  • How To Start a Case in Oracle Adaptive Case Management 12c. Blog reader was asking to describe how to start a new case in Oracle ACM 12c. You can read my previous blog post on ACM 12c topic - Adaptive Case Management 12c and ADF Human Tasks. There are multiple ways to start a case, depends if you want just to test the case or really use it. I would recommend to use SoapUI to test the case. In the real scenario, case most likely will be started from third party web service or through ACM 12c Java API. Here I would like to describe, how you could use SoapUI to test ACM process during development.
    Download - HotelBookingProcessing_v1.zip

Sunday, January 4, 2015

JDev/ADF sample - Oracle Mobile Suite Service Bus REST and ADF BC SOAP

    Download - MobileServiceBusApp_v1.zip

Tuesday, December 30, 2014

JDev/ADF sample - Custom ADF Application with New ADF 12c Alta UI

  • Custom ADF Application with New ADF 12c Alta UI. I was inspired by recently published WorkBetter application with ADF 12c Alta UI demo (you can read more about Alta UI and download WorkBetter application from here - Oracle Alta UI). I have decided to create my own application, using the same guidelines as described by Alta UI. While WorkBetter application is based on EJB, my application is using regular ADF BC model. Right now it displays a list of employees from HR schema and allows to edit selected employee data. In the future, I plan to add CRUD support and more advanced UI features. I would recommend to watch a video from Shay Shmeltzer, he describes how to build your first Alta UI application in ADF.
    Download - ADFAltaUI.zip

Wednesday, December 24, 2014

JDev/ADF sample - Configuring MDS Customisation Layer and Layer Value Combination in ADF

  • Configuring MDS Customisation Layer and Layer Value Combination in ADF. With this post I would like to dive a bit deeper into MDS customisation and layer combination handling. By default, there is defined customisation layer - site. Typically we set our own customisation values for this layer, as a result - all customisations usually are stored under site layer. There could be situations, when more advanced setup would be required - to be able to control layer and layer value combination in a custom way. In other words - to be able to define your own custom layer and then provide customisation values for this layer (MDS customisations will be stored under custom_layer/custom_layer_value, instead of default site/custom_layer_value). Oracle docs would not describe how to handle on runtime layer name to be dynamic and retrieve it from some sort of configuration file. I'm going to describe a technique for this, allowing to combine and group MDS customisations under custom layer and layer values folders.
    Download - MDSCustomizationsApp_v3.zip

Thursday, December 4, 2014

JDev/ADF sample - Adaptive Case Management 12c and ADF Human Tasks

  • Adaptive Case Management 12c and ADF Human Tasks. I'm diving into the new topic - Adaptive Case Management 12c and ADF integration. Today will be the first post in the category and there are more posts planned for the future. I strongly believe that ACM (Adaptive Case Management) makes a great extension for standard BPM. Mainly because it allows to define a loose process, without strict order steps. Process steps can be executed in different order, depending on the situation requirements, at given time. I will be explaining how to implement ADF Human Task for ACM activity and will share several tips, how to make it run in BPM Workspace application.
    Download - HotelBookingProcessing_v1.zip

Saturday, November 29, 2014

JDev/ADF sample - Adaptive Form with Dynamic ADF LOV Value Binding

    Download - DynamicAttributeBindingApp_v2.zip

Wednesday, November 26, 2014

JDev/ADF sample - Suppressing ADF LOV Like Operator Filtering V2

    Download - ADFTableApp_v2.zip

Wednesday, November 19, 2014

JDev/ADF sample - BPM Authentication On Behalf Business User from ADF

    Download - adfbpm11gr4.zip

Thursday, November 13, 2014

JDev/ADF sample - Dynamic ADF Buttons Solution for Oracle BPM Outcomes

  • Dynamic ADF Buttons Solution for Oracle BPM Outcomes. BPM Human Task activity is configured with outcomes. Based on these outcomes, buttons in ADF UI are constructed allowing user to perform different actions with the task. Auto generated ADF Human Task form contains a set of predefined buttons and this set is controller with rendered flag. My sample application is using different approach, it implements custom tasks table and dynamic ADF UI for the human task input form - Dynamic ADF Form Solution for Oracle BPM Process. Once user selects a task, action buttons are generated dynamically - using a set of outcomes configured for the particular task.
    Download - adfbpm11gr4.zip

Friday, November 7, 2014

JDev/ADF sample - Dynamic ADF Form Solution for Oracle BPM Process

    Download - adfbpm11gr4.zip

Monday, November 3, 2014

JDev/ADF sample - MdsMetadataResourceProvider Error in ADF 11.1.1.7

  • MdsMetadataResourceProvider Error in ADF 11.1.1.7. If you have migrated ADF application to ADF 11.1.1.7 version recently, you may see error in the log related to the internal MetadataResourceXmlImpl class usage. Runtime behaviour will not be affected, but there could be many redundant error messages in the log.
    Download - ADFMetadataInternalApp.zip

Tuesday, October 28, 2014

JDev/ADF sample - Handling Date Format and ADF Bindings

  • Handling Date Format and ADF Bindings. There are tips and tricks related to the date format handling and ADF bindings. When Oracle date type attribute is being used through ADF binding expression, it will be converted to String with default format (yyyy-MM-dd), no matter what original format was set. This is described in API for the Oracle date type - Date constructor with String. Below I'm going to explain how it works and how you could optimise ADF application to handle date type attributes from ADF bindings layer.
    Download - DateFormatApp.zip

Thursday, October 23, 2014

JDev/ADF sample - ADF BC View Object SQL Query Customization with MDS

    Download - MDSCustomizationsApp_v2.zip

Sunday, October 12, 2014

JDev/ADF sample - Workaround for ADF 12c Choice List Blank Selection Issue

  • Workaround for ADF 12c Choice List Blank Selection Issue. I would like to share a workaround for Choice List component in ADF 12c. There is specific issue, related to blank selection - as soon as user selects blank selection in the choice list, it starts to invoke value change listener for that list, each time when any other element is selected in the table. This is quite annoying and could lead to unexpected results, especially if you depend on logic implemented in value change listener.
    Download - ADFChoiceList12cApp.zip

Wednesday, October 8, 2014

JDev/ADF sample - New Alta UI for ADF UI Shell Application

    Download - MultiTaskFlowApp_v12c.zip

Saturday, September 27, 2014

JDev/ADF sample - Suppressing ADF LOV Like Operator Filtering

  • Suppressing ADF LOV Like Operator Filtering. ADF LOV component provides filtering option with STARTSWITH operation. This is used to check if similar value exists in the LOV, if such value exists - LOV popup is opened with all the suggested values. If user types 10 and there are 100, 1000 in the LOV, instead of accepting value 10 - LOV popup will be opened and all three values 10, 100, 1000 will be displayed. While this is useful, there is no option to turn off such functionality. My post describes a solution, that can be used to disable suggested LOV filtering.
    Download - ADFTableApp.zip

Tuesday, September 23, 2014

JDev/ADF sample - ADF Region Data Synchronisation with Change Event Policy

  • ADF Region Data Synchronisation with Change Event Policy. This post applies for multiple ADF regions, based on the same Data Control. I will show you can avoid using ADF Contextual Events to synchronise two ADF regions, when both are based on the same Data Control and this Data Control is shared between the two.
    Download - RegionCommunicationApp.zip

Saturday, September 20, 2014

JDev/ADF sample - JDeveloper 12c ADF View Token Performance Improvement

  • JDeveloper 12c ADF View Token Performance Improvement. There is known limitation in ADF 11g, related to accessing application in the same session from multiple browser tabs. While working with multiple browser tabs, eventually user is going to consume all view tokens, he will get timeout error once he returns back to the previous browser tab. Unused browser tab is producing timeout, because ADF 11g is sharing the same cache of view tokens for all browser tabs in the same session. This means the recent mostly used browser tab is going to consume all view tokens, other browser tab would loose the last token and screen state will be reset. This behaviour is greatly improved in ADF 12c with separate view token cache supported per each browser tab. If your application is designed to allow user access through multiple browser tabs in the same session, you should upgrade to ADF 12c for better performance.
    Download - ViewTokensTest.zip

Tuesday, September 16, 2014

JDev/ADF sample - Handling Format for BigDecimal Numbers in ADF BC

  • Handling Format for BigDecimal Numbers in ADF BC. This may not be as straightforward as it sounds - to define a format for a number attribute in ADF BC. Especially if you are going to have large number (more than 15 digits). Most likely you are going to experience precision/scale and rounding issues, for BigDecimal and Number type attributes with format mask applied. Sounds frustrating? Yes it is. I hope my blog post will help you to implement proper number formatting.
    Download - ADFFormattingApp.zip

Wednesday, September 10, 2014

JDev/ADF sample - ADF BC View Object Change Notification Listener

  • ADF BC View Object Change Notification Listener. ADF BC allows to define triggers to listen for row changes on VO level. We can listen for row updates, inserts and deletes. This can be useful, if you would like to invoke specific audit method or call custom methods to populate dependent transient VO's with updated data.
    Download - ADFBCListenerApp.zip

Sunday, September 7, 2014

JDev/ADF sample - Calculating HTML ID for ADF UI Table Row

  • Calculating HTML ID for ADF UI Table Row. Each row in ADF UI table is assigned with ID, this is how rows are referenced in HTML. I had a blog post describing how to set a focus for newly inserted row - Improving ADF UI Table CRUD Functionality with Auto Focus. I'm getting ID for selected row using getClientRowKey method and this method returns row identifier, the one which is used in HTML. Blog reader was trying to use the same method to get ID for any row from the table, but it didn't worked for him. The trick is how to construct a key properly, to use this key to retrieve ID. I'm going to describe it in this quick sample application below.
    Download - ADFTableFocusApp_v2.zip

Saturday, September 6, 2014

JDev/ADF sample - Automatically Applying Get Posted Attribute Method for Row Refresh

  • Automatically Applying Get Posted Attribute Method for Row Refresh. There is out of the box ADF BC method available to refresh current row, see this post for details - Refreshing Single Row Without Full Rollback. There could be use cases, when refresh method is not sufficient (particularly for a row with dependent LOV's) - it may not reset data correctly. Also there is extra SQL query sent to DB, to fetch row data by key. Even it works well most of the time, still it is good to know the alternative. I'm going to present alternative row refresh approach here, using getPostedAttribute method.
    Download - CustomRowRefreshApp.zip

Friday, August 29, 2014

JDev/ADF sample - End-To-End ADF Cloud Deployment Process

  • End-To-End ADF Cloud Deployment Process. ADF and ADF BC perfectly runs on Oracle Java Cloud. You could deploy regular ADF application straight away from familiar JDeveloper environment without any hassle. With this blog post I would like to walk through the process of migrating DB model to the cloud and deploying ADF application (enabled with ADF Security) to the cloud.
    Download - TreeComponentsCloud.zip

Sunday, August 24, 2014

JDev/ADF sample - Transactional Data Caching for ADF Mobile MAF Application

    Download - MAFMobileLocalApp_v4.zip

Tuesday, August 19, 2014

JDev/ADF sample - Accessing ADF Iterator Binding from Value Change Listener

  • Accessing ADF Iterator Binding from Value Change Listener. This is a quick hint about how to access ADF iterator binding from value change listener method. Let's say you have generic value change listener, reusable with any kind of input components and you want to get information about underlying ADF BC View Object structure in that listener. Value Change Listener provides access to UI Component, we should evaluate component expression and look up in the bindings for component binding name.
    Download - ADFIteratorAccessApp.zip

Tuesday, August 12, 2014

JDev/ADF sample - Data Caching Implementation for ADF Mobile MAF Application

  • Data Caching Implementation for ADF Mobile MAF Application. If you are building mobile application with web service call integration, you must take into account data caching strategy. Without data caching, mobile application will try to establish too many connections with the server - this will use a lot of bandwidth and slow down mobile application performance. This post will be focused around the scenario of implementing simple data caching strategy. In my next post, I'm planning to review MAF persistence framework from Steven Davelaar - this framework is powerful and flexible. Simple data caching strategy makes sense for smaller use cases, when we don't need to use additional framework for persistence.
    Download - MAFMobileLocalApp_v3.zip

Thursday, August 7, 2014

JDev/ADF sample - ADF Thematic Map in ADF 12c (12.1.3)

    Download - ThematicMapApp.zip

Tuesday, August 5, 2014

JDev/ADF sample - Standard ADF BC Passivation/Activation for Transient View Object

  • Standard ADF BC Passivation/Activation for Transient View Object. If you want to implement transient View Object in ADF BC, you must make sure it will be passivation/activation ready, otherwise you may loose data. There are several ways how to achieve passivation/activation for such View Objects - override passivation/activation lifecycle and handle transient View Object rows programmatically or reinitialise transient View Object rows from Application Module prepareSession method. There is one more solution, I'm going to describe it in this post. It is based on dummy SQL based View Object, designed to to store transient attribute values.
    Download - ADFTransientVOPassivationApp.zip

Sunday, August 3, 2014

JDev/ADF sample - Handling Rollback Operation for ADF Input Components with Immediate Property

  • Handling Rollback Operation for ADF Input Components with Immediate Property. One of my colleagues is implementing advanced dynamic ADF BC/ADF UI functionality. To force validation to be invoked properly, he must use ADF UI input components set with Immediate=true property. This allows to keep validation messages always displayed, even if user navigates to edit another dynamic ADF UI input attribute, until form is submitted or canceled. However, as by JSF design - usage of input components with Immediate=true, blocks execution of command components, if there are validation errors available. This means - user can't use Cancel button to reset the form with validation errors, until he would fix these errors manually. However, there is a potential solution - we could use ADF subform component to isolate input components, with a combination of ADF View reload to refresh rendered UI.
    Download - ADFAttributeImmediateApp.zip

Saturday, July 26, 2014

JDev/ADF sample - Oracle BPM 12c Installation Improvements and Issues with Mac

  • Oracle BPM 12c Installation Improvements and Issues with Mac. Oracle BPM 12c is improved with a great installation process - simplified and stable. You only need to download single installation package, run a wizard and after several clicks it gets installed. All required products are installed for you out of the box, no extra configuration is needed - JDeveloper, BPM/SOA extensions, BPM/SOA schemas in Java DB. Developer can focus on his development tasks, no need to spend days to install and configure development environment. You should read official guide - Quick Start for Oracle Business Process Management Suite.
    Download - BpmApplication.zip

Friday, July 25, 2014

JDev/ADF sample - MDS Support for Mobile Application Framework (MAF) in JDeveloper 12c (12.1.3)

    Download - MAFMobileLocalApp_v2.zip

Thursday, July 17, 2014

JDev/ADF sample - ADF Mobile 12c (MAF) Support for Master-Detail Data Control

  • ADF Mobile 12c (MAF) Support for Master-Detail Data Control. ADF 12c is shipped with renamed mobile platform framework - Oracle Mobile Application Framework (MAF). Previously this was named ADF Mobile. 12c MAF is based on ADF Mobile and provides additional functionality and improvements. Everyone familiar with ADF Mobile 11g, should get up to speed with 12c without issues. I would like to highlight one interesting improvement implemented in 12c MAF - out of the box support for Master-Detail relationship. In previous 11g release, master record key was not preserved across different pages - developer was forced to store selected key in memory, to call execute method through invoke action in the second page and finally to reset a key. There was an alternative solution, described by Steven Davelaar - ADF Mobile – Preserving the Current Row Across Pages. Approach described in Steven's blog seems to be integrated into 12c MAF, there is no need to manage selected Master key manually, framework does this for you.
    Download - MAFMobileLocalApp.zip

Saturday, July 12, 2014

JDev/ADF sample - ADF 12c (12.1.3) Line Chart Overview Feature

  • ADF 12c (12.1.3) Line Chart Overview Feature. ADF 12c (12.1.3) is shipped with completely rewritten DVT components, there are no graphs anymore - they are called charts now. But there are much more, besides only a name change. Previous DVT components are still running fine, but JDeveloper wizards are not supporting them anymore. You should check ADF 12c (12.1.3) developer guide for more details, in this post I will focus on line chart overview feature. You should keep in mind, new DVT chart components do not work well with Google Chrome v.35 browser (supposed to be fixed in Google Chrome v.36) - check JDeveloper 12c (12.1.3) release notes.
    Download - ADF12DvtApp.zip

Thursday, July 10, 2014

JDev/ADF sample - ADF 12c (12.1.3) New Feature - ADF Query Item Reordering and Custom Operators

  • ADF 12c (12.1.3) New Feature - ADF Query Item Reordering and Custom Operators. There are quite many new features in ADF 12c (12.1.3). One of them - ADF Query item reordering on runtime, user can choose the order to display criteria items displayed in ADF Query. View Criteria wizard in JDeveloper is updated, besides Criteria UI Hints (as we had before), now developer have access to Item UI Hints (here you can set item visibility, multiple values selection and removable support). Important addition - new tab in the wizard to define and manage Custom Operators for View Criteria items (this was possible before directly in the source code, now we have a wizard).
    Download - ADF12cQueryApp.zip

Tuesday, July 8, 2014

JDev/ADF sample - ADF BC 12c New Feature - Entity-Level Triggers

  • ADF BC 12c New Feature - Entity-Level Triggers. We have triggers support in ADF 12c! Powerful new feature is available - Entity-Level triggers. Previously it was often confusing if certain use case belongs to validation rule, or it is more generic business logic. Everything was implemented as part of validation rule in the EO. ADF 12c provides cleaner approach by supporting option of Entity-Level triggers, along with regular validation rules. Validation logic can be implemented as part of validation rule, non-validation (but still dependent on data management lifecycle) logic can be implemented as part of new Entity-Level trigger.
    Download - ADF12cApp.zip