Monday, May 20, 2013

JDev/ADF sample - Custom Transaction Factory in ADF BC for After Commit

    Download - CustomDBTransactionApp.zip

Thursday, May 16, 2013

JDev/ADF sample - New Row Delete for ADF Form (ADF Webinar Follow-Up)

    Download - NewRowRemoveApp_v2.zip

Thursday, May 9, 2013

JDev/ADF sample - Sharing Data Between VO Instances in ADF BC

  • Sharing Data Between VO Instances in ADF BC. Probably you already noticed that data is shared by default between VO instances (or even separate VO's) based on the same EO. Newly inserted row into one instance becomes instantly visible from another VO instance. There is a way to control this behavior in ADF, this post is based on excellent Steve Muench source of information - Using the RowQualifies() Method to Fine Tune View Link Consistency Behavior. As Steve says, be default data is shared and you can turn it off either by calling setAssociationConsistent(false) or globally per AM with jbo.viewlink.consistent=false configuration property.
    Download - VOSynchEOCacheApp.zip

Thursday, May 2, 2013

JDev/ADF sample - Duplicate Validation Error Message and ADF Bindings

  • Duplicate Validation Error Message and ADF Bindings. One of the bug requests I was fixing during this week was related to duplicate validation error message display on ADF UI. This was quite annoying to the users - the same validation error message displayed twice.
    Download - ADFValidationErrorApp.zip

Sunday, April 28, 2013

JDev/ADF sample - Master-Detail ADF BC Web Service for ADF Mobile

  • Master-Detail ADF BC Web Service for ADF Mobile. It seems like a bit unclear for the developers if ADF BC Master-Detail relationship can be reused out of the box through ADF BC Web Service in ADF Mobile. Short answer - yes, it can. In order to prove this I have developed sample application - second level Master-Detail relationship is exposed through ADF BC Web Service and consumed from ADF Mobile screens.
    Download - adfmdmobilews.zip

Tuesday, April 23, 2013

JDev/ADF sample - ADF 11g PS6 Table Pagination and Displaying Selected Row Issue

    Download - TablePaginationApp_v4.zip

Saturday, April 20, 2013

JDev/ADF sample - Oracle BPM 11g Mobile Worklist with ADF Mobile

  • Oracle BPM 11g Mobile Worklist with ADF Mobile. I have developed ADF Mobile application to bring BPM worklist tasks to the mobile device - I would like to share concepts of such ADF Mobile application with the community. The whole idea is based on BPM Java API to access BPM Context and get currently assigned tasks for the user, read more here - Lightweight ADF Task Flow for BPM Human Tasks Overview. Once tasks from BPM are queried, they are exposed through ADF BC secured Web Service method. Web Service is consumed from ADF Mobile application through Web Service Data Control - task data is rendered on the mobile device, later user can do callback and send approve/reject actions. Approve/Reject actions will be processed by BPM API on ADF BC secured Web Service side..
    Download - BPMMobileWorkListApp.zip

Sunday, April 14, 2013

JDev/ADF sample - BPM 11g R1 Worklist Integration (Hacking Experiment) Into Non-SOA ADF 11g R2 Domain

  • BPM 11g R1 Worklist Integration (Hacking Experiment) Into Non-SOA ADF 11g R2 Domain. We all know there are no Oracle SOA/BPM available for ADF 11g R2 platform. In practice it happens to run both environments in parallel - Oracle SOA/BPM 11g R1 for process applications and ADF 11g R2 for ADF applications. Obvious question in such situations - how to access BPM 11g R1 Worklist application from ADF 11g R2 context? Well, this is possible - I will describe in this post how it can be done with some hacks. Keep in mind that officially it is not supported to access BPM 11g R1 Worklist from ADF 11g R2 environment, but if there is such requirement it can be achieved. Previously I was explaining how to run BPM 11g R1 Worklist and Human Task on Non-SOA 11g R1 domain - Running Oracle BPM 11g PS5 Worklist Task Flow and Human Task Form on Non-SOA Domain, today we go one step further and use newer ADF version for Non-SOA domain. But you should know that BPM Worklist is ADF application and really it can run well in ADF 11g R2 context. There are no SOA/BPM libraries for ADF 11g R2 installation, but this is not the issue - we can add and reference SOA/BPM libraries from different 11g R1 domain. There is no need to install complete SOA/BPM 11g R1 domain on that machine where ADF 11g R2 runs - you can copy SOA/BPM libraries package only.
    Download - adf11gr2_bpm.zip

Friday, April 12, 2013

JDev/ADF sample - Multiple Files Upload - Unlimited Files Upload in ADF 11g PS6

  • Multiple Files Upload - Unlimited Files Upload in ADF 11g PS6. Among other new components and features available in ADF 11g PS6 - there is one very important. File Upload ADF Faces component was upgraded to support multiple or basically infinite file upload. This is good to see how ADF framework is progressing with each new release, this is another argument why you should use ADF.
    Download - MultipleFileUpload.zip

Thursday, April 11, 2013

JDev/ADF sample - How To Control ADF Table Pagination on Runtime and Do Case Insensitive Search

    Download - TablePaginationApp_v3.zip

Sunday, April 7, 2013

JDev/ADF sample - List View - Cool Looking ADF PS6 Component for Collections

  • List View - Cool Looking ADF PS6 Component for Collections. I'm very excited about ADF PS6 release, it brings new freshness and coolness feeling to ADF. ADF Faces runtime performance seems to be incomparable faster and much more responsive comparing to previous ADF 11g R1 and even ADF 11g R2 releases. This gives good hopes to expect the same improvements in ADF 12c. There is new ADF Faces component introduced - List View. You can think about it as about much more liberal ADF Faces table component. List View renders data collections but there is much more control and flexibility how data collection is presented visually. If you need to render strict tabular data - ADF Faces table is the most suitable, List View is for something less structured. We could achieve up till now similar layout as List View with custom implementation using ADF Faces iterators or for each tags. Of course it is much easier now to use out of the box List View tag - Displaying a Collection in a List.
    Download - ListViewApp.zip

Tuesday, April 2, 2013

JDev/ADF sample - ADF 11g PS6 - ADF 10g Table Pagination Feature is Back Finally

    Download - TablePaginationApp.zip

Wednesday, March 27, 2013

JDev/ADF sample - ADF Generator for Dynamic ADF BC and ADF UI - Recreate

  • ADF Generator for Dynamic ADF BC and ADF UI - Recreate. Last year in November, I was blogging about ADF generator for dynamic ADF BC and ADF UI. This approach allows to generate ADF BC from metadata and draw ADF UI dynamically based on ADF BC structure. You can read more about it here. This approach works without issues. However, if you want to change dynamic ADF BC and redraw ADF UI while staying on the same fragment or page, there is special trick to recreate dynamic iterator declared in Page Definition. This trick is described in Duncan Mills blog - Refresh Problems using Adaptive Bindings, I will apply it to my sample app posted here.
    Download - ADFDynamicReportUI_v2.zip

Tuesday, March 26, 2013

JDev/ADF sample - BPM 11g JDeveloper IDE PS5 Bug for Process ExecData

  • BPM 11g JDeveloper IDE PS5 Bug for Process ExecData. I was hitting ugly BPM 11g JDeveloper IDE PS5 bug recently. This bug is strange, because is reproduced just after JDeveloper restart for the working process. Imagine you have valid BPM process, everything works well - restart JDeveloper and suddenly BPM process is corrupted. In my specific scenario I was referencing system attribute from BPM execData - execData object is suddenly lost after JDeveloper restart. I don't have solution for this yet, just want to share with you the use case for this BPM 11g JDeveloper IDE PS5 bug.
    Download - SimpleProcess.zip

Sunday, March 24, 2013

JDev/ADF sample - DB Connection Leaking During ADF Login

  • DB Connection Leaking During ADF Login. I will describe a case of leaking DB connections during ADF login phase. This case is reproduced for ADF application with Login screen and programmatic login action from managed bean. If you call ADF BC before calling ADF authentication servlet and doing authentication - no DB connection leaking. But if you call ADF authentication servlet first and then as next action call ADF BC in the same method - DB connection will remain active.
    Download - SecurityFormLogin_v6.zip

Thursday, March 21, 2013

JDev/ADF sample - Coding Validation in ADF BC View Object Before Commit Method

  • Coding Validation in ADF BC View Object Before Commit Method. First thing you should do - never implement validation logic in beforeCommit() method, this is especially true for beforeCommit() in VO Implementation class. Why? Because beforeCommit() method will be invoked even if data will not be changed, it is enough just to open VO instance and query data. We can have many VO instances for the same EO and all of them will trigger beforeCommit() methods implemented in VO Implementation. You could open one page, close it without changes and open another page. Once you invoke Commit operation in second page, beforeCommit() method from the VO's involved into first page will be called as well. This means it would trigger validation for the page which is currently closed. On other hand, it is understandable why developers try to code validation logic in beforeCommit(), standard ADF BC validation lifecycle is unpredictable sometimes, it fires validation rules too early. But it still not a good excuse to use beforeCommit() - I will show you why.
    Download - BeforeCommitVOApp.zip

Tuesday, March 19, 2013

JDev/ADF sample - Issue with First Transient Attribute in ADF BC Entity Object

  • Issue with First Transient Attribute in ADF BC Entity Object. There is one interesting bug reproduced across all ADF versions - related to the order of attributes in ADF BC Entity Object. Specifically to the order of transient attributes within the Entity Object attributes list. If transient attribute is set as a first attribute in the Entity Object - it will break, when trying to commit transaction. SQL Select for Update executed from Entity Object will fail, because ADF BC includes invalid comma for the transient attribute defined in the Entity.
    Download - FirstTransientApp.zip

Wednesday, March 13, 2013

JDev/ADF sample - Reusable ADF Region with Dialog Framework

  • Reusable ADF Region with Dialog Framework. This post is about reusable ADF region and its usage from ADF Dialog Framework. If we have ADF Task Flow with fragments and want to use Dialog Framework, we need to create intermediate ADF Task Flow with pages and include our reusable region there - this will allow to load ADF Dialog from the fragment (dialog is always running in ADF page). I will describe in this post how to pass data from/to ADF region included into ADF Dialog to the calling fragment.
    Download - ReusableDialogRegionApp.zip

Sunday, March 10, 2013

JDev/ADF sample - Optimizing Long Running ADF Operations with Parallel WebLogic Time Manager Execution

  • Optimizing Long Running ADF Operations with Parallel WebLogic Time Manager Execution. This blog title sounds a bit fancy - isn't it? :) I was looking how to optimize long running operation execution and separate it from ADF context (so, ADF application will remain responsive). Additional requirement - the same long running operation might need to be invoked multiple times, based on execution result and other parameters. Here I would like to share solution with you today - solution is pretty cool, it involves WebLogic time scheduling for delayed long running series of ADF requests execution initialized from ADF session context.
    Download - ADFWLSSchedulerApp.zip

Friday, March 8, 2013

JDev/ADF sample - How To Control ADF PopUp Alignment

  • How To Control ADF PopUp Alignment. I will describe in this post one very nice trick to align ADF PopUp against output text component on ADF UI page. Usually you align popup next to the button, which actually opens popup itself, but you may want to achieve something else and align popup next to top - right corner for example.
    Download - ADFPopUpHelpApp.zip

Monday, March 4, 2013

JDev/ADF sample - ADF Rollback Operation and Stay On Current Row

  • ADF Rollback Operation and Stay On Current Row. This post is extension for my previous posts about ADF CRUD and is based on - ADF Query Search and Results Form blog. As most likely you have noticed it already, Rollback operation in ADF removed all pending changes plus it resets current row to the first row in data collection. Resetting current row to the first is not always desirable, I will provide sample application which demonstrates how to prevent resetting to first row after Rollback operation was invoked.
    Download - ADFCRUDRollbackApp.zip

Friday, March 1, 2013

JDev/ADF sample - Default Dynamic Value for ADF Query Search Field

  • Default Dynamic Value for ADF Query Search Field. What if you face requirement, which tells to give default value for ADF query field in the search box. This is not just for some static value, but default search parameter must come from another LOV view object. As example in this post, I will implement use case where first value from LOV view object will be set as default value for the search field.
    Download - ADFQueryDefaultValueApp.zip

Monday, February 18, 2013

JDev/ADF sample - Recommendation for Custom Method in ADF BC View Object Implementation Class

  • Recommendation for Custom Method in ADF BC View Object Implementation Class. When working in different projects, reviewing ADF code and doing quality audits - one of the most often encountered issues is oversized Application Module Implementation class. Let's say there are 20 - 30 use cases based on the same Application Module (which is perfectly fine) and all the custom methods from these use cases are implemented in the single class - Application Module Implementation class. It becomes hard to maintain oversized class and even hard to read. Very often these custom methods are even not reusable across different use cases, it just developer decided to implement them all in the same place. In some cases we must implement custom methods in Application Module Implementation class: method is accessing different VO instances, method is not really related to some specific VO, etc. But in many cases, custom method works only with single VO instance - then it can be moved into VO Implementation class.
    Download - VOImplCustomMethodApp.zip

Thursday, February 14, 2013

JDev/ADF sample - Oracle Coherence Integration and ADF BC Programmatic VO

    Download - ADFCoherenceApp_v2.zip

Sunday, February 10, 2013

JDev/ADF sample - ADF BC - Scrolling To The Last Row

  • ADF BC - Scrolling To The Last Row. There is last() function in ADF BC - it allows to get last row from the rowset (be aware, it will fetch all rows until the last one - Method - createInstanceFromResultSet() for ADF BC Database Fetch Monitoring). Besides returning last row from the rowset, last() function sets last row to be the current row. Depending on the use case, we may need only to get last row - without setting it to be current. This is possible, I will describe how to scroll to the last row in the rowset (scrolling also fetches all rows in between, same as last() function).
    Download - ADFScrollingToLastApp_v2.zip

Thursday, February 7, 2013

JDev/ADF sample - ADF BC Groovy with Java Imports

  • ADF BC Groovy with Java Imports. ADF BC Groovy expressions support is really great and often saves a lot of time in development of complex functionalities. It comes very handy when retrieving referenced data or calling custom ADF BC methods. There is one more hidden gem offered by ADF BC Groovy - option to import Java packages directly into Groovy and use Java functionality.
    Download - AdvancedGroovyApp.zip

Friday, February 1, 2013

JDev/ADF sample - Oracle Analytic Functions for Total and Average Calculation in ADF BC

  • Oracle Analytic Functions for Total and Average Calculation in ADF BC. What is great about ADF BC - this framework is very close to the DB and makes data management and analysis operations implementation really easy. There are different ways to implement total and average value calculation. The best way probably is to use Oracle DB Analytic Functions. Using analytic functions minimizes custom Java code, simplifies handling search from Query criteria of from table filter. There is no need to specify GROUP BY in SQL when using analytic functions, this makes easier ADF BC VO implementation.
    Download - ADFAnalyticFuncApp.zip

Tuesday, January 29, 2013

JDev/ADF sample - Method - createInstanceFromResult() for ADF BC Database Fetch Monitoring

  • Method - createInstanceFromResult() for ADF BC Database Fetch Monitoring. ADF application performance tightly coupled with database interaction performance - data fetching from database. It might be useful to monitor and locate VO's with large data fetch, this would help to restrict size of fetched data collections. There is one special method in ADF BC - createInstanceFromResult(), you can override it in VO Impl class - method is invoked for each row fetched from database. I will explain how it works, I will be using ADF BC last() operation - this operation is perfect example of possible slow performance in ADF.
    Download - ADFScrollingToLastApp.zip

Sunday, January 27, 2013

JDev/ADF sample - Data Access Optimization in ADF with Oracle Coherence

  • Data Access Optimization in ADF with Oracle Coherence. ADF BC is accessing database each time user is loading new page or accessing new Web session. Once data is retrieved, data is cached usually for the duration of the current session. If there are lots of users accessing the same data - we may encounter performance bottleneck in querying database each time for new user access. To optimize this, we can use Oracle Coherence - data will be loaded and cached in the middle-tier, it will be served for all users without accessing database each time. Data in Coherence cache can be updated, removed and synchronized back with the database - but this is out of scope for current post. I would like to explain today how to apply Coherence for ADF project in really simple and understandable way - it can be as a startup for your more advanced research and performance tuning.
    Download - ADFCoherenceApp.zip

Wednesday, January 23, 2013

JDev/ADF sample - Immediately Removing New Row Without Validation in ADF

  • Immediately Removing New Row Without Validation in ADF. Once new row is inserted but not yet saved and if validation rules are defined for the attributes - it may cause problems removing this new row (let's say user changes his mind and decides to remove unwanted row). Of course user can invoke Rollback, but this is not what is always desired. User should be able to remove row with one single click - by pressing Delete button. And this is really easy to achieve in ADF, but not always obvious. You need to set Immediate = true as property for Delete button, it will call then Delete operation ignoring any validations for the current row.
    Download - NewRowRemoveApp.zip

Friday, January 18, 2013

JDev/ADF sample - How To Implement Gapless Sequence in ADF BC

  • How To Implement Gapless Sequence in ADF BC. We all know how to insert new records using ADF BC. But if you have a sequence in the DB for primary key attribute and there is requirement to make sure assigned sequence values are always gapless - few extra steps are needed. When you hit Create button, ADF will assign sequence value immediately - often user may rollback transaction and sequence value will be lost. In order to prevent gaps in the sequence we can use two sequences - one temporary for Create and then real sequence will be applied during commit time from doDML method.
    Download - CreateSequenceApp.zip
    Run - CreateSequenceApp on Oracle Cloud

Tuesday, January 15, 2013

JDev/ADF sample - Fragment Template to Fragment Communication with ADF Contextual Events

  • Fragment Template to Fragment Communication with ADF Contextual Events. This post is extended version for my previous post - After Commit Call for Centralized Transaction Management. Previously posted application works as it should, but you may face a bit more complex use case when fragment template will be assigned with page definition file. If there will be page definition file for the fragment template - it will not work to call method by managed bean reference and invoke operation from fragment page definition. The thing is - page definition context will be changed from fragment to fragment template and operations declared in the fragment page definition will be unaccessible. However, we can implement communication between fragment template and fragment itself through ADF Contextual Events functionality.
    Download - GlobalTransactionControlApp_v3.zip

Friday, January 11, 2013

JDev/ADF sample - ADF Mobile - Device Native Database Access and Usage

  • ADF Mobile - Device Native Database Access and Usage. This will be a third update for my sample ADF Mobile application. Read about previous versions from here - ADF Mobile - Geo Location Synchronization. This update is focused primarily on device native database access and operations. I'm using located GPS points as data source and populating on device SQL Lite database with locations retrieved from GPS. Logged data review functionality is implemented as well - user can view altitude graph and load logged path as point layer on top of Google Maps.
    Download - PosLogApp.zip

Wednesday, January 9, 2013

JDev/ADF sample - LOV for Editable Primary Key in ADF Table Problem

  • LOV for Editable Primary Key in ADF Table Problem. Probably every ADF developer at least ones was facing this problem - creating LOV for editable primary key attribute rendered in ADF table. Very often database design is based on business key and there is requirement to create LOV for that key. Unfortunately ADF doesn't handle this case well - LOV defined for editable key in the table is unstable. There are different workarounds, but all of them with the side effects. The best workaround is to fix database design and introduce surrogate key for the table - but in practice is hardly possible, no one wants to change DB design, especially if it works well in Oracle Forms.
    Download - EditableTableKeyApp.zip

Monday, December 31, 2012

JDev/ADF sample - My ADF Sample Apps Live in Oracle Java Cloud

  • My ADF Sample Apps Live in Oracle Java Cloud. With Oracle Java Cloud available for ADF PS5 deployments, I decided to deploy all my future ADF sample apps from the blog in Oracle Cloud, source code will be provided as well as it was up till now. ADF sample applications live will help to explain and present ADF functionality even better, blog readers will be able to test described functionality straight away and provide feedback without downloading and running on their machines. Currently I'm running trial instance of Oracle Cloud for database and Java, but in future I plan to purchase permanent account - let's see how it will go.
    Download - TreeComponents_cloud.zip

Sunday, December 30, 2012

JDev/ADF sample - After Commit Call for Centralized Transaction Management

  • After Commit Call for Centralized Transaction Management. With this post I would like to update sample application from my previous post on this topic - Centralized Transaction Management for ADF Data Control. This previous post was about how to call global commit/rollback operations applied for ADF Data Control, without declaring Commit and Rollback in each and every page definition file. Centralized Commit and Rollback operations are created in fragment template, this allows to reuse the same buttons across different fragments. There is one bit we can use to extend centralized transaction management concept - custom method invocation after successful commit. Based on use case requirements, we may need to invoke iterator refresh after commit, etc.
    Download - GlobalTransactionControlApp_v2.zip

Monday, December 24, 2012

JDev/ADF sample - Conditional Validation in ADF BC

  • Conditional Validation in ADF BC. ADF BC offered out of the box business validation support is quite advanced - allows to control validation execution conditionally. Still some functionality is missing - easy configuration for execution order. Now we have entity and attribute level validations, but really this doesn't give any guarantee that entity level validation will not be invoked when attribute value is changed (especially true for ADF table component). In the future ADF versions I would like to have more control over validation execution order and time. This post is to demonstrate what is available now - conditional validation execution. Validation rule can be executed conditionally in ADF BC, for example depending on user security role (based on use case requirement, we may want to skip certain validation for the super user).
    Download - ConditionalValidationApp.zip

Friday, December 21, 2012

JDev/ADF sample - Skip Validation for ADF Required Tabs

  • Skip Validation for ADF Required Tabs. Tell me - how often it happend to implement such basic layout where required attributes from one Entity are located on the same fragment/page but in different tabs? I guess quite often, this is common requirement. However, is not so obvious how to implement it properly. Most likely you will end up into infinite loop of validation errors for required fields when trying to switch between tabs. I will describe in this post how to implement multiple tabs with required attributes from the same Entity and avoid unexpected validation errors.
    Download - TabsValidationApp.zip

Tuesday, December 18, 2012

JDev/ADF sample - ADF Mobile - Geo Location Synchronization

  • ADF Mobile - Geo Location Synchronization. Here you can read about ADF Mobile application enabled with geo location features - GPS and Google Maps - ADF Mobile - Geo Location and Google Maps App. I would like to post update for this application where geo location is synchronized automatically, directly updating your position on Google Maps screen. Few minor usability updates are included as well - conditional check for 3G/Wi-Fi network and GPS availability.
    Download - ADFMobileGoogleMaps_v2.zip

Friday, December 14, 2012

JDev/ADF sample - ADF Post Changes and PL/SQL Invocation Side Effect

  • ADF Post Changes and PL/SQL Invocation Side Effect. If data will not be commited to the database in the same request - not recommended to use postChanges() method in ADF BC. ADF developers tend to bypass this recommendation, especially when integrating ADF with PL/SQL code and trying to keep temporary data in the database. From my experience, is not safe to use postChanges() method even if database commit is done in the same custom method (read - one request). ADF BC passivation may happen anytime unexpected and then posted data is simply lost. Typically this error is not reproduced in development environment, but only in test or production when there are more concurrent users accessing the system. Good practice - always run your application with Application Module Pooling disabled before sending code to the testing team - this would allow to simulare stress test environment and force ADF BC to switch Application Module pool instances.
    Download - PostControlApp.zip

Tuesday, December 11, 2012

JDev/ADF sample - ADF Mobile - Geo Location and Google Maps App

  • ADF Mobile - Geo Location and Google Maps App. Let me describe ADF Mobile application with Google Maps and GPS support. I have implemented this application in few hours, installed on my iPhone and ready to travel - I will not be lost. So, I would like to share source code with you - you can compile and install it on iPhone, iPad or Android.
    Download - ADFMobileGoogleMaps.zip

Saturday, December 8, 2012

JDev/ADF sample - Good To Know - Conflicting View Objects and Shared Entity

  • Good To Know - Conflicting View Objects and Shared Entity. While killing various issues and helping developers to get up to speed, during this week I encountered interesting ADF behavior - I would like to share it with you. Firstly it took some time to locate it and then I managed to reproduce it with sample application. Use case: 1 EO and 2 separate VO's, based on the same EO. You should admit, is quite common use case - often we share EO's across different forms and usually we implement dedicated VO's for each form (in most of the cases, hardly we can reuse the same VO with different View Criterias applied, because each form usually have different joins and different Master-Detail View Link relationships). Two separate VO's were conflicting during insert operation, more specifically - overridden create(AttributeList) method was invoked by the framework incorrectly. This method was overridden on VO (not on EO) level for a reason, because even VO's were based on the same EO - DB sequences for each of them were supposed to be different. I will describe it below - I hope it will be more clear at the end of this post, what I'm trying to explain (at this stage I believe is not) :).
    Download - EOSharedAccessApp.zip

Tuesday, December 4, 2012

JDev/ADF sample - ADF Mobile - Implementing Reusable Mobile Architecture

  • ADF Mobile - Implementing Reusable Mobile Architecture. Reusability was always a strong part of ADF. The same high reusability level is supported now in ADF Mobile also. I have a blog, where ADF reusability architecture is described through ADF Libraries and ADF Task Flows - Integration in Oracle ADF Through ADF Libraries and ADF Task Flows. This blog was posted in 2009, now this architecture approach became de facto standard and is applied in every ADF project. We go mobile and apply similar architecture pattern for reusability through ADF Mobile libraries (Feature Archive Files) and ADF Mobile Feature sets. You can read more about ADF Mobile Feature Archive Files here - 5.12 Working with Feature Archive Files. Main goal of this post is to prove technically that reusable architecture concept works for ADF Mobile.
    Download - mobilereusable.zip

Friday, November 30, 2012

JDev/ADF sample - Active Data Registration Error in ADF (Some Bugs Never Die)

    Download - ExcelExportFixSampleApp.zip

Wednesday, November 28, 2012

JDev/ADF sample - Centralized Transaction Management for ADF Data Control

  • Centralized Transaction Management for ADF Data Control. Did you ever had an idea to implement centralized Commit/Rollback management in ADF application. This would allow to save development time, no need to create Commit/Rollback operation in each page definition file - forget about this. You can manage transaction on ADF Data Control level and I will show you how with this sample application.
    Download - GlobalTransactionControlApp.zip

Monday, November 26, 2012

JDev/ADF sample - ADF Mobile - Live on iPhone Device

    Download - mobilesecuredws.zip

Friday, November 23, 2012

JDev/ADF sample - ADF Mobile - Secured Web Service Access

  • ADF Mobile - Secured Web Service Access. I will dig today into secured Web Service access from ADF Mobile. There are good tutorials how to consume open Web Service in ADF Mobile, but in practice almost every Web Service exposed for the mobile must be secured - who wants to expose open Web Service on the public internet? ADF Mobile doesn't support Web Service Java Proxy, you have an option to use Data Control generated directly from the Web Service - I will explain the steps how to configure such Data Control for secured Web Service access. Thanks to Joe Huang (ADF Mobile Product Manager) - he gave me very useful hints to finalize secured Web Service invocation from ADF Mobile.
    Download - mobilesecuredws.zip

Sunday, November 18, 2012

JDev/ADF sample - Check Box Support in ADF Tree Table Different Levels

    Download - TreeCheckboxApp_v3.zip

Wednesday, November 14, 2012

JDev/ADF sample - ADF Generator for Dynamic ADF BC and ADF UI

  • ADF Generator for Dynamic ADF BC and ADF UI. Often we implement solutions to automate ADF development, based on custom metadata stored in database. This is common requirement especially for reporting systems, where screens have very similar layout, just number of UI components differ. Reporting systems require parameters capture screens, each report may have different set of parameters. Instead of building separate ADF UI screen for each report - we can build only one, but dynamic. I will describe how we can achieve this with detail sample application.
    Download - ADFDynamicReportUI.zip

Friday, November 9, 2012

JDev/ADF sample - ADF BC View Accessor To Centralize Business Logic Processing

  • ADF BC View Accessor To Centralize Business Logic Processing. I was implementing today one use case, where it was required to compare current row status with the data returned by another query (no master-detail relationship). Such use case can implemented in many ways in ADF - custom method on AM with combination of expression on ADF UI, etc. I decided to go different path and centralize processing logic into VO itself by using View Accessor (same as LOV's are defined in ADF). This allows to simplify implementation part on ADF UI - only simple access to VO attribute will be required, without calling any custom methods from ADF BC (all the job will be done already on VO level).
    Download - ViewAccessorSampleApp.zip