Customizing Oracle EBS OA Framework


Published on

In this webinar there will be a brief discussion on what is personalization, customization and extension. Lastly, we will be talking about the role of ADF, which is going to supersede OA Framework in fusion applications.

Published in: Technology, Education
  • Oracle EBS- Video Training Tutorial DVDs (2 DVDs) More than 8 GB of Video files Sale Price 19.97
    Are you sure you want to  Yes  No
    Your message goes here
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • We are going to talk about OAF. Idea of this webinar is not to cover any particular topic in OAF in depth but to try & cover all aspects involved in OAF programming.
  • It has become bread & butter for EBS application developers, which earlier was Forms and Reports Runs on Oracle Application Server (Oracle HTTP Server [modified apache] + OC4J [OracleAS Container for J2EE]) - Many applications in E-BS are now completely based on OAF pages. Historical Perfective PL/SQL code would generate HTML tags and eventually HTML page, package named htp was used for this Problems with PL/SQL toolkit Even to do a small label change, you need to change PL/SQL code UI, navigation and business logic resided in PL/SQL code AK Developer Introduced metadata concept, the structure of the page is stored in AK_REGIONS and AK_REGION_ITEMS tables. Metadata in these tables can be configured using AK Developer responsibility screens Different modules started using AK Developer metadata differently HRMS Pages driven by PL/SQL cartridges, but AK metadata used to render the structure iProcurement Pages driven by Java and XML, but XML regions map to AK regions iStore JSP pages internally use AK regions metadata AK Developer Problems Loss of customer applied customizations when oracle patches with new versions of AK_REGIONS were applied OA Framework with AK Developer MVC, with view layer using AK Developer as metadata repository Personalization kept in tables AK_CUSTOMIZATIONS, AK_CUSTOM_REGIONS, AK_CUSTOM_REGION_ITEMS PROBLEMS AK Developer and JDeveloper were not integrated AK Developer supported only few properties Current technology OAF with MDS Metadata defined in JDeveloper in XML files and stored in MDS tables which start with JDR_% AK_% tables data is migrated to JDR_% tables, modules that were migrated from AK to MDS, will have profile option “FND: Migrated To JRAD” set to Y at Application Level Profile option setting (Site, Application, Responsibility, User) Oracle is still good at producing HTML in PL/SQL code, which is evident from HTML DB, now APEX
  • Let us see what happens when a user, say OPERATIONS, brings up EBS login page, in a browser EBS Server generates a new session, which is not yet stored in the database, and encrypted version of the session id passed back to the browser in a cookie with key-name JSESSIONID For all further communication with EBS server browser uses the JSESSIONID User is queried in FND_USER Entry is made in FND_LOGINS, which has START_TIME Entry is made in ICX_SESSIONS table 'ICX:Session Timeout'  profile option determines the length of time (in minutes) of inactivity in a user's session before the session is disabled.  Note that disabled does not mean terminated or killed.  The user is provided the opportunity to re-authenticate and re-enable their timed-out session. If the re-authentication is successful, the disabled session is re-enabled and no work is lost. Otherwise, the session is terminated without saving pending work. 'ICX: Limit Time'  profile option defines the maximum connection time (in hours) for a connection regardless of user activity.  If 'ICX:Session Timeout' is set to NULL, then the session will last only as long as 'ICX: Limit Time', regardless of user activity. On our R12.1.1 installation these two profile options had values 30 and 999 respectively. Recommended value are 30 minutes and 4 hours respectively. Table ICX_SESSION has two columns TIME_OUT and LIMIT_TIME where these values are stored for every session.
  • BC4J (business components for Java) basically meshes SQL database concepts like views, tables and transactions into the java world via View Objects (VOs), Entity Objects (EOs) and Application modules (AMs) AOL/J provides a number of E-Business suite specific services, especially security, so OA Framework pages implement same security model as that of E-Business suite
  • All BC4J components have XML definition files and backing Java implementation files Every OA Framework page accessed through Oracle applications must have an application module attached to its top-level region This application module is called as root application module Transaction context, JDBC database connection Has business logic It is not advisable to extend AM. You can probably get away with it until seeded page doesn’t have LOV fields, in which case rootAM extension causes session timeout runtime errors One can use nested AMs
  • View Objects are used to query data from the database Can be a SQL statement or based on Entity Object If region is read-only or LOV regions VOs are contained within AMs and added declaratively to an AM For custom VOs you can 3 options extend rootAM and add to that declaratively instantiate VO in the controller of a page create a nested AM and add to it declaratively Entity Object are responsible for doing insert/update/deletion Should have WHO attributes Set automatically during creation/modification Uses optimistic locking with Object Version Number (create column called ObjectVersionNumber and check “change indicator”)
  • Every page has a controller and every region underneath can also potentially have a controller Region is nothing but logical grouping of components Convention is to have PG.xml in the end for pages and RN.xml in the end for regions Advantage of creating a region is re-use, we will see one such example when we discuss workflow Make sure, when you extend a controller of the page and override the page, you call base class method View object can be based on EO or on a SQL query, view attributes are mapped to UI elements When adding custom UI elements of the page, it is always a good idea to bind them to existing VO attributes or extended VO attributes, basically doing it in a declarative way When user click “submit” button processFormData() is called PFD transfers values from the screen fields to the view object cache/entity object cache setAttribute() method of all VO rows gets called All these methods are passed 2 parameters, OAPageContext and OAWebBean OAPageContext User’s session related details such as profile options, responsibilities page parameters session parameters APIs to do page navigation Get handle to root AM OAWebBean (type is PageLayoutBean, handle to any java bean on the page)
  • Deployment $JAVA_TOP/oracle/app/pon $JAVA_TOP/xxiware/oracle/apps/pon
  • OA Framework pages and regions are physically stored in MDS repository, even personalizations are stored in MDS repository Changes done by personalization are not wiped out when new patches are applied and so survive patching and upgrades Personalization does not involve any programming Two types of personalizations User level (create custom views on top of the standard results region) available only if Oracle’s product team has enabled this feature Admin/implementer level Personalize Self-Service Defn Should be set to Yes for personalizations to be performed If set to Yes at site level anyone can do personalizations, so in production system it is not set at site-level Disable Self-Service Personal Yes at site level, not only personalizations but extensions will also be disabled
  • FND: Document Root Path
  • Controller extension is done by extending controller java class and added via personalization This information again goes in MDS repository
  • Showing additional information Added column via personalization
  • Showing additional information Added column via personalization
  • Implemented using IFrame and not AJAX By using Partial Page Rendering, the entire page is not refreshed. Only the changed portion of the web page will be redrawn. This reduces the network traffic and enhances the user experience. Can be done declaratively or even programmatically SPEL Simplest possible expression language (returns only Boolean values) Self Service personalization, there are two ways to change properties like Rendered or Read Only or Required. Either you hardcode a value of True/False during personalization or you attach a SPEL syntax to these properties via personalization Other use of SPEL is to show/hide some function (enabled via a button) based on user grant The Syntax is ${oa.FunctionSecurity.<FunctionName>} The test will return False if <FunctionName> is granted to the current user/responsibility; otherwise True. In this example, we would set the Read Only property to: ${oa.FunctionSecurity.SUPPLIER_READ_ONLY} If the user is logged in to the BUYER responsibility and has been granted access to this function, OA Framework returns False in the function security test. Read more in Dev Guide & search old thread. It is really unfortunate, it only supports Boolean values
  • It is a very common use-case to invoke a workflow from OAF page You can write PL/SQL procedure for that which in turn invokes wf_engine package APIs or there are JAVA APIs exposed
  • OAF is a model-view-controller technology stack that is fully oriented towards E-Business Suite application development. It comprises of underlying technologies like UIX and BC4J, that respectively form core of view and model layers.
  • Important attributes are ENTITY_NAME and PK1_VALUE Attachment at the line level (Auction Id and Auction Line Number)
  • Combines best attributes of various ERP product lines into next generation suite with build-in BI & collaboration capabilities
  • Development Tool OAF JDeveloper with OA Extensions ADF JDeveloper
  • Customizing Oracle EBS OA Framework

    1. 1. Customizing Oracle EBS with OA Framework
    2. 2. Agenda <ul><li>Introduction </li></ul><ul><li>Architectural components </li></ul><ul><li>Customization – Extension – Personalization </li></ul><ul><li>Partial Page Rendering and SPEL </li></ul><ul><li>Deployment </li></ul><ul><li>OAF v/s ADF </li></ul>
    3. 3. <ul><li>OAF (Oracle Application Framework) </li></ul><ul><li>MVC based J2EE framework customized for use in Oracle Applications development. </li></ul><ul><li>Application Framework for developing, extending self service/web/html based pages in E-BS. </li></ul><ul><li>Historical Perspective </li></ul><ul><li>Very first HTML screen in oracle apps was created using PL/SQL code, using PL/SQL toolkit. </li></ul><ul><li>AK Developer, repository for storing structure and definition of the web pages. </li></ul><ul><li>Current Technology - OA Framework with MDS. </li></ul>Overview of OA Framework
    4. 4. <ul><li>Browser Support </li></ul><ul><ul><li>Firefox 3.6 certified to work with E-BS R12 </li></ul></ul><ul><ul><li>IE 8 certified to work with E-BS R12 </li></ul></ul><ul><li>Go to E-BS link in the browser </li></ul><ul><ul><li>Server generates a session and sends back JSESSIONID </li></ul></ul><ul><ul><li>Browser sends username/password with JSESSIONID </li></ul></ul><ul><ul><li>User is authenticated </li></ul></ul><ul><ul><ul><li> </li></ul></ul></ul><ul><li>Session Timeout </li></ul><ul><ul><li>ICX:Session Timeout </li></ul></ul><ul><ul><li>ICX: Limit Time </li></ul></ul>Browser Support and Session Management
    5. 5. <ul><li>User selects a responsibility and a function </li></ul><ul><li>MDS Tables (JDR_*) </li></ul><ul><li>XML representation cached in memory </li></ul><ul><li>Web Bean hierarchy is instantiated, top level bean is PageLayouBean and then for each component of the page there is a web-bean </li></ul>Page Rendering
    6. 6. D Database Entity Objects (EOs) View Objects (VOs) Application Modules (AMs) OA Controllers (COs) Create, Update entities, Validations SQL based or EO based BC4J Liaison between controller and VO/EO. Does connection pooling and state management <ul><li>Java Class, called mainly when </li></ul><ul><li>page renders itself </li></ul><ul><li>to respond to user events </li></ul>Architectural Components
    7. 7. <ul><li>Application Module (AM) </li></ul><ul><ul><li>Container for VO, EO, view link, entity association </li></ul></ul><ul><ul><li>AM Retention </li></ul></ul><ul><ul><ul><li>Get request, not retained by default </li></ul></ul></ul><ul><ul><ul><ul><li>Multipage transaction, have same rootAM and use retainAM=Y </li></ul></ul></ul></ul><ul><ul><ul><li>Post request, it is by default retained </li></ul></ul></ul><ul><ul><li>Files </li></ul></ul><ul><ul><ul><li><XxIware>AM.xml </li></ul></ul></ul><ul><ul><ul><li><XxIware> </li></ul></ul></ul>Business Components for Java
    8. 8. <ul><li>View Object (VO) </li></ul><ul><ul><li>Represent a query result and can be based on </li></ul></ul><ul><ul><ul><li>SQL statement </li></ul></ul></ul><ul><ul><ul><li>Entity Object </li></ul></ul></ul><ul><ul><li>Files </li></ul></ul><ul><ul><ul><li><XxIware>VO.xml </li></ul></ul></ul><ul><ul><ul><li><XxIware> </li></ul></ul></ul><ul><ul><ul><li><XxIware> </li></ul></ul></ul><ul><li>Entity Object (EO) </li></ul><ul><ul><li>Handle database insert/update/delete </li></ul></ul><ul><ul><li>Files </li></ul></ul><ul><ul><ul><li><XxIware>EO.xml </li></ul></ul></ul><ul><ul><ul><li><XxIware> </li></ul></ul></ul><ul><ul><ul><ul><li>create, remove, validateEntity </li></ul></ul></ul></ul>Business Components for Java
    9. 9. <ul><li>processRequest(OAPageContext c, OAWebBean b) </li></ul><ul><ul><li>VO queries are executed </li></ul></ul><ul><ul><li>Can create all UI components </li></ul></ul><ul><li>processFormData(OAPageContext c, OAWebBean b) </li></ul><ul><ul><li>User makes changes on the pages and posts back the page </li></ul></ul><ul><ul><li>Does validations and moves changed values to VO/EO cache </li></ul></ul><ul><ul><li>Calls validation methods </li></ul></ul><ul><li>processFormRequest(OAPageContext c, OAWebBean b) </li></ul><ul><ul><li>Gets called after PFD returns without raising any exceptions </li></ul></ul><ul><ul><li>Place to do database commits </li></ul></ul>Controller Class
    10. 10. <ul><li>Installation </li></ul><ul><ul><li>Setting up E-BS from distribution media to the host operating system . </li></ul></ul><ul><li>Configuration </li></ul><ul><ul><li>Process of setting proper parameters, needs subject matter experts from various business domains. </li></ul></ul><ul><li>Personalization </li></ul><ul><ul><li>Process of declaratively altering page’s UI to meet business needs. </li></ul></ul><ul><li>Extension </li></ul><ul><ul><li>Process of altering page’s functionality programmatically (using PL/SQL, Java). </li></ul></ul><ul><li>Customization </li></ul><ul><ul><li>Process of creating new pages. </li></ul></ul><ul><li>Deployment </li></ul><ul><ul><li>Process of moving personalizations, extensions or customizations from development instance to Test/Production instance. </li></ul></ul>Important Terminology
    11. 11. <ul><li>Profile options </li></ul><ul><ul><li>Personalize Self-Service Defn </li></ul></ul><ul><ul><li>FND: personalization region Link Enabled </li></ul></ul><ul><ul><li>Disable Self-Service Personal </li></ul></ul>D OAF Page Function level Location level Site level Organization level Responsibility level P R E C E D E N C E Personalization
    12. 12. <ul><li>How it is done </li></ul><ul><ul><li>“ Personalize Page” link </li></ul></ul><ul><ul><li>Function Administrator responsibility </li></ul></ul><ul><ul><li>Importing </li></ul></ul><ul><li>Common types </li></ul><ul><ul><li>Changing labels, prompts </li></ul></ul><ul><ul><li>Hiding or adding table columns </li></ul></ul><ul><ul><li>Re-ordering UI elements </li></ul></ul><ul><ul><li>Adding buttons, labels, flexfields </li></ul></ul><ul><ul><li>Adding regions </li></ul></ul>Personalization
    13. 13. <ul><li>Involve some programming </li></ul><ul><ul><li>Controller </li></ul></ul><ul><ul><ul><li>Instantiate custom VO </li></ul></ul></ul><ul><ul><ul><li>Create certain UI elements which can’t be done via personalization (switcher) </li></ul></ul></ul><ul><ul><ul><li>Control visibility based on profile options </li></ul></ul></ul><ul><ul><ul><li>Invoke a workflow </li></ul></ul></ul><ul><ul><ul><li>Invoke a third party web-service </li></ul></ul></ul>Extensions
    14. 14. <ul><li>VO extension </li></ul><ul><ul><li>Needed when value to be displayed to the user on the screen is not available in underlying VO </li></ul></ul><ul><ul><li>Example </li></ul></ul>Extensions
    15. 15. <ul><li>Adding new pages </li></ul>Customization
    16. 16. <ul><li>PPR: Ability to partially render the page </li></ul><ul><li>SPEL: Simplest Possible Expression Language </li></ul><ul><li>$(oa.XxIwarePhoneVO.IsPhNumReadOnly} </li></ul><ul><li>$(oa.FunctionSecurity.SUPPLIER_READ_ONLY} </li></ul>Partial Page Rendering and SPEL
    17. 17. <ul><li>String wfItemType = &quot;XXITMTYP&quot;; </li></ul><ul><li>String wfProcess = &quot;XX_PROC_NAME&quot;; </li></ul><ul><li>OADBTransaction tr = c.getApplicationModule(b).getOADBTransaction(); </li></ul><ul><li>String wfItemKey = “XX_SEQ” + tr.getSequenceValue(“SOME_SEQ&quot;).toString(); </li></ul><ul><li>OANavigation navigation = new OANavigation(); </li></ul><ul><li>// Create Workflow Process </li></ul><ul><li>navigation.createProcess(pageContext, wfItemType, wfProcess, wfItemKey); </li></ul><ul><li>// Set Workflow attributes </li></ul><ul><li>navigation.setItemAttrText(pageContext, wfItemType, wfItemKey, &quot;#FROM_ROLE&quot;, &quot;SYSADMIN&quot;); </li></ul><ul><li>navigation.setItemAttrText(pageContext, wfItemType, wfItemKey, “ATTR1&quot;, “Value1”); </li></ul><ul><li>// Start Workflow Process </li></ul><ul><li>boolean success = navigation.startProcess(pageContext, wfItemType, wfProcess, wfItemKey); </li></ul>Workflow Invocation
    18. 18. <ul><li>Create an attribute of type “Document”, say XX_DETAILS </li></ul><ul><ul><li>JSP:/OA_HTML/OA.jsp?OAFunc=XX_ CUST_REVIEW_RN&Param=&XX_ATTRIB1 </li></ul></ul><ul><li>Include &XX_DETAILS in notification message body </li></ul><ul><li>Region rendered on notification page </li></ul>Embedding Custom Region in Notification
    19. 19. <ul><li>Out-of-the box support for attachments </li></ul><ul><ul><li>Can be done via personalization (Attachment Table) </li></ul></ul><ul><ul><li>Update Allowed </li></ul></ul><ul><ul><li>Insert Allowed </li></ul></ul><ul><li>Table FND_ATTACHED_DOCUMENTS </li></ul><ul><ul><li>ENTITY_NAME, PK1_VALUE (5 possible primary keys) </li></ul></ul>Attachment Support
    20. 20. <ul><li>Importing Page and Region files with xmlimport.bat </li></ul><ul><li>Registering VO and AM extensions with jpximport.bat </li></ul><ul><li>Deploying class, xml files </li></ul><ul><li>Exporting/Importing personalizations </li></ul><ul><li>Restarting the server </li></ul>Deployment
    21. 21. <ul><li>Fusion Applications </li></ul><ul><ul><li>Inherent support for web-services, SOA </li></ul></ul><ul><ul><li>BPEL as the workflow solution </li></ul></ul><ul><ul><li>Is not same as Fusion Middleware </li></ul></ul><ul><li>ADF </li></ul><ul><ul><li>MVC Framework for generic J2EE based application development </li></ul></ul><ul><ul><li>Very declarative drag and drop approach </li></ul></ul><ul><ul><li>Unlike OAF, ADF is not a vendor or technology specific framework. In fact it supports a number of technologies for each of its Model, View and Controller components </li></ul></ul><ul><ul><li>Does not have native support for integration with 11i or R12 </li></ul></ul>ADF (Application Development Framework)
    22. 22. <ul><li>OAF Shortcomings </li></ul><ul><ul><li>Declarative screen design, no WYSWYG, no drag and drop facility </li></ul></ul><ul><ul><li>No inherent support for web-services </li></ul></ul><ul><ul><li>Page flow needs to be coded and can’t be set declaratively </li></ul></ul><ul><li>For all tightly coupled Oracle Applications related development and customizations, stick to OA Framework. </li></ul><ul><li>As full fledged Fusion Apps is still far away, all the customers will be on 11i or R12 release of code for a couple of more years and the biggest chunk of maintenance /enhancement work will be based on OAF. </li></ul><ul><li>Scenarios where ADF fit into current Apps related development is the kind of project where you have to develop a completely standalone application which just uses the Oracle Apps data but is not required to integrate with the Oracle Apps. </li></ul>OAF Vs ADF
    23. 23. <ul><li>Where do we need Extension </li></ul><ul><li>Prerequisites for Extension </li></ul><ul><li>Why there is a need to create a application as a prerequisite </li></ul><ul><li>How to Extend a VO – EO – Controller </li></ul><ul><li>How Personalization play a role in Extension </li></ul><ul><li>Validation VO and Validation AM </li></ul><ul><li>Deploying your extensions </li></ul>Extensions in EBS Agenda For Upcoming webinar
    24. 24. Questions and Answers Questions Answers
    25. 25. iWare Logic Technologies Pvt. Ltd. Aditi Samruddhi, Baner, Pune, India - 411045 Email: [email_address] Website: