- 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
- Avoid Blind SQL Call from ADF Task Flow Method. Keep an eye open on ADF Task Flow Method Call activities where methods from ADF Bindings are called. JDEV 12c sets deferred refresh for ADF binding iterators related to TF Method Call activities and this causing blind SQL to be executed. Blind SQL - query without bind variables.
Download - ADFTFCallBindingApp.zip
- 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
- Conditional Task Flow Activation in ADF 12c/11g. I will talk about tabs and ADF regions. Depending on the use case, you may want to ensure always only one region is loaded - the one which is displayed. If user opens another tab - region from previously open tab should be destroyed. We can achieve such functionality with combination of conditional region activation and ADF task flow isolated scope. Every time when different tab will be opened - ADF will open referenced region as the first time, data will not be cached.
Download - TabsTFActivation.zip
- Understanding ADF Task Flow Page Flow Scope Lifetime. I would say its a bit confusing to understand - how long objects stored in Page Flow Scope really reside in memory. This is a reason I implemented small sample application and did a test. Summary for the results (see detailed description below):
1. Every ADF task flow instance is granted with its own Page Flow Scope
2. Page Flow Scope is not destroyed when you navigate away from the task flow
3. You can access previously left Page Flow Scope only by using Task Flow Return activity
This allows me to presume that is not really good to have many small ADF task flows in the system, as theoretically there will be a lot of wasted Page Flow Scope entries, especially when navigating without retuning back. On contrary, when using larger ADF task flows and less of them - there will be less Page Flow Scope memory wasted.
Download - PageFlowScopeApp.zip
- ADF Task Flow Template Improvements in 12c. There are great improvements in ADF task flow templates in 12c release. We can great ADF task flow template based on other template and what is even more amazing - JDeveloper 12c ADF task flow diagram window displays template contents when editing actual consuming task flow. There is option to substitute activity in the consuming ADF task flow for the generic activity from the template. I'm going to explain how you can do this.
Download - TaskFlowTemplateApp.zip
- ADF 12c New Feature - Unauthorized Task Flow. There is very handy feature available in ADF 12c - option to display predefined information, if current user is not authorized to view given region. Predefined information comes from dedicated ADF Task Flow with JSF fragment containing user friendly message.
Download - ADFSecurityTF12cApp.zip
- Strange Day - ADF Library Profile Dependency Deployment Problem. Time to time it happens, when we are keep saying - 'strange...', while developing something. It happened to me today, let me share what I was facing and how this 'strange' problem was resolved. My use case was - reusable ADF application packaged into ADF library JAR file and reused from main portal application. However, when accessing from main portal application, constantly it was throwing NullPointer exceptions from ADF Data Control. I managed to reproduce this problem with smaller simple application, NullPointer exception is generated when trying to load table component from ADF library.
Download - reusableapps.zip
- Navigation Between ADF Task Flow Template and Consuming ADF Task Flow. ADF task flow can be based on ADF task flow template by reference or by copy. If we base it by copy, this means template contents will be copied directly into consuming ADF task flow. All subsequent changes happening inside template, will not be propagated to consuming ADF task flow. In the opposite, when ADF task flow is using template by reference - all template changes will be reflected in consuming ADF task flow. I would recommend to follow template by reference option, however you need to understand few tricks with this approach. Today I will describe how to invoke navigation between ADF task flow template activity and custom activity from consuming ADF task flow.
Download - TaskFlowTemplate.zip
- Contextual Events Framework and ADF 11g Dynamic Regions. We were discussing in our project, if we should use Contextual Events Framework or not. Part of the team was saying Contextual Events Framework have quite many defects and who knows, may be it will be unsupported in next ADF releases. However, I personally don't think its the case - Oracle is gathering community feedback for Contextual Events Framework improvements, this means it will be stabilized and improved. For now, I would recommend not to use too much fancy functionality, but stick with fundamental parts of Contextual Events Framework, this will ensure easy migration during future ADF 11g releases.
When we would need to use Contextual Events Framework? Its possible to communicate between ADF Regions without it, just by using ADF Task Flow parameters - Communicating Between ADF Regions Without Contextual Events Framework. While its true, there is one important thing - direct dependency between two regions. It would work for static predefined systems, but if would expose our ADF Task Flows as components - consumers will decide what combination and what subset of these components will be used in their systems. In this case, we can't map both ADF Task Flows through parameters. Its when Contextual Events Framework is useful, it allows to implement independent communication between ADF 11g regions, and provide these regions as components to third party applications.
Download - ContextualDynamicRegions.zip
- Applying Personalization and Customization in Oracle ADF 11g and Oracle WebCenter 11g. Let me start with simple definition of personalization and customization. Term personalization means user can perform changes visible only to that user. Term customization means user with admin privileges can perform global changes, visible to all users. I decided give you this simple explanation, because while browsing Oracle resources and related blogs, I saw many confusing statements. For example, something similar like - we can apply personalization by customizing. In this blog post I'm not describing predefined seeded customizations, but focusing on user performed runtime personalization and customization. You can achieve personalization functionality within standard ADF framework enabled with MDS. For customization functionality need to use Oracle WebCenter component - Composer. Today I will describe how to use these two together.
Download - PersonalizationCustomization.zip
- Deploying ADF Applications as Shared Libraries on WLS. Today I have new post from Integration series. Most of the ADF applications are developed using multiple ADF Task Flows packaged into different ADF libraries. When we consume ADF libraries, by default these libraries are included into resulting EAR deployment package. In most of the cases it works well, however on large production deployments, customers ask to externalize and exclude ADF libraries from main site deployment package. This allows to redeploy shared ADF libraries without main site redeployment. Multiple applications can consume shared libraries, without packaging them into each EAR package. There is George Maggessy blog post about ADF Task Flows and Shared libraries on WLS - post.
Download - ADFIntegrationUIShell4.zip