Showing posts with label ADF BC. Show all posts
Showing posts with label ADF BC. Show all posts

Wednesday, February 20, 2019

JDev/ADF sample - Intercepting ADF Table Column Show/Hide Event with Custom Change Manager Class

  • Intercepting ADF Table Column Show/Hide Event with Custom Change Manager Class. Ever wondered how to intercept ADF table column show/hide event from ADF Panel Collection component? Yes, you could use ADF MDS functionality to store user preference for table visible columns. But what if you would want to implement it yourself without using MDS? Actually, this is possible through custom persistence manager class. I will show you how.
    Download - GitHub

Saturday, January 19, 2019

JDev/ADF sample - Oracle ADF BC Reusing SQL from Statement Cache

  • Oracle ADF BC Reusing SQL from Statement Cache. Oracle ADF BC by default is trying to reuse prepared SQL query from statement cache. It works this way when ADF BC runs with DB pooling off (jbo.doconnectionpooling=false). Normally we tune ADF application to run with DB pooling on (jbo.doconnectionpooling=true), this allows to release unused DB connection back to the pool when a request is completed (and in this case, statement cache will not be used anyway). If View Object is re-executed multiple times during the same request - in this situation, it will use statement cache too.
    Download - GitHub

Sunday, December 23, 2018

JDev/ADF sample - Understanding Attributes Enum in ADF BC Row Class

  • Understanding Attributes Enum in ADF BC Row Class. Did you ever wonder why Attributes Enum is generated by JDeveloper in Entity or View Row class? Attributes Enum holds a collection of attribute names and there is a set of static variables with attribute indexes. These indexes are used to locate attribute in getter/setter. Attributes Enum is a structure which is required for JDeveloper on design time to generate Java code. On runtime Attributes Enum is needed only as long as you are using a static variable index in the getter/setter.
    Download - GitHub

Tuesday, May 29, 2018

JDev/ADF sample - Effective Way to Get Changed Rows in ADF BC API

  • Effective Way to Get Changed Rows in ADF BC API. Did you ever wondered how to get all changed rows in the transaction, without iterating through entire row set? It turns out to be pretty simple with ADF BC API method - getAllEntityInstancesIterator, which is invoked for Entity Definition attached to current VO.
    Download - GitHub

Sunday, May 27, 2018

JDev/ADF sample - Oracle ADF BC REST - Performance Review and Tuning

  • Oracle ADF BC REST - Performance Review and Tuning. I thought to check how well ADF BC REST scales and how fast it performs. For that reason, I implemented sample ADF BC REST application and executed JMeter stress load test against it. You can access source code for application and JMeter script on my GitHub repository. Application is called Blog Visitor Counter app for a reason - I'm using same app to count blog visitors. This means each time you are accessing blog page - ADF BC REST service is triggered in the background and it logs counter value with timestamp (no personal data).
    Download - GitHub

Sunday, March 11, 2018

JDev/ADF sample - Find In Cache By Key ADF BC API Method Usage

  • Find In Cache By Key ADF BC API Method Usage. What if you need to verify - if row with given key exists in fetched rowset? This could be useful while implementing validation logic. ADF BC API method findByKey - will trigger SQL call and fetch row from DB, if row with given key doesn't exist in fetched rowset. Luckily there is ADF BC API method called findInCacheByKey, this method only checks for row in fetched rowset, without going to DB - very convenient in certain situations, when you actually don't want to bring record from DB, if it wasn't fetched.
    Download - GitHub

Sunday, February 25, 2018

JDev/ADF sample - Microservices with Oracle ADF Remote Regions

  • Microservices with Oracle ADF Remote Regions. ADF remote regions - functionality available in the latest ADF 12c versions. ADF remote region runs on different server and content is delivered to consuming module through ADF remote region servlet. This allows to decouple large enterprise system into separate modules, each running independently on separate servers. Gained advantage - system becomes more scalable and reliable, even if several modules will be down, system will continue to be functional.
    Download - GitHub

Friday, November 10, 2017

JDev/ADF sample - ADF Performance Story - This Time Developer Was Wrong

  • ADF Performance Story - This Time Developer Was Wrong. ADF is fast. If ADF application is slow, most likely this is related to development mistakes. I would like to tell you one story, based on my ADF tuning experience. Problem description: ADF application runs fast in DEV, when DB size is small. Same application runs slow in TEST/PROD, when DB size is large. Question - what is slow. Answer - slow means forms are loading slow. Ok, lets go to the story.
    Download - ADFRangeSizeApp.zip

Sunday, September 17, 2017

JDev/ADF sample - ADF BC REST Service from ADF Library JAR

  • ADF BC REST Service from ADF Library JAR. I had assignment to enable ADF BC REST for existing ADF application, which was developed with multiple ADF libraries. ADF BC REST was supposed to be enabled for one of the ADF libraries and then accessed through Master application. All ADF BC REST samples usually show how to enable REST inside Master application itself. I was curious if it will work to enable ADF BC REST and package it into ADF library, which is consumed from Master application. It worked and I would like to share sample app.
    Download - adfbcrest.zip

Saturday, July 29, 2017

JDev/ADF sample - Oracle JET Busy Context API to Control Asynchronous REST Calls

  • Oracle JET Busy Context API to Control Asynchronous REST Calls. I have received feedback from users working with JET UI - sometimes it is not obvious that action button was pressed, users tend to press same button again very fast, which leads to parallel REST calls executing at the same time. In JET - REST call is executed asynchronously, this makes user to believe action was done instantly when button was pressed. However, REST call still may run in the background - while user will be trying to call same service again. While in most of the cases such behaviour is fine, still there are use cases when we want to block action button, until REST response is not received (while response is executed, button will be disabled - this will give visual feedback to the user about action still executing). JET provides Busy Context API to handle asynchronous REST calls in synchronous way.
    Download - JETCRUD

Sunday, July 16, 2017

JDev/ADF sample - ADF BC - Create View Object From Query with Custom Implementation Class

    Download - ADFVOFromSQLApp.zip

Sunday, June 25, 2017

JDev/ADF sample - ADF BC Attribute - Collection Storage Mode Property

  • ADF BC Attribute - Collection Storage Mode Property. I would like to describe one interesting property for ADF BC attribute. This property is called Storage. There are two possible values: row (default) and collection. By default attribute value is saved in row storage, but alternatively it can be saved in collection storage. ADF BC implements collection storage using map which comes from session scope. This allows to keep value even between ADF BC requests, this is ideal for transient attributes.
    Download - ADFBCCheckboxApp.zip

Wednesday, June 14, 2017

JDev/ADF sample - Nice Trick to Get ADF LOV Description Text

    Download - ADFLovDescriptionApp.zip

Saturday, June 3, 2017

JDev/ADF sample - Running ADF BC REST Service Together with ADF Faces Application

  • Running ADF BC REST Service Together with ADF Faces Application. ADF 12c provides out of the box support for ADF BC REST API. It is straightforward to create ADF BC REST service and run it. But what if you would like to expose ADF BC REST for existing ADF application with ADF Faces UI. This could be useful if there is a requirement to handle ADF Bindings access to ADF BC along with light ADF BC REST service API implementation for Oracle JET or other JavaScript clients. The same ADF application could handle two types of client access - ADF Faces and REST.
    Download - ADFFacesRESTApp.zip

Wednesday, May 3, 2017

JDev/ADF sample - Batch Requests Support in ADF BC REST

  • Batch Requests Support in ADF BC REST. ADF BC REST provides a set of enterprise features for REST, one of them support for batch requests. In single REST batch call we can execute multiple update, insert, delete and get operations. This is important functionality, it allows to minimize number of REST calls from the client and improves client performance. Take a read about it in developer guide - 22.13.7 Making Batch Requests.
    Download - jetcrud

Monday, April 24, 2017

JDev/ADF sample - ADF BC Groovy Expression Security Policy Configuration

  • ADF BC Groovy Expression Security Policy Configuration. Today I'm going to explain how to configure Groovy expression security policy. This could be helpful, if you dont want to change trustMode property to trusted everywhere across the app, but looking for single configuration point.
    Download - GroovyPermissionApp.zip

Monday, April 10, 2017

JDev/ADF sample - ADF Multi Task Flow Binding and Tab Order

  • ADF Multi Task Flow Binding and Tab Order. I had a post while ago about ADF multi task flow binding and loading dynamic regions - Building Custom UI Shell with ADF 11g R2. In that sample, new region was opened in the first tab position. Meaning tab order was from right to left. It is more natural to have left to right tab opening order. This can be done too, check updated sample app - we need to control disclosed property and add new region to the end of array.
    Download - MultiTaskFlowApp_TabOrder.zip

Sunday, March 12, 2017

JDev/ADF sample - Improved Display for Empty Field Values in ADF Form

  • Improved Display for Empty Field Values in ADF Form. I had a task in the project, to improve display for empty field in ADF form. By default, if there is no row data in the result - all input text entries in ADF form will be hidden, user will see only labels. This is not ideal, most of time users would prefer to see disabled input text boxes instead.
    Download - ADFDataEntryUIApp.zip

Tuesday, February 7, 2017

JDev/ADF sample - Setting Invalid Fields for the UI in ADF BC Groovy

  • Setting Invalid Fields for the UI in ADF BC Groovy. What if you have entity level validation rule and want to attach validation error message to specific field. By default this is not possible - all entity level validation error messages are displayed in the popup and are not attached to the fields (differently than attribute level validation rule messages).
    Download - GroovyADFApp.zip

Friday, February 3, 2017

JDev/ADF sample - ADF 12c New Groovy API to Work with View Object Methods

  • ADF 12c New Groovy API to Work with View Object Methods. I have interesting topic to share - new Groovy API in ADF to work with View Object, apply View Criteria, execute it. I have discovered it while experimenting with new features and functionality in ADF 12c. Starting from ADF 12.2.1, we have an option to code Groovy in separate file with extension .bcs - ADF BC Groovy Improvements in ADF 12.2.1. This makes sense especially with this new Groovy API - it is more convenient to code/maintain more complex Groovy logic in separate file. As Oracle docs say - Groovy runs faster when it is coded in separate .bcs file, probably there is no need to parse XML to extract and execute expression.
    Download - GroovyADFApp.zip