Thursday, December 1, 2016

JDev/ADF sample - Better Oracle JET Code Structuring with Your Own Modules - Part II

  • Better Oracle JET Code Structuring with Your Own Modules - Part II. You can end up into long lines of JavaScript code when implementing more complex use cases in JET. This will complicate maintenance and make code hardly readable. To prevent this - plan code structure carefully and use your own modules. Structure code into different modules - to reuse common code across multiple use cases.
    Download - from GitHub jetcrud

Saturday, November 26, 2016

JDev/ADF sample - ADF 12.2.1.1 New Feature - Masonry Layout Custom Size Dashboard

    Download - from GitHub ADFAltaApp

Saturday, November 19, 2016

JDev/ADF sample - Oracle JET CRUD - Search and Edit Form - Part I

  • Oracle JET CRUD - Search and Edit Form - Part I. I'm going to post a series of articles about CRUD functionality (on top of ADF BC) implementation in JET. I already had a couple of posts about JET CRUD implementation, this new series will bring improved and simplified structure for JET code implementation.
    Download - GitHub repository

Thursday, November 10, 2016

JDev/ADF sample - ADF LOV Auto Suggest Functionality

  • ADF LOV Auto Suggest Functionality. ADF Faces LOV component can be easily enabled with auto suggest functionality. This is really powerful feature and should save time for user to search for required list values.
    Download - ADFLovAutoSuggestApp.zip

Thursday, November 3, 2016

JDev/ADF sample - Oracle JET Composite Component and ADF BC REST

  • Oracle JET Composite Component and ADF BC REST. I decided to implement sample app for JET composite component. This is powerful thing, it allows to build pretty much any UIs with HTML - package as components and reuse in the apps. Not only UI - JET composite component gets data as any other standard JET component. This allows to build your own components for forms, tables, various widgets. It allows to simplify code complexity, you could hide frequently used code into JET components and use component with parameters only on the page.
    Download - JETSimpleCompositeApp.zip

Thursday, October 27, 2016

JDev/ADF sample - ADF Regions and Shared Data Control Bindings Use Case

  • ADF Regions and Shared Data Control Bindings Use Case. While teaching ADF trainings and talking to ADF developers, often I can see people think about ADF bindings as about some mistery and try to avoid using full potential of ADF Data Control. I would like to give simple, but practical example in this post, which describes how to use ADF bindings and access these bindings across different ADF regions.
    Download - BindingAccessApp.zip

Tuesday, October 18, 2016

JDev/ADF sample - Oracle JET Example - Implementing Editable Collection Table

    Download - JETEditableTableApp.zip

Saturday, October 15, 2016

JDev/ADF sample - JDeveloper 12.2.1.1 Bug and Workaround - Wrong Instance Name for Method Action Binding

    Download - ADFOperationBindingApp.zip

Thursday, October 6, 2016

JDev/ADF sample - Oracle JET and ADF BC REST Security Integration Approach

  • Oracle JET and ADF BC REST Security Integration Approach. I have promised to atendee of my OOW'16 session (Building Enterprise-Grade Mobile Apps with Oracle JET and Cordova [CON5731]) to post a blog about ADF BC REST security and integration with Oracle JET. This post is to demonstrate how we could reuse cookie ID generated by ADF BC REST Web session for REST requests from JET.
    Download - jet_adfbc_security.zip

Tuesday, September 27, 2016

JDev/ADF sample - BPM Worklist API 12.2.1.1 and Custom ADF 12.2.1.1 Application

    Download - adfbpm12211.zip

Saturday, September 17, 2016

JDev/ADF sample - Dynamic Flying Dashboard UI in ADF 12.2.1.1

    Download - ADFIntegrationDashboard_v2.zip

Thursday, September 8, 2016

JDev/ADF sample - Workaround for ADF 12.2.1.1 Match Media Behavior Tag

  • Workaround for ADF 12.2.1.1 Match Media Behavior Tag. If you run ADF 12.2.1.1 application with adaptive UI implemented by af:matchMediaBehavior tag (ADF 12.2.1 Responsive UI Improvements), most likely you will face Null Pointer Exception in Match Media Behavior tag class. Apparently af:matchMediaBehavior tag expects default value to be set on UI component. If default value is not set explicitly, it fails to read it and generates exception (this was not the case in ADF 12.2.1).
    Download - ADFResponsiveUIApp_v2.zip

Tuesday, August 30, 2016

JDev/ADF sample - Generic BigDecimal Formatter in ADF 12.2.1.1

    Download - ADFFormattingApp_12211.zip

Wednesday, August 10, 2016

JDev/ADF sample - Calling Mobile Cloud REST Service from Oracle JET

    Download - release_jet_mcs_v1.zip

Monday, August 1, 2016

JDev/ADF sample - Oracle MCS with ADF BC REST Connector

  • Oracle MCS with ADF BC REST Connector. We already learned how to deploy and access ADF BC REST services from Oracle Java Cloud - ADF BC REST 12.2.1.0 Running Live in Oracle Java Cloud. It's time to see how ADF BC REST can be consumed by Oracle Mobile Cloud Service (MCS). In my point of view, key benefit of MCS is ability to simplify Web Service access for mobile clients, by aggregating these Web Services from different sources and simplifying them. I will try to describe it in very structure way, how to define MCS interface based on ADF BC REST.
    Download - employees_v3.0.zip

Wednesday, July 27, 2016

JDev/ADF sample - ADF BC REST 12.2.1.0 Running Live in Oracle Java Cloud

  • ADF BC REST 12.2.1.0 Running Live in Oracle Java Cloud. It passed almost two years since my previous post about Oracle Java Cloud and ADF - End-To-End ADF Cloud Deployment Process. There is huge improvement in Oracle Cloud, great progress done in these two years by Oracle. Access and management of Oracle Cloud environment is so smooth now, it is even hard to say you are working with your own on premise servers or cloud machines. This is great, I'm impressed - well done Oracle.
    Download - ADFBCRestApp_v9.zip

Sunday, July 17, 2016

JDev/ADF sample - Workaround for ADF BC REST Custom Method Configuration

  • Workaround for ADF BC REST Custom Method Configuration. This post is based on JDEV 12.2.1.1, it seems like there is issue with ADF BC REST custom method definition in this release. I'm glad it is not runtime issue, but related to design time JDEV wizard incorrect functionality. I will explain how to bypass it, when you want to expose custom REST method in 12.2.1.1.
    Download - ADFBCRestApp_v8.zip

Tuesday, July 12, 2016

JDev/ADF sample - ADF BC REST Authentication with JSESSIONID Cookie

    Download - ADFBCRESTApp_v7.zip

Saturday, July 9, 2016

JDev/ADF sample - ADF 12.2.1.1 Improved Support for Programmatic View Object

  • ADF 12.2.1.1 Improved Support for Programmatic View Object. ADF 12.2.1.1 brings improved support for programmatic VO creation. Such VO's are handy, when we want to base VO on alternative data source, such as PL/SQL ref cursor. In ADF 12.2.1.1 developer don't need to worry which framework methods to override, now it is enough to extend from Programmatic View Object Implementation class. This is special framework helper class, designed for programmatic VO support. See example below.
    Download - ADF12211App.zip

Saturday, June 18, 2016

JDev/ADF sample - ADF BC Range Paging and ADF UI Table Pagination Use Case

  • ADF BC Range Paging and ADF UI Table Pagination Use Case. ADF UI table pagination and ADF BC range paging sounds like a perfect combination. But to make it work perfect, a bit of extra effort is required. In the case of search/edit implementation, it can't remember updated record when navigating back to search screen (VO runs with Range Paging and UI table is displayed with pagination). I will explain how to solve it and show how to keep UI table displaying current page and prevent jumping to the first page.
    Download - SearchEditApp.zip

Tuesday, June 14, 2016

JDev/ADF sample - Using the Oracle JET QuickStart Template

  • Using the Oracle JET QuickStart Template. I will show in the post, how you can create single page applications with multiple modules in Oracle JET. As a starting point, you should use the Oracle JET QuickStart template, read about it here. This template comes with sample structure and you could follow it to split application functionality into different groups.
    Download - JETCRUDApp_v10.zip

Saturday, June 11, 2016

JDev/ADF sample - How To Control Row Removal in ADF BC

  • How To Control Row Removal in ADF BC. There is a flaw in ADF BC remove operation. Row could be successfully removed in ADF BC - it dissapears from UI as well, but if there is DB integrity constraint violation - row is not removed in DB and error message is displayed to the user. This could be misleading to the user, he sees message about failed removal, but at the same time row is not present anymore.
    Download - ADFDeleteControlApp.zip

Tuesday, June 7, 2016

JDev/ADF sample - Oracle JET Executing Dynamic ADF BC REST URL

  • Oracle JET Executing Dynamic ADF BC REST URL. I'm going to explain how to call ADF BC REST service from JET API and how to control parameters passed through to REST URL. Most of the time, REST should return data based on different parameter values, URL is not static. I will be exploring two cases - search functionality, where parameter value is entered by the user and LOV functionality, where current employee key is submitted to fetch colleagues list.
    Download - JETCRUDApp_v9.zip

Saturday, May 28, 2016

JDev/ADF sample - Oracle JET Handling ADF BC 12.2.1 REST Validation Event

  • Oracle JET Handling ADF BC 12.2.1 REST Validation Event. I already had a post about how to handle ADF BC validation messages in Oracle JET - Handling ADF BC 12.2.1 REST Validation in Oracle JET. There is an improvement I would like to share. JET submits data to ADF BC REST and there happens validation. In JET perspective data is correct, however it may fail validation in ADF BC and we need to reset values back to original in JET. Previously I was re-executing entire JET collection, drawback of this approach - current selected row was lost and control was returned to the first page in the table configured with pagination.
    Download - JETCRUDApp_v9.zip

Thursday, May 19, 2016

JDev/ADF sample - Oracle JET Master-Detail with ADF BC REST

  • Oracle JET Master-Detail with ADF BC REST. One of the most typical use cases in enterprise applications - Master-Detail relationship implementation. I have decided to implement it in JET and to share this practical implementation with you. Hopefully it will be useful, when you will be learning and building JET applications.
    Download - JETCRUDApp_v8.zip

Monday, May 16, 2016

JDev/ADF sample - ADF Hidden Gem - Export Collection Listener

  • ADF Hidden Gem - Export Collection Listener. How many times you complained about ADF export collection listener generated output? There are two options for the output - CSV and excelHTML. Both of them are not really Excel friendly (Excel complains, each time when such file is opened) and produced output lacks formatting. Luckily there is a way to specify custom formatter for ADF export collection listener and set your own output type. In this way we can produce better and customized output file for Excel, you can construct Excel document with different formatting and layout.
    Download - GitHub Repository

Saturday, May 14, 2016

JDev/ADF sample - Oracle JET Input Search with ADF BC REST

  • Oracle JET Input Search with ADF BC REST. LOV is popular component in ADF, it allows to seach for data entry in the list, select it and assign to the attribute. I was researching, how similar concept can be implemented in Oracle JET, based on data from ADF BC REST service. JET Input Search component seems to be useful for LOV like behavior implementation.
    Download - JETCRUDApp_v7.zip

Tuesday, May 10, 2016

JDev/ADF sample - Oracle JET 2.0.1 - Upgrade for CRUD Sample

    Download - JETCRUDApp_v6.zip

Tuesday, April 26, 2016

JDev/ADF sample - Optimize ADF HTTP Response Size with ChangeEventPolicy

  • Optimize ADF HTTP Response Size with ChangeEventPolicy. You should read this post, if you are looking how to reduce ADF HTTP response size. This can be important for ADF application performance tuning, to improve PPR request response time. By default in ADF 12.2.1, iterator is assigned with ChangeEventPolicy = ppr. This works great for UI component bindings refresh, no need to set individual partial triggers. On other side, this generates extra content in ADF HTTP response and eventually increases response size. I would recommend to use ChangeEventPolicy = ppr, only when its really needed - dynamic forms, with unknown refresh dependencies. Otherwise set ChangeEventPolicy = none, to generate smaller response.
    Download - ChangeEventPolicyPPRApp.zip

Sunday, April 17, 2016

JDev/ADF sample - ADF 12c Custom Property Groovy and AllowUntrustedScriptAccess Annotation

  • ADF 12c Custom Property Groovy and AllowUntrustedScriptAccess Annotation. To execute Groovy expression in ADF 12c (to call Java method from Groovy), you must specify trusted mode. Read more about it in my previous post - ADF BC 12c New Feature - Entity-Level Triggers. Setting mode to trusted, works in most of the cases. It doesn't work if we want to execute Groovy expression (calling Java method in ViewRow or Entity class) for custom property. In a case of custom property and Groovy calling custom method, we need to annotate Java class with AllowUntrustedScriptAccess. This makes a trick and Groovy expression can call custom method.
    Download - ADF12cGroovyCustomPropertyApp.zip

Sunday, April 10, 2016

JDev/ADF sample - Monitoring ADF 12c Client Request Time with Click History

  • Monitoring ADF 12c Client Request Time with Click History. You must be excited to read this post, I will describe one very useful feature, available in ADF 12c. This feature - Click History. You can follow steps described by Duncan Mills, to enable and read click history data in server log. There is one more option available - we can read click history data from ADF request (captured by filter class) and log it in custom way (for later analysis). Click history gives such information as client request start/end time (you can calculate client request duration), component client ID, component type, action event type, etc. All this is useful to understand application performance perceived by the client.
    Download - DashboardApp.zip

Thursday, April 7, 2016

JDev/ADF sample - ADF BC View Criteria Query Execution Mode = Both

  • ADF BC View Criteria Query Execution Mode = Both. View Criteria is set to execute in Database mode by default. There is option to change execution mode to Both. This would execute query and fetch results from database and from memory. Such query execution is useful, when we want to include newly created (but not commited yet) row into View Criteria result. Newly created row will be included into View Criteria resultset.
    Download - ViewCriteriaModeApp.zip

Wednesday, March 30, 2016

JDev/ADF sample - Change ADF BC Data Update Locking with FOR UPDATE WAIT

  • Change ADF BC Data Update Locking with FOR UPDATE WAIT. Each time when data is changed and updated through ADF BC, before posting changes to DB, SQL query with FOR UPDATE NOWAIT is generated and executed. In case if other process locks row to be updated, or another user in the same moment is updating it, error will be generated and update will be stopped. There might be use cases, when you would like to wait for certain period of time, until row will be unlocked and then commit row changes. This is especially true, if 3rd party (PL/SQL) process is updating rows and you have defined change indicator attribute in ADF BC (see my previous post - ADF BC Version Number and Change Indicator to Track Changed Rows).
    Download - LockUpdateApp.zip

Friday, March 25, 2016

JDev/ADF sample - ADF BC Version Number and Change Indicator to Track Changed Rows

  • ADF BC Version Number and Change Indicator to Track Changed Rows. One of the common use cases in enteprise applications is to track concurrent user changes. There are two types of changes possible - when two real users are changing data in the same row, or when single user is changing data and same row is updated by PL/SQL procedure/function (all happen in the same user session). In the first case, we would like to inform a user - row data was changed (two different users changing data). In the second case, there is no need to inform user (data wasn't changed by another real user, it was changed by PL/SQL function/procedure invoked in the same session).
    Download - ADFChangedRowApp.zip

Thursday, March 17, 2016

JDev/ADF sample - Accessing Oracle Mobile Cloud Service (MCS) REST from Postman

    Download - Postman_MCS_1.json

Saturday, March 5, 2016

JDev/ADF sample - Oracle JET and ADF BC REST Basic Authentication

  • Oracle JET and ADF BC REST Basic Authentication. You might be interested to check my previous sample about CRUD implementation in JET - Handling ADF BC 12.2.1 REST Validation in Oracle JET. I'm going to describe how to access secure ADF BC REST service from JET, based on the CRUD sample app. We need to pass authorization header on each REST request, this way server can authenticate user and authorize access to the REST resource. There are couple of other tips applied on ADF BC REST service side, all described below.
    Download - JETCRUDApp_v5.zip

Tuesday, March 1, 2016

JDev/ADF sample - ADF BC REST Support for List Of Values (LOV) Data

  • ADF BC REST Support for List Of Values (LOV) Data. ADF BC REST service out of the box supports LOV list data. You can define LOV for ADF BC View Object attribute and use it straight away in REST service. This is especially useful when LOV list is filtered based on other attributes from current row - no need to collect and send these attributes to the service separately, filtering logic will be handled for you in ADF BC backend. One more benefit - you can reuse existing ADF BC with LOV's implementation and expose it through REST service.
    Download - ADFBCRestApp_v6.zip

Sunday, February 28, 2016

JDev/ADF sample - Oracle JET Live List with WebSocket

    Download - JETWebSocket_v2.zip

Wednesday, February 24, 2016

JDev/ADF sample - Extending ADF Cloud User Experience Rapid Development Kit (RDK)

    Download - AppsCloudUIKit_v2.zip

Tuesday, February 23, 2016

JDev/ADF sample - Basic Authentication Hint for ADF BC REST

  • Basic Authentication Hint for ADF BC REST. If you follow step by step ADF BC REST developer guide - 16.5 Granting Client Access to the ADF REST Resource, still you would not be able to implement basic authentication for the REST service. Thats because one step is missing, it is not described (and required setting is not auto generated by JDEV). In order to enable basic authentication for ADF BC REST service, you should manually define security constraint (based on context root) for RESTServlet resource.
    Download - ADFBCRestApp_v5.zip

Friday, February 19, 2016

JDev/ADF sample - ADF and Cloud User Experience Rapid Development Kit

    Download - AppsCloudUIKit_RS.zip

Friday, February 12, 2016

JDev/ADF sample - When JET Comes To Rescue - Live Data Charts in ADF

  • When JET Comes To Rescue - Live Data Charts in ADF. I have described previously, how you can run JET in ADF UI - Improved JET Rendering in ADF. This was technical steps explanation. Today I will describe a case, when such rendering can be important and useful. The case is related to live data delivered through WebSocket and rendered in chart. WebSocket client must be implemented in JavaScript, but we can't access ADF DVT component values in JavaScript and update them, without making a call to the server and reloading binding value. Which would require client/server roundtrip.
    Download - JETWebSocketADF.zip

Saturday, February 6, 2016

JDev/ADF sample - Oracle JET and WebSocket Integration for Live Data

  • Oracle JET and WebSocket Integration for Live Data. I was researching how to plugin WebSocket into JET. I would like to share my findings and explain how it works. It is amazing, how scalable and quick it is to send JSON message through WebSocket channel and render it in JET. Luckily WebSocket client is implemented in JavaScript, this integrates perfectly with Oracle JET (also based on JavaScript).
    Download - JETWebSocket.zip

Saturday, January 23, 2016

JDev/ADF sample - Database Change Notification Listener Implementation

  • Database Change Notification Listener Implementation. Oracle DB could notify client, when table data changes. Data could be changed by third party process or by different client session. Notification implementation is important, when we want to inform client about changes in the data, without manual re-query. I had a post about ADS (Active Data Service), where notifications were received from DB through change notification listener - Practical Example for ADF Active Data Service. Now I would like to focus on change notification listener, because it can be used in ADF not only with ADS, but also with WebSockets. ADF BC is using change notification to reload VO, when configured for auto refresh - Auto Refresh for ADF BC Cached LOV.
    Download - WebSocketReusableApp.zip

Saturday, January 16, 2016

JDev/ADF sample - Automatic ADF Logout on Browser Close with WebSocket

  • Automatic ADF Logout on Browser Close with WebSocket. Every ADF project could have a requirement to handle browser close event effectively. Differently than desktop applications where we could handle such events, browser doesn't send any event to the server, when browser page is closed. This is especially important for transactional data, when user locks data row and lock must be released automatically, in case if user is closing browser without unlocking. Besides transactional data management, it is important for performance improvement - Web session will be closed instantly and WebLogic resources will be released. There was no reliable solution to handle this, now we can do it with WebLogic 12c and WebSockets. WebLogic 12c supports WebSockets natively, there is no need to configure anything or add libraries.
    Download - ADFSessionHandlingWebSocket.zip

Friday, January 15, 2016

JDev/ADF sample - Edit Use Case for ADF 12.2.1 Dashboard with Masonry Layout

    Download - DashboardApp_v4.zip

Sunday, January 10, 2016

JDev/ADF sample - Handling ADF BC 12.2.1 REST Validation in Oracle JET

  • Handling ADF BC 12.2.1 REST Validation in Oracle JET. CRUD use case would not be complete without validation logic implementation. Oracle JET allows to implement standard and custom validators on the client. Probably most of the simple to average complexity logic will be implemented in Oracle JET. Complex use cases can be handled in ADF BC validation rules, data will be validated through REST calls. When validation fails in ADF BC, error message is propagated through REST back to Oracle JET client, where we can parse it and attach to the UI field.
    Download - JETCRUDApp_v4.zip

Tuesday, December 29, 2015

JDev/ADF sample - Very Practical CRUD with JET and ADF BC - POST and DELETE Methods

    Download - JETCRUDApp_v3.zip

Monday, December 28, 2015

JDev/ADF sample - ADF BC Groovy Improvements in ADF 12.2.1

  • ADF BC Groovy Improvements in ADF 12.2.1. Groovy scripting is improved in ADF 12.2.1. There are no inline Groovy expressions anymore. Expressions are saved in separate Groovy language file, external codesource. Each EO/VO will be assigned with separate file to keep Groovy expressions. This improves Groovy script maintenance (easier to check all Groovy expressions from EO/VO located in one file), also it improves runtime performance (as JDeveloper ADF code audit rule suggests).
    Download - ADFGroovyApp.zip

Saturday, December 26, 2015

JDev/ADF sample - Very Practical CRUD with JET and ADF BC - PATCH Method

  • Very Practical CRUD with JET and ADF BC - PATCH Method. I'm going to share few more tips, how to implement CRUD in JET and call ADF BC 12.2.1 REST service. You are going to learn how to implement table row selection and how to call REST PATCH method to update data through ADF BC REST service. Why very practical? You can take sample application code and use it in your project. Less theory and more practical hints - this is my approach.
    Download - JETCRUDApp_v2.zip