Friday, April 18, 2014

JDev/ADF sample - Case Insensitive Search in LOV - Effective and Generic

  • Case Insensitive Search in LOV - Effective and Generic. Search in LOV dialog window, by default is not case insensitive. You could define View Criteria for LOV VO with case insensitivity and select this criteria to be displayed in LOV dialog. You could do this for one or two, may be for ten LOV's - but I'm sure you are going to get tired pretty soon. Much more effective is to implement generic solution to convert LOV search criteria to be UPPER case automatically.
    Download - ADFDynamicReportUI_v6.zip

Saturday, April 12, 2014

JDev/ADF sample - ADF Query Design Revisited with ADF 12c Panel Drawer

    Download - ADFQueryPreviewApp.zip

Saturday, April 5, 2014

JDev/ADF sample - MDS Seeded Customization Approach with Empty External Project

  • MDS Seeded Customization Approach with Empty External Project. Great feature in ADF - MDS Seeded customisations support. This is particularly useful for independent software vendors, who are developing their own products on top of ADF framework. With MDS Seeded customisation, maintenance for multiple customers becomes easier. We could create customisation, instead of changing original source code - this makes it easier to maintain a product. I would like to share one important hint, related to technical architecture for MDS Seeded customisations - this will be related to the way how MDS Seeded customisations are organised and maintained. By default, you would create MDS Seeded customisation files in the original application, however this is not very clean approach. There is a way to create and keep all MDS Seeded customisation files in empty external application. I will describe in the post, how this can be achieved with a few easy steps.
    Download - MDSCustomizationsApp.zip

Friday, April 4, 2014

JDev/ADF sample - Hide All Search Operators for ADF View Criteria Item

  • Hide All Search Operators for ADF View Criteria Item. During this week work, I received interesting question from ADF developer - how to hide all operators for specific ADF View Criteria item. There is an option to go and hide different operators one by one, following API guide for JboCompOper. You could follow this approach, but there is one smarter way - to hide all operators at once. See below - how.
    Download - ADFQueryNoOperatorsApp.zip

Friday, March 28, 2014

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

  • ADF 11g PS6 Table Pagination and Displaying Selected Row Issue - Solution. While ago, I had a blog post about new feature in ADF 11g PS6 (11.1.1.7) - table pagination support. There is an issue, when we want to open specific row and display it automatically in the table - required table page for the selected row is not opened correctly. However, blog reader suggested a fix, received from Oracle Support. Blog reader was kind enough, to post a comment with suggested fix, you can read it here - JDev/ADF sample - ADF 11g PS6 Table Pagination and Displaying Selected Row Issue. I decided to test this fix myself and provide updated sample application. The fix is to use range start from the iterator and set to it for the first property of the table with pagination. Actually, this fix does the job, but not completely perfect. Current row is displayed, only if Range Size for the iterator is set to 25, probably there is some hard coding somewhere. Ok, but at least it works.
    Download - TablePaginationApp_v5.zip

Wednesday, March 26, 2014

JDev/ADF sample - Alert for ADF Security - JSF 2.0 Vulnerability in ADF 11g R2

  • ADF Alert - Facelets Vulnerability in ADF 11g R2 and 12c. If you are running your application in ADF 11g R2 or 12c environment and using facelets - you should double check, if a source code for the facelet pages is not accessible through the URL. There is another security vulnerability in ADF 11g R2, documented here - Alert for ADF Security - JSF 2.0 Vulnerability in ADF 11g R2. Apparently this is a patch from Oracle for JSF 2.0 vulnerability and also there is a manual fix. However neither patch or manual fix are not applied by default, potentially your source code could be exposed for public access.  This is why I post it on the blog - for all ADF users to be aware.
    Download - VulnerabilityTestCase_v2.zip

Sunday, March 23, 2014

JDev/ADF sample - Alert for ADF Security - JSF 2.0 Vulnerability in ADF 11g R2

  • Alert for ADF Security - JSF 2.0 Vulnerability in ADF 11g R2. You must be concerned about your system security, if you are running ADF runtime based on ADF 11.1.2.1.0 - 11.1.2.4.0 versions. These versions are using JSF 2.0 with known security vulnerability - Two Path Traversal Defects in Oracle's JSF2 Implementation. This vulnerability allows to download full content of WEB-INF through any browser URL. There is a fix, but this fix is not applied by JDeveloper IDE automatically, when creating new ADF application. To prevent WEB-INF content download, you must set javax.faces.RESOURCE_EXCLUDES parameter in web.xml - make sure to provide all file extensions, you want to prevent to be accessible through URL.
    Download - VulnerabilityTestCase.zip

Thursday, March 20, 2014

JDev/ADF sample - Shortcut to Call Custom View Row Method from JSF Expression

  • Shortcut to Call Custom View Row Method from JSF Expression. There is a custom method in Generic View Row Implementation class and you need to invoke it from UI. What would you do? Most likely you would generate Java View Row Implementation class for the specific VO, publish custom method through the interface and later consume it through ADF bindings. This works, but there is a shortcut - especially well working for generic solutions.
    Download - RowIndexAppADF.zip

Thursday, March 13, 2014

JDev/ADF sample - How To Setup MDS Repository for Embedded WLS Instance

  • How To Setup MDS Repository for Embedded WLS Instance. Recently I was enabling external MDS repository for ADF MDS Seeded Customizations, I was facing issues while testing such MDS repository with my local embedded WLS instance - running it directly from JDeveloper. I managed to find a solution at the end, so I would like to share it with you.
    Download - MainMDSApp.zip

Thursday, March 6, 2014

JDev/ADF sample - Why You Don't Want to Code Validation in Before Commit

  • Why You Don't Want to Code Validation in Before Commit. You should know by now - there are many things possible in ADF, but it doesn't mean every solution is right, even if it works. One example of such case - coding validation rules in beforeCommit method. This method is invoked after all changes are posted and ADF BC assumes data is valid, if we throw later validation error from beforeCommit - ADF BC state remains unchanged and changed data is not submitted again. There is a workaround to set jbo.txn.handleafterpostexc=true and to force in memory passivation snapshot with subsequent activation on validation error - however, this is a big performance hit. Every time, where there will be validation error - rollback will be executed and entire AM with all VO instances will be re-activated (SQL re-executed and data re-fetched). Today post is about bad practice, to demonstrate why you should not code validation in beforeCommit method.
    Download - ADFHandleAfterPostApp.zip

Sunday, March 2, 2014

JDev/ADF sample - Improving ADF UI Table CRUD Functionality with Auto Focus

  • Improving ADF UI Table CRUD Functionality with Auto Focus. Improving and tuning ADF applications performance, doesn't mean only ADF framework technical parameters tuning. Performance tuning could be applied to application UI behaviour. I will use ADF Faces table example in this post, by default when new row is inserted - focus for the new row column is not set, user needs to do one extra click to set focus and start entering data. There is a way to eliminate this extra click and set focus automatically for a column in ADF table row. I will describe generic method to achieve such functionality.
    Download - ADFTableFocusApp.zip

Thursday, February 20, 2014

JDev/ADF sample - ADF BC Performance - View Object Instance Lazy Activation

  • ADF BC Performance - View Object Instance Lazy Activation. ADF BC is a great framework to manage data, but one thing it does really smart - ADF BC View Object instance lazy activation. You must know by now - passivation/activation events in ADF BC are relatively expensive in terms of performance. Especially expensive is activation event, as during this event View Object instance is re-constructed and data is re-fetched. However, it is not as bad as it sounds - it doesn't activate all View Object instances from Application Module together. Only View Object instances referenced from current Page Definition are activated. This means, if user was working with 10 screens, before passivation event happened - during activation event, only View Object instances from current screen will be activated. View Object instances from other screens will be activated, when actual screen will be accessed. Good news - you don't need to tune anything for this, this is how it works by default.
    Download - AMStatisticsApp_v2.zip

Monday, February 17, 2014

JDev/ADF sample - Simple JQuery Notification Message for ADF UI

  • Simple JQuery Notification Message for ADF UI. If you would like to use JQuery in ADF and looking for some simple example, this post if for you. I'm sharing use case of JQuery notification message, displayed after successful commit operation is completed in ADF. Once commit is completed, notification message is displayed for 2 seconds and later it disappears.
    Download - ADFNotification.zip

Wednesday, February 12, 2014

JDev/ADF sample - Collecting Changed Row Keys in ADF BC DoDML Method

  • Collecting Changed Row Keys in ADF BC DoDML Method. If you ever had a question - how to collect information about all changed rows in the transaction, I will provide an answer in this post. As you perhaps already know, doDML method from Entity Implementation class is invoked per each changed row. This means our task is to collect Primary Keys for all changed rows and later access this collection from another method, to be able to process collected keys (log them, call PL/SQL, etc.).
    Download - DoDMLExceptionProcessingApp_v2.zip

Friday, February 7, 2014

JDev/ADF sample - Explaining Change Indicator Property for ADF BC Attribute

  • Explaining Change Indicator Property for ADF BC Attribute. There is one not very visible, but quite powerful property available for ADF BC Entity Object attribute. This property is called - Changed Indicator. By default, during commit operation, ADF scans each changed attribute from the current row and compares value in the DB. If it locates changed values in DB, reports error about another user changes in the same row. While this is expected functionality, there are use case when we want to allow commit, even data was changed already by someone else. For example, in more complex systems, data is updated by PL/SQL procedures, we don't want to inform user with error about this. There is a way to override lock method in EO implementation class, catch lock error and raise lock again. This works, but there is different way - to use Change Indicator. This property defines specific attribute to be responsible for row data changes tracking, instead of checking every attribute. Only if Change Indicator attribute value will be changed in DB, then current row changes will be prevented and user will be informed about someone else changes in the same row.
    Download - ChangeIndicatorApp.zip

Wednesday, February 5, 2014

JDev/ADF sample - Different Approach for DB Constraint Error Handling in ADF

  • Different Approach for DB Constraint Error Handling in ADF. Let's be honest - no matter how developer friendly and stable validation rules support would be in ADF BC, there will be always use cases when validation logic will be executed directly in DB, by check constraints for example. There is one problem in ADF, when validation logic is executed by DB check constraints. As there will be error received in doDML, while posting row and violating check constraint - transaction will stop and no other edited rows will be verified, until currently failed row data will be fixed. I will explain in this post, how to bypass such behaviour and have to report failed rows to ADF UI.
    Download - DoDMLExceptionProcessingApp.zip

Monday, January 27, 2014

JDev/ADF sample - AMStatistics - Adding Custom Statistics to ADF BC

  • AMStatistics - Adding Custom Statistics to ADF BC. ADF BC Application Module provides standard class called AMStatistics. This class gives you info about AM creation time as for example, Web Session ID assigned to the current session, etc. What is cool about this class - it is not limited with out of the box statics only, it allows to add your custom statistics. I will describe use case of tracking activation timestamp for the AM and keeping it custom AMStatistics variable.
    Download - AMStatisticsApp.zip

Thursday, January 23, 2014

JDev/ADF sample - Practical Example for ADF Active Data Service

  • Practical Example for ADF Active Data Service. I have created more complex and complete Active Data Service example, based on the one posted in the previous post - Simple Example for ADF Active Data Service. Updated sample application is using JDBC to listen for updates in the DB. Updates counter is refreshed through ADS and displayed to the user. This sample is tested with Oracle XE 10g, you only need to grant change notification to the the user connecting from the data source.
    Download - LongRunningTaskPushApp_v2.zip

Saturday, January 18, 2014

JDev/ADF sample - Improving Scrolling Performance in ADF Read-Only Tables with Row Selection Timeout

  • Improving Scrolling Performance in ADF Read-Only Tables with Row Selection Timeout. There is great new feature available in ADF 11g PS7 and ADF 12c - option to enable row selection timeout for ADF read-only tables. By default, when user is pressing up/down keyboard keys - every time row gets selected, even if user is navigating through multiple records, before selecting the one he needs. With row selection timeout enabled, table rows will not be selected while scrolling, until scrolling stops and required record gets selected. This should be default setting, I wonder why Oracle didn't enabled it by default.
    Download - ADFTableScrollingTimeoutApp.zip

Wednesday, January 15, 2014

JDev/ADF sample - Accessing Custom Attribute Property from ADF UI Expression

  • Accessing Custom Attribute Property from ADF UI Expression. You may not know, but it is possible to access custom property defined for the VO/EO attribute from ADF UI expression. This may turn useful, when implementing custom generic functionality and standard attributes are not enough. In this example, I'm using custom property - alternativeName, in real use case this will be something else.
    Download - CustomPropertyApp.zip

Saturday, January 11, 2014

JDev/ADF sample - ADF BC Application Module Instance Timeout and Web Session Timeout Dependency

  • ADF BC Application Module Instance Timeout and Web Session Timeout Dependency. What happens with AM instance, when Web session times out? I would like to answer this question. To find an answer, I have developed sample application with special settings for AM configuration. This is important to understand, because we should try to avoid frequent AM passivations, same as frequent AM activations. Passivations consumes server resources and delays request processing for current active users.
    Download - AMInstanceTimeoutApp.zip

Tuesday, January 7, 2014

JDev/ADF sample - Simple Example for ADF Active Data Service

  • Simple Example for ADF Active Data Service. Active Data Service in ADF is very useful functionality, it allows to push data to the UI, without extra refresh/reload. However, due to its complexity, is not used too often. My goal is to provide as much as possible simple example for ADS use case in this post. In the future posts, I plan to post updated samples with more complex use case implementations.
    Download - LongRunningTaskPushApp.zip

Monday, December 30, 2013

JDev/ADF sample - ADF Dynamic ADF BC - Loading Multiple Instances (Nr. 100 in 2013)

    Download - ADFDynamicReportUI_v5.zip

Friday, December 27, 2013

JDev/ADF sample - ADF Dynamic ADF BC - Surviving Passivation/Activation Events

  • ADF Dynamic ADF BC - Surviving Passivation/Activation Events. ADF dynamic ADF BC and dynamic ADF UI implementation is useful functionality and is required almost in every larger project. Primary area where this functionality is applied - report parameters screens, instead of building hundreds of static report parameter screens for every report, we can build one dynamic and regenerate required ADF BC objects structure, together with dynamic ADF UI. Here you can read my previous post for the same topic - ADF Generator for Dynamic ADF BC and ADF UI - Recreate. Today post provides improved sample application with added support for ADF dynamic functionality working in passivation/activation event scenario.
    Download - ADFDynamicReportUI_v4.zip

Tuesday, December 24, 2013

JDev/ADF sample - Update For: Recording ADF BC View Object Instance Activation Time

  • Update For: Recording ADF BC View Object Instance Activation Time. You may have seen my previous blog post - Recording ADF BC View Object Instance Activation Time. This post describes how to track activation events time for individual VO's, so you can understand how much activation process may slow down your ADF system runtime performance. I was testing it in stress test environment and discovered issue related to activation start time logging - start time variable value was lost in some cases and set as NULL. Today post describes a fix, activation time is logged more accurate with information from ADF BC AMStatistics helper utility class.
    Download - stresstest_v6.zip

Saturday, December 21, 2013

JDev/ADF sample - Workaround for Infamous Bug 13626875

  • Workaround for Infamous Bug 13626875. There is such issue logged on Metalink - inputListOfValues Field Not Updated When Selecting A Value Violating A Unique Key. (Doc ID 1402074.1). This is related to LOV functionality and validation. As per Oracle statement - LOV list must include only valid values, list should not return invalid values, this is by LOV design. However, this doesn't sound logical in most of the cases - often LOV may contain complete list of values and for specific attribute we need to enforce validation to accept only a subset of all values available in the list. Despite Oracle answer as such functionality is not possible b design, there is workaround to make it work.
    Download - LOVValidationApp.zip

Wednesday, December 18, 2013

JDev/ADF sample - Detail View Object Instance Programmatic Access

  • Detail View Object Instance Programmatic Access. Usually it is quite obvious how to retrieve rowset from VO. It is still basic to retrieve rowset from detail VO, but there is something to keep in mind when accessing detail VO's - current row in master VO, current row must be set. Otherwise, there will be no detail rowset retrieved. I will demo and explain this case here.
    Download - MasterDetailAccessApp.zip

Tuesday, December 17, 2013

JDev/ADF sample - How to Minimize Number of ADF BC Application Module Activations

  • How to Minimize Number of ADF BC Application Module Activations. As I have described in my previous post - you can track how long it takes to perform ADF BC activation in your system - Recording ADF BC View Object Instance Activation Time. Activation event can be potentially slow, as it involves re-quering and re-fetching of all active VO instances, initialized by current AM. In order to speed up ADF application runtime performance, we should tune it in a such way to avoid activation events as much as possible. Main goal of this post, is to prove with practical experiment, theory behind AM tuning for minimizing number activation events.
    Download - stresstest_v5.zip

Thursday, December 12, 2013

JDev/ADF sample - Recording ADF BC View Object Instance Activation Time

  • Recording ADF BC View Object Instance Activation Time. Probably you already now - if there are too many Passivation/Activation events happening in the system, this may slow down your ADF application significantly. There are ways how to minimize number of Passivation/Activation occurrences by tuning Application Module settings. This post is about how to track actual time that takes to activate View Object instances - SQL execution and data fetch times during activation.
    Download - stresstest_v4.zip

Tuesday, December 3, 2013

JDev/ADF sample - ADF Anti-Patterns: Dangerous Tutorials - Real Experience in ADF

    Download - DangerousApp.zip

Sunday, November 24, 2013

JDev/ADF sample - Controlling ADF BC Mandatory Attribute Validation Conditionally

  • Controlling ADF BC Mandatory Attribute Validation Conditionally. I was looking for a solution to control ADF BC attribute mandatory validation conditionally, and there is one - we can implement dynamic switch for attribute mandatory validation. Thanks to Steve Muench, who was helping to implement this requirement - I'm able to provide working sample. The main idea is - based on master attribute value, set dependent attribute to become mandatory/non-mandatory automatically. This will be implemented by controlling dynamic mandatory attribute rule in ADF BC level.
    Download - DynamicMandatoryAttrApp.zip

Saturday, November 16, 2013

JDev/ADF sample - Creating ADF BC View Object Instances On The Fly

  • Creating ADF BC View Object Instances On The Fly. This post is to describe such use case, where we have a set of common Entity Objects and want to handle View Objects and UI dynamically. This is common use case for simpler screens, usually common Entity Objects are provided from the library, but instead of creating hundreds of similar View Objects and UI fragments - we can handle such screens in generic way, by creating View Object instances programmatically and later using them through dynamic iterator.
    Download - ADFDynamicReportUI_v3.zip

Sunday, November 10, 2013

JDev/ADF sample - ADF Controller Save Points - Save For Later Implementation with PS_TXN

  • ADF Controller Save Points - Save For Later Implementation with PS_TXN. This blog post will be based on ADF Developer Guide section - 24.7 Using Save Points in Task Flows. I will be describing out of the box 'save for later' functionality provided by ADF BC (Model) and ADF Task Flows (Controller). This will be especially useful for complex forms, where users would prefer to save their work in progress and come back to it later, to finish with the remaining details. We could split transaction and allow to complete that transaction later, even during next login. Such functionality can be achieved with ADF out of the box feature - Save Points (see link to the documentation provided above). In the background Save Point functionality is based on passivation/activation process handled in PS_TXN table. Save point is creating labels and associating these labels with temporary data stored in PS_TXN.
    Download - ADFTaskFlowSavePointsApp.zip

Monday, November 4, 2013

JDev/ADF sample - Smart Declarative Mode Support in ADF BC View Object Join

  • Smart Declarative Mode Support in ADF BC View Object Join. Declarative mode is known feature of ADF BC and promoted by Steve Muench back in 2008 - Declarative Data Filtering. Declarative mode allows to construct SQL statement on runtime dynamically, based on displayed attributes and ADF bindings in page definition. This is specifically useful for systems created with ADF, where tables are generic and contain long list of attributes. Instead of loading all attributes from DB, it makes perfect sense to load only required ones. There is one more cool feature of declarative mode - it knows how control SQL join on View Object level. Meaning - if attributes coming from joined EO are not rendered, ADF BC will update SQL statement and remove such join. Runtime control for joins is really important, as it may give real additional performance to the system.
    Download - DeclarativeModeApp.zip

Saturday, November 2, 2013

JDev/ADF sample - Find By Key and View Criteria Row Finder Methods vs. Get Row Method in ADF BC

    Download - LargeFetchApp_v4.zip

Wednesday, October 30, 2013

JDev/ADF sample - WebLogic Stuck Thread Case - Large Fetch Generated by Get Row ADF BC Method

    Download - LargeFetchApp_v3.zip

Saturday, October 26, 2013

JDev/ADF sample - Reusing and Extending ADF BC Entities from Common Model

  • Reusing and Extending ADF BC Entities from Common Model. This post is about ADF architecture and better application structuring with EO reuse from common model. I describe how to implement additional requirements to common model in extended ADF BC Entities. Great power of ADF framework - reusability. You should reuse as much as possible, this would simplify maintenance and future development of your application. I will be talking about ADF BC Entity Objects (EOs) reuse in this post. I would recommend to keep EOs in common model project and reuse them across the application. Fair requirement would be to have slightly different EO for specific use case, what to do then? In such case, we could extend EO and implement specific changes. As for example, we may have different set of business rules, different doDML logic.
    Download - eoreuse.zip

Wednesday, October 23, 2013

JDev/ADF sample - Reproducing WebLogic Stuck Threads with ADF CreateInsert Operation and ORDER BY Clause

    Download - LargeFetchApp_v2.zip

Thursday, October 17, 2013

JDev/ADF sample - Evil Behind ChangeEventPolicy PPR in CRUD ADF 12c and WebLogic Stuck Threads

  • Evil Behind ChangeEventPolicy PPR in CRUD ADF 12c and WebLogic Stuck Threads. In your production application, you may experience WebLogic Stuck Threads. This is usually related to the large fetching, in most cases it happens unexpected and is not reproduced easily. In ADF 11g this is related to AM passivation/activation behaviour (will be described more in the next post), in ADF 12c I found another reason for unexpected large fetch in CRUD - ChangeEventPolicy = PPR setting usage for ADF iterator in Page Definition.
    Download - LargeFetchApp.zip

Saturday, October 12, 2013

JDev/ADF sample - Integrating Custom BPM Worklist into WebCenter Portal (Same Domain for BPM and WebCenter)

    Download - BPMWebCenterExtendApp.zip

Tuesday, October 8, 2013

JDev/ADF sample - Extending WebCenter Portal 11.1.1.8 Made Easy

  • Extending WebCenter Portal 11.1.1.8 Made Easy. If you had a chance to extend WebCenter Spaces previous to 11.1.1.8 Portal release, you perhaps would agree - it was not that easy. Good news - with the latest WebCenter Portal 11.1.1.8 release, extending WebCenter Portal process became simpler and more stable. There is special JDeveloper application template provided, designed to extend WebCenter Portal with custom ADF Task Flows and Java code. You can read more about it in WebCenter 11.1.1.8 Developer guide here. Check how complicated it was to extend WebCenter Spaces before - What Else Can Go Wrong when Extending WebCenter Spaces.
    Download - webcenter_extend_ps7.zip

Sunday, September 29, 2013

JDev/ADF sample - Conditional Task Flow Activation in ADF 12c/11g

  • 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

Tuesday, September 24, 2013

JDev/ADF sample - Enabling UI Shell 12c/11g Multitasking Behavior

  • Enabling UI Shell 12c/11g Multitasking Behavior. The main goal of this post is to describe how to enable multitasking functionality in out of the box UI Shell template for ADF applications. Different UI Shell tabs could run different transactions and allow user to commit/rollback data in the scope of individual tab. Every UI Shell tab runs different ADF task flow loaded from the menu.
    Download - TFActivationApp.zip

Tuesday, September 17, 2013

JDev/ADF sample - ADF Query Saved Search in ADF 12c

    Download - SavedSearchApp.zip

Sunday, September 15, 2013

JDev/ADF sample - Dynamic Task Flow Template Actions in ADF 12c/11g

    Download - TaskFlowTemplateApp_v2.zip

Saturday, September 7, 2013

JDev/ADF sample - Understanding ADF Task Flow Page Flow Scope Lifetime

  • 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

Saturday, August 31, 2013

JDev/ADF sample - ADF Task Flow Template Improvements in 12c

  • 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

Wednesday, August 28, 2013

JDev/ADF sample - ADF 12c - Target Tag to Enhance PPR Rendering

    Download - TargetRefreshApp.zip

Thursday, August 22, 2013

JDev/ADF sample - ADF Essentials 12c ADF BC 'BO_SP' ORA-01086 Error

  • ADF Essentials 12c ADF BC 'BO_SP' ORA-01086 Error. It seems like there are differences running same ADF application on WebLogic and on Glassfish runtime. These differences are minor but could cause some headache to the developers. In this particular case, I would like to describe ORA-01086: savepoint 'BO-SP' never established error. Typically this error could happen, if PS_TXN table is unavailable. However, this is not the case with ADF Essentials 12c - PS_TXN table exists and application is able to access it. 'BO_SP' error is generated when DB constraint is triggered, instead of returning DB error message - ADF Essentials 12c displays ORA-01086: savepoint 'BO-SP' never established error.
    Download - ListViewAppEssentials.zip

Wednesday, August 21, 2013

JDev/ADF sample - ADF BC Locking Lifetime and Application Module Pooling

  • ADF BC Locking Lifetime and Application Module Pooling. ADF BC API provides method to lock current row, but lock lifetime can be short. Lock method issues SQL lock and locks the record for current user. If your use case is to keep lock for longer period of time, in other words to reserve record by the user until commit or rollback - this is not the method you should use. Lock issued from ADF BC can be released automatically, before user will be committing his changes. This happens when DB pooling is enabled or when there are more concurrent users than AM pool can handle. If you want to make sure that record will be reserved by the user for certain period of time, you must implement custom flag column in the DB and update it separately.
    Download - LockApp.zip