X

An Oracle blog about Middlware

Recent Posts

Deploy Oracle JET Application to Weblogic Server

Step by step create sample Oracle JET application, built as .war file and deploy it to Weblogic Server. Step 1: Install Yeoman nodejs is prerequisite (https://nodejs.org/en/download/) npm install -g yo npm install -g generator-oraclejet Step 2: Gerenate App with using Yo yo oraclejet DemoApp --template=navbar Other Yo Templates: yo oraclejet app1 --template=blank yo oraclejet app2 --template=basic yo oraclejet app3 --template=navbar yo oraclejet app4 --template=navdrawer Step 3: Install Grunt-War Change to the project folder and then install the grunt-war plugin same as before: npm install grunt-war --save-dev Step 4: Creating War.js file scripts/grunt/config/war.js module.exports =  {   /*    * Build a WAR (web archive) without Maven or the JVM installed.    *    * Template strings in the <%= %> tags are set in the data section of Gruntfile.js,    *  or you can hardcode the strings here instead    */                target: {           options: {             war_dist_folder: '<%= distdir %>',      /* Folder to generate the WAR into, set in data section of Gruntfile.js */             war_name: '<%= appname %>',            /* The name for the WAR file (.war will be the extension) */             webxml_webapp_version: '2.5', /* I needed this older version for JCS-SX */               war_extras: [ {filename: 'grunt-war-credits.txt', data: 'This line will appear in the file!\n see http://likeahouseafire.com/2017/08/09/updated-using-grunt-to-create-war-jet3x/ '},                           {filename: 'WEB-INF/weblogic.xml', data: '<?xml version="1.0" encoding="UTF-8"?>\n<weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90" xmlns:j2ee="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic-web-app.xsd">\n  <jsp-descriptor>\n    <keepgenerated>true</keepgenerated>\n    <debug>true</debug>\n  </jsp-descriptor>\n  <context-root>/<%= appname %></context-root>\n</weblogic-web-app>'}],              /* the war_extras are extra files to be generated, needed since grunt-war doesn't create a weblogic.xml */              /* also notice that we're using the <%= appname %> variable in there */               webxml_welcome: 'index.html', /* to point web.xml to the default page */             webxml_webapp_extras: [ '<login-config />\n', '<session-config>\n    <session-timeout>\n    30\n    </session-timeout>\n</session-config>\n' ]                /* some extra settings for web.xml to work with JCS-SX */           },           files: [             {               expand: true,               cwd: '<%= appdir %>',             /* find the source files for the WAR in the /web folder, set in Gruntfile.js */               src: ['**'],               dest: ''             }           ]         } }; Step 5: Modifying Gruntfile.js 'use strict'; var path = require('path'); module.exports = function(grunt) {   require('load-grunt-config')(grunt, {     configPath: path.join(process.cwd(), 'scripts/grunt/config'),     data: {       appname: path.basename(process.cwd()),  // same as project directory name, accessible with '<%= appname %>'       appdir: 'web',  // accessible with '<%= appdir %>'       distdir: 'dist'  // accessible with '<%= distdir %>'     }   });   grunt.loadNpmTasks("grunt-oraclejet");   //grunt.loadNpmTasks("grunt-war");   grunt.registerTask("build", "Public task. Calls oraclejet-build to build the oraclejet application. Can be customized with additional build tasks.", function (buildType) {     grunt.task.run([`oraclejet-build:${buildType}`, 'war']);   });   grunt.registerTask("serve", "Public task. Calls oraclejet-serve to serve the oraclejet application. Can be customized with additional serve tasks.", function (buildType) {     grunt.task.run([`oraclejet-serve:${buildType}`]);   }); }; Step 6: Grunt Build grunt build:release Step 7: Deploy to Weblogic Step 8: Test   References: *http://andrejusb.blogspot.com.tr/2016/07/serving-oracle-jet-application-from.html *http://likeahouseafire.com/2017/08/09/updated-using-grunt-to-create-war-jet3x/ *http://kotreshtm.blogspot.com.tr/2016/11/create-war-file-out-of-jet-project-and_83.html

Step by step create sample Oracle JET application, built as .war file and deploy it to Weblogic Server. Step 1: Install Yeoman nodejs is prerequisite (https://nodejs.org/en/download/) npm install -g yon...

Oracle Identity Manager

Using OIM APIs in Oracle BPEL

Step by step using OIMClient classes in Oracle BPEL with Java_Embedding Lets start Step 1: authwl.conf file Create folder into your project and copy authwl.conf file into it Step 2: oimclient.jar file Get oimclient.jar file from your OIM server and copy into SCA-INF/lib folder. Open your project properties and add oimclient.jar file to libraries Step 3: Java_Embedding action Add Java Embedding action into your bpel and write java code in it.   try { //oracle.xml.parser.v2.XMLElement input = (oracle.xml.parser.v2.XMLElement) getVariableData("inputVariable", "payload", "/client:process/client:input"); //String name = input.getTextContent(); String name = (String)getVariableData("SchedulerInput"); String oim_user = "xelsysadm"; String oim_pass = "password"; String oimProviderURL = "t3://10.10.10.10:14000"; String authWlPath = "..\\oimresource\\authwl.conf"; java.util.Hashtable env = new java.util.Hashtable(); env.put(oracle.iam.platform.OIMClient.JAVA_NAMING_PROVIDER_URL.toString(), oimProviderURL); env.put(oracle.iam.platform.OIMClient.JAVA_NAMING_FACTORY_INITIAL.toString(), "weblogic.jndi.WLInitialContextFactory"); System.setProperty("java.security.auth.login.config", authWlPath); System.setProperty("OIM.AppServerType", "wls"); System.setProperty("APPSERVER_TYPE", "wls"); oracle.iam.platform.OIMClient oimClient = new oracle.iam.platform.OIMClient(env); oimClient.login(oim_user, oim_pass.toCharArray()); oracle.iam.scheduler.api.SchedulerService schedulerService = oimClient.getService(oracle.iam.scheduler.api.SchedulerService.class); String scheduleJobName="AR HR Real Time Integration"; oracle.iam.scheduler.vo.JobDetails jobdetails=schedulerService.getJobDetail(scheduleJobName); java.util.HashMap params= jobdetails.getParams(); String parameterName="User"; String parameterValue= name; oracle.iam.scheduler.vo.JobParameter jobParam= params.get(parameterName); jobParam.setValue(parameterValue); params.put(parameterName, jobParam); schedulerService.updateJob(jobdetails); schedulerService.triggerNow(scheduleJobName); oimClient.logout(); } catch (Exception e) { System.out.println("exception "+e.getMessage()); addAuditTrailEntry("Error: "+e.getMessage()); setVariableData("SchedulerError","Error: "+e.getMessage()); } Step 4: Test Test your project :)

Step by step using OIMClient classes in Oracle BPEL with Java_Embedding Lets start Step 1: authwl.conf file Create folder into your project and copy authwl.conf file into it Step 2: oimclient.jar file Get...

Oracle Access Manager

Quick installation guide for OAM 11g R2 PS3 (11.1.2.3.0)

And again Welcome to my 'secure' world. I wish that most of you will be using IDCS(Identity Cloud Service) instead of access manager on-prem. Lets start a quick installation guide for Oracle Access Manager (OAM) Step 1: Download Files Oracle Access Manager (11.1.2.3.0) Oracle Weblogic Server (10.3.6) Repository Creation Utility (11.1.1.9.0) links : http://www.oracle.com/technetwork/middleware/id-mgmt/downloads/oid-11gr2-2104316.html http://www.oracle.com/technetwork/middleware/weblogic/downloads/wls-main-097127.html   Step 2: Install WLS java -jar wls1036_generic.jar Step 3: Install OAM cd /app/inst/Disk1/install/linux64 (Go to files path) ./runInstaller -jreLoc /app/u01/jdk1.6.0_33/jre Step 4: Run RCU cd /rcuHome/bin (Go to rcuHome) ./rcu Check versions SQL>SELECT OWNER, VERSION, STATUS FROM SCHEMA_VERSION_REGISTRY where owner like OAMPS3%';   OAMPS3_BIPLATFORM 11.1.1.9.0 VALID OAMPS3_IAU 11.1.1.9.0 VALID OAMPS3_MDS 11.1.1.9.0 VALID OAMPS3_OAM 11.1.2.3.0 VALID OAMPS3_OPSS 11.1.1.9.0 VALID OAMPS3_ORASDPM 11.1.1.9.0 VALID OAMPS3_SOAINFRA 11.1.1.9.0 VALID   Step 5: Create WLS Domain cd /app/u01/middleware/Oracle_IDM1/common/bin/ ./config.sh Step 6: Configure OPSS cd /app/u06/middleware/oracle_common/common/bin/ ./wlst.sh /app/u06/middleware/Oracle_IDM1/common/tools/configureSecurityStore.py -d /app/u01/middleware/user_projects/domains/oam_domain/ -c IAM -p -m create Step 7: Start Admin and Managed Servers cd /app/u01/middleware/user_projects/domains/oam_domain/bin/ nohup ./startWeblogic.sh & create boot.properties for managed server1 nohup ./startManagedWeblogic.sh oam_server1 & Acces WLS console at http://localhost:7001/console Acces OAM console at http://localhost:7001/oamconsole

And again Welcome to my 'secure' world. I wish that most of you will be using IDCS(Identity Cloud Service) instead of access manager on-prem. Lets start a quick installation guide for Oracle Access...

Service Oriented Architecture

Deploy Composite Using WLST

If you need to deploy your composites with command line script, follow the steps. Step 1:Create SAR File Deploy your project as a SAR File Step 2:Copy SAR File to Server Create new folder for deployment. Copy SAR file and create empty .py file Step 3:Create .py file Script has two lines, one of them is for connecting server, the other one is deployment function. connect("weblogic","password","t3://servername:port")sca_deployComposite("http://servername:port","/data/oracle/operations/deploy/sca_BPMDeliveryAndInvoice_rev1.0.jar",user="weblogic",password="password",forceDefault=true,overwrite=true) Step 4:Run wlst Go to "wlst" file foler(/Oracle_SOA1/common/bin) and run wlst with deploy.py file. sca_deployComposite Command Category: Deployment Commands Use with WLST: Offline Description Deploys a SOA composite application to the Oracle WebLogic Server. This command does not package the artifact files of the application for deployment. See SOA Composite Application Packaging Commands for instructions on packaging a SOA composite application. Syntax sca_deployComposite(serverURL, sarLocation, [overwrite], [user], [password], [forceDefault], [configplan], [partition]) Argument Definition serverURL URL of the server that hosts the SOA Infrastructure application (for example, http://myhost10:7001). sarLocation Absolute path to one the following: SOA archive (SAR) file. A SAR file is a special JAR file that requires a prefix of sca_ (for example, sca_HelloWorld_rev1.0.jar). The SAR file can be deployed with the deployment commands (such as sca_deployComposite()), but a regular .jar file is not treated as a special SAR file. ZIP file that includes multiple SARs, metadata archives (MARs), or both. Enterprise archive (EAR) file that contains a SAR file. overwrite Optional. Indicates whether to overwrite an existing SOA composite application file. (default): Does not overwrite the file. : Overwrites the file. user Optional. User name to access the composite deployer servlet when basic authentication is configured. password Optional. Password to access the composite deployer servlet when basic authentication is configured. forceDefault Optional. Indicates whether to set the new composite as the default. true (default): Makes it the default composite. false: Does not make it the default composite. configplan Optional. Absolute path of a configuration plan to be applied to a specified SAR file or to all SAR files included in the ZIP file. partition Optional. The name of the partition in which to deploy the SOA composite application. The default value is default. If you do not specify a partition, the composite is automatically deployed into the default partition. Referance: https://docs.oracle.com/middleware/1221/soasuite/SOACR/GUID-EA79CB64-A937-4488-8A70-280FBF2B1401.htm

If you need to deploy your composites with command line script, follow the steps. Step 1:Create SAR File Deploy your project as a SAR File Step 2:Copy SAR File to Server Create new folder for deployment....

JDeveloper

Tune your JDeveloper 12c (12.1.3)

Is your JDeveloper 12c too slow, follow these 3 basic steps and increase perfomance of JDeveloper 12c (12.1.3) Step 1: Configure JVM settings in jdev.conf Path: $MV_HOME$/jdeveloper/jdev/bin/jdev.conf # optimize the JVM for strings / text editing AddVMOption -XX:+UseStringCache AddVMOption -XX:+OptimizeStringConcat AddVMOption -XX:+UseCompressedStrings # if on a 64-bit system, but using less than 32 GB RAM, this reduces object pointer memory size AddVMOption -XX:+UseCompressedOops # use an aggressive garbage collector (constant small collections) AddVMOption -XX:+AggressiveOpts # for multi-core machines, use multiple threads to create objects and reduce pause times AddVMOption -XX:+UseConcMarkSweepGC AddVMOption -DVFS_ENABLE=true AddVMOption -Dsun.java2d.ddoffscreen=false AddVMOption -XX:+UseParNewGC AddVMOption -XX:+CMSIncrementalMode AddVMOption -XX:+CMSIncrementalPacing AddVMOption -XX:CMSIncrementalDutyCycleMin=0 AddVMOption -XX:CMSIncrementalDutyCycle=10 Step 2: Configure Jdeveloper memory settings in ide.conf Path: $MV_HOME$/jdeveloper/ide/bin/ide.conf # Set the default memory options for the Java VM which apply to both 32 and 64-bit VM's. # These values can be overridden in the user .conf file, see the comment at the top of this file. AddVMOption -Xms2048M AddVMOption -Xmx4096M Step 3: Disable "Build After Save" Follow this link

Is your JDeveloper 12c too slow, follow these 3 basic steps and increase perfomance of JDeveloper 12c (12.1.3) Step 1: Configure JVM settings in jdev.conf Path: $MV_HOME$/jdeveloper/jdev/bin/jdev.conf #...

Oracle Fusion Middleware & PaaS Partner Community Forum 2016

What You See Is What You Get Element Invitation to: Oracle Fusion Middleware & PaaS Partner Community Forum 2016 Oracle Media Network Stay Connected OPN on PartnerCast Join our annual conference March 15th & 16th 2016 & hands-on training March 17th & 18th in Valencia Spain Dear Partner, Take this opportunity and register for the Oracle Fusion Middleware & PaaS Partner Community Forum that will be held in the Las Arenas in Valencia Spain on March 15th & 16th 2016 with hands-on training on March 17th & 18th 2016. BPM Suite 12c & Process Cloud Service SOA Suite 12c & SOA Cloud Service & Integration Cloud Service Mobile & Development tools & Mobile Cloud Service & Application Builder Cloud Service Register here Location Las Arenas Hotel Eugenia Viñes, 22-24 46011, Valencia March 15th & 16th 2016 Add to calendar WebLogic 12c & Engineered Systems & Java Cloud & Developer Cloud Service Internet of Things (IoT) Cloud Service User Experience (UX) Video Attend the Fusion Middleware & PaaS Partner Community Forum ! Quotes from previous conferences: "The combination of people, knowledge, presentations, social events was just wonderful. A mini Oracle OpenWorld!" Luis Weir, HCL "For me this is a "must-attend" event. Gaining valuable insight into product strategy, and developing relationships with like-minded Oracle partners definitely helps me " Simon Haslam, Veriton Limited Hands-on training March 17th & 18th 2016 WebLogic 12.2.1 Multitenancy Mobile and Mobile Cloud Service Integrated PaaS SOA 12c & and PaaS cool & new Hybrid Process Applications Internet of Things (IoT) The conference will update you on the last Middleware solutions & cloud services especially for: Architects & Practice Managers: product overview Consultants & Developers: product details and hands-on training including live demos Sales Experts & Marketing Executives1:1 meetings to positioning & sales kits including cheat sheets and joint marketing campaigns Social Media Connect with us! Sponsor For details please visit our registration page here. SOA & BPM Partner Community registration For regular information become a member in the SOA & BPM Partner Community. Please first login at Oracle Partner Network and then visit SOA Partner Community. If you have any questions please contact the Oracle Partner Business Center. Best regards, Oracle EMEA Alliances & Channels SOA Team Jürgen Kress Fusion Middleware Partner Adoption Oracle EMEA Tel. +49 89 1430 1479 juergen.kress@oracle.com Blog LinkedIn Twitter  Resources SOA on OPN SOA Twitter SOA Community Website SOA on LinkedIn SOA Facebook SOA Community Blog

Invitation to: Oracle Fusion Middleware & PaaS Partner Community Forum 2016 Oracle Media Network Stay Connected OPN on PartnerCast Join our annual conference March 15th & 16th 2016 &hands-on training March...

Service Oriented Architecture

Desktop application for purging SOA instances

You can purge instances with using my desktop application. It is easiest way to delete them from your SOA database. My application connects your database and run "soa.delete_instances" procedure. All of instance states will be ignored. "Check states table" . Before you start purging, your database administrator have to run these command below in your database. GRANT EXECUTE ON DBMS_LOCK to SOA_USER;GRANT CREATE ANY JOB TO SOA_USER; My main referance document is "http://docs.oracle.com/cd/E28280_01/admin.1111/e10226/soaadmin_partition.htm". And Please back up your database before you start purging! So, how to use this program? Database Driver: Oracle JDBC driver Connection String(url): Write your connection url like this example "jdbc:oracle:thin:@localhost:1521/orcl" SOA Username: Something like SOA_INFRA, PROD_SOAINFRA etc. Password: Test Connection: It tests your connection, succeed or failed. Composite Composite Name: Which composite you want to purge? It is case sensitive Composite Version: 1.0,1.1 etc. Date From: Beginning creation date for the composite instances. Purge instances created the date after. Date To: Ending creation date for the composite instances. Purge instances created the date before. (Not equals this date) Criterias Batch Size: Batch size used to loop the purgeMaximum Run time: Expiration time at which the purge script exits the loop.Delete with period: Split connections for each period. If you don t check this box, your application runs only "1" time. If you check this box, your application splits your begin and end date with selected day. For example, Date from is "2015-01-10" and date To is "2015-01-20", and you check this box and select 2 days period. Your application will be running 5 times, first delete instances between "2015-01-10" and "2015-01-12", then run again for delete instances between "2015-01-12" and "2015-01-14", then it will be continue like this. Run Click "Run" button and wait. If you want to use this tool, please contact with me via my e-mail (arda.eralp@oracle.com). And it is not official Oracle Product.

You can purge instances with using my desktop application. It is easiest way to delete them from your SOA database. My application connects your database and run "soa.delete_instances" procedure. All...

Service Oriented Architecture

SOA Instance States Table

Oracle SOA Suite 11.1.1.7.x composite instance state ids and descriptions table. State Id State Description 0 Running 1 Completed 2 Running with faults 3 Completed with faults 4 Running with recovery required 5 Completed with recovery required 6 Running with faults and recovery required 7 Completed with faults and recovery required 8 Running with suspended 9 Completed with suspended 10 Running with faults and suspended 11 Completed with faults and suspended 12 Running with recovery required and suspended 13 Completed with recovery required and suspended 14 Running with faults, recovery required, and suspended 15 Completed with faults, recovery required, and suspended 16 Running with terminated 17 Completed with terminated 18 Running with faults and terminated 19 Completed with faults and terminated 20 Running with recovery required and terminated 21 Completed with recovery required and terminated 22 Running with faults, recovery required, and terminated 23 Completed with faults, recovery required, and terminated 24 Running with suspended and terminated 25 Completed with suspended and terminated 26 Running with faulted, suspended, and terminated 27 Completed with faulted, suspended, and terminated 28 Running with recovery required, suspended, and terminated 29 Completed with recovery required, suspended, and terminated 30 Running with faulted, recovery required, suspended, and terminated 31 Completed with faulted, recovery required, suspended, and terminated 32 Unknown 64 -

Oracle SOA Suite 11.1.1.7.x composite instance state ids and descriptions table. State Id State Description 0 Running 1 Completed 2 Running with faults 3 Completed with faults 4 Running with recovery required 5 Comp...

ADF Deployment Options (4)

Deployment with Oracle Enterprise Manager "FMW Control" console This is Web based console Extension of Oracle Enterprise Manager for FMW For administrating FMW applications and infrastructure Has intelligence built administrating ADF or FMW applications ADF specific: Configure ADF Business Component parameters Configure connection parameters Interface A purpose built OEM FMW web console for FMW applications Manual/Automated Ultimately still a UI console so for manual manipulation Start from source code or JAR/EAR It doesn't need the source code, just the end JAR or EAR file to deploy to the server Suitable for development server There's no reason to not use with method for development servers Suitable for test/production servers If you don't have automated deployment systems in place, this is okay for deploying to test and production servers Apply ADF/MBeanruntimechanges Yes you can change ADF runtime settings How To? Deployment Options table  Deployment Options JDeveloper WLS console FMW console weblogic.Deployer WLST Interface IDE Web Web Command line, OS scripts or Ant Command line, OS scripts or Ant Manual/Automated Manual Manual Manual Both Both Start from source code or JAR/EAR Source JAR/EAR JAR/EAR JAR/EAR JAR/EAR Suitable for development server Yes Yes Yes Yes Yes Suitable for test/production servers Yes Yes Yes Yes Apply WLS deployment plans Yes Yes Yes Yes Yes Apply ADF/MBean runCme changes Yes Yes Supports WLS producCon redeployment Yes Yes Yes

Deployment with Oracle Enterprise Manager "FMW Control" console This is Web based console Extension of Oracle Enterprise Manager for FMW For administrating FMW applications and infrastructure Has...

ADF Deployment Options (3)

Deployment with WLS Console This is Web based console Administrate WLS servers and their applications in a WLS domain Treats all applications as generic Java EE applications Has no intelligence built administrating ADF or FMW applications Interface WLS web console is the main UI interface WLS administrators work with Manual/Automated It allows WLS admins to deploy ADF applications via a wizard Start from source code or JAR/EAR It doesn't need the source code, just the end JAR or EAR file to deploy to the server Suitable for development server There's no reason to not use with method for development servers Suitable for test/production servers If you don't have automated deployment systems in place, this is okay for deploying to test and production servers How To? Deployment Options table  Deployment Options JDeveloper WLS console FMW console weblogic.Deployer WLST Interface IDE Web Web Command line, OS scripts or Ant Command line, OS scripts or Ant Manual/Automated Manual Manual Manual Both Both Start from source code or JAR/EAR Source JAR/EAR JAR/EAR JAR/EAR JAR/EAR Suitable for development server Yes Yes Yes Yes Yes Suitable for test/production servers Yes Yes Yes Yes Apply WLS deployment plans Yes Yes Yes Yes Yes Apply ADF/MBean runCme changes Yes Yes Supports WLS producCon redeployment Yes Yes Yes

Deployment with WLS Console This is Web based console Administrate WLS servers and their applications in a WLS domain Treats all applications as generic Java EE applications Has no intelligence built...

ADF Deployment Options (2)

Deployment with JDeveloper IDE Interface This is the basic deployment mechanism every developer is taught to use via the IDE Application menu "Deploy" option Manual/Automated Within the IDE, the developer can kick this off manually, there is no automated option. Start from source code or JAR/EAR It requires to build the JAR/EAR from the source code, so the source code must be checked out first. Suitable for development server This requires the developer to know the WLS admin account name and password.  Suitable for test/production servers But it is not appropriate they know it for your test/QA/production servers Apply WLS deployment plans WLS deployment plan must be manually created but can be applied at deployment time Apply ADF/MBean runtime changes There is no mechanism to change the ADF application at runtime via the MBean interface Supports WLS production redeployment And there is no support for WLS "production redeployment"  How To? Deployment Options table  Deployment Options JDeveloper WLS console FMW console weblogic.Deployer WLST Interface IDE Web Web Command line, OS scripts or Ant Command line, OS scripts or Ant Manual/Automated Manual Manual Manual Both Both Start from source code or JAR/EAR Source JAR/EAR JAR/EAR JAR/EAR JAR/EAR Suitable for development server Yes Yes Yes Yes Yes Suitable for test/production servers Yes Yes Yes Yes Apply WLS deployment plans Yes Yes Yes Yes Yes Apply ADF/MBean runCme changes Yes Yes Supports WLS producCon redeployment Yes Yes Yes

Deployment with JDeveloper IDE Interface This is the basic deployment mechanism every developer is taught to use via the IDE Application menu "Deploy" option Manual/Automated Within the IDE, the developer...

ADF Deployment Options (1)

Deployment Options JDeveloper IDE  WLS Administration Console  Oracle Enterprise Manager "FMW Control" console  weblogic.Deployer WLST   Note: I will try to explain each deployment option in separate article in this blog. In this article you can find basic summary of deployment options. ADF Deployment Prerequisites JAR/WAR/EAR is available to deploy Via JDeveloper you've previously created a deployment profile Generated JAR/WAR/EAR via the deployment profile and build tools ADF runtime libraries already installed & targeted to WLS managed servers These must match the version of JDev/ADF your application was built on And version of WLS the ADF runtimes are supported on Ensure to read Oracle Support notes on installing ADF runtimes Unofficial summary of ADF Runtime install instructions (courtesy TimoHahn) (http://tompeez.wordpress.com/2011/09/14/jdeveloper-versions-vs-weblogic-serverversions/ ) Other software deployments may need to be completed beforehand  e.g. database changes, system patches etc  Manually deploy via  JDeveloper IDE  WLS console  Oracle Enterprise Manager "FMW Control" console  Automated deploy via  weblogic.Deployer WLST  Deployment Options JDeveloper WLS console FMW console weblogic.Deployer WLST Interface IDE Web Web Command line, OS scripts or Ant Command line, OS scripts or Ant Manual/Automated Manual Manual Manual Both Both Start from source code or JAR/EAR Source JAR/EAR JAR/EAR JAR/EAR JAR/EAR Suitable for development server Yes Yes Yes Yes Yes Suitable for test/production servers Yes Yes Yes Yes Apply WLS deployment plans Yes Yes Yes Yes Yes Apply ADF/MBean runCme changes Yes Yes Supports WLS producCon redeployment Yes Yes Yes Further Reading Deployment Automation Patterns (http://bit.ly/VGOfdh) FMW Admin Guide (http://bit.ly/TFRu73) FMW Admin Guide for ADF (http://bit.ly/VJCiE8) WLST Guide (http://bit.ly/TW8pRz) weblogic.DeployerGuide (http://bit.ly/XdzMrg WLS) production redeployment (http://bit.ly/WnuVBc)

Deployment Options JDeveloper IDE  WLS Administration Console  Oracle Enterprise Manager "FMW Control" console  weblogic.Deployer WLST   Note: I will try to explain each deployment option in separate...

Groovy in ADF

Groovy is an agile, dynamic language for the Java platform, defined as JSR 241. It has many features that were inspired by languages such as Python, Ruby, and Smalltalk, making them available to Java developers with a Java-like syntax. It interoperates seamlessly with any Java class, and can be compiled and interpreted without disturbing normal operations.The latest release of JDeveloper provides integrated support for Groovy. You can use Groovy expressions for all sorts of declarative values, such as bind variables and attribute default values. You can use a Groovy script that returns true or false for declarative validation. You can also use Groovy expressions in error messages. Groovy can simplify expressions and make them more concise in that it supports object access via dot-separated notation, so it supports syntax such as Empno instead of getAttribute(EMPNO). You can find out more about Groovy at http://groovy.codehaus.org/ and http://radio.weblogs.com/0118231/2007/05/22.html#a829. Note:Groovy is still a fairly new technology and is missing features such as code completion and debugging capabilities. This makes it difficult to use for large segments of code. Using Groovy Syntax in ADFThe current object is passed into the script as the “this” object. So, to reference any attributes inside the current object, simply use the attribute name. For example, in an attribute-level or entity-level Script Expression validator, to refer toan attribute named “Salary,” the script may say simply referenceSalary. There is one top-level reserved name, adf, to get to objects that the framework makes available to the Groovy script. These objects include:• adf.context: To reference the ADFContext object • adf.object: To reference the object on which the expression is being applied• adf.error: In validation rules, to access the error handler that allows the validation expression to generate exceptions (adf.error.raise) or warnings (adf.error.warn)• adf.currentDate: To reference the current date with time truncated • adf.currentDateTime: To reference the current date and time All the other accessible member names come from the context in which the script is applied: • Bind Variable: The context is the variable object itself. You can reference the structureDefproperty to access other information as well as the viewObject property to access the viewobject in which the bind variables participate. • Transient Attribute: The context is the current entity or view row. You can reference all attributes by name in the entity or view row in which it appears, as well as any public method on that entity or view row. To access methods on the current object, you must use the adf.objectkeyword to reference the current object like this: adf.object.yourMethodName(). The adf.objectkeyword is equivalent to the this keyword in Java. Without it, intransient expressions, the method is assumed to exist on the dynamically compiled Groovy script object itself. • Expression Validation Rule: The context is the validator object (JboValidatorContext) merged with the entity on which the validator is applied. You can reference keywords such as:- newValue, in an attribute-level validator, toaccess the attribute value being set- oldValue, in an attribute-level validator, to access the current value of the attribute being set- source, to access the entity on which the validator is applied in order to invoke methods on it (accessing simply by using attribute values in the entity does not require using the source keyword) All Java methods, language constructs, and Groovy language constructs are available in the script. Some additional tips to keep in mind:• You can use built-in aggregate functions on ADF RowSetobjects by referencing the functions sum(), count(), avg(), min(), and max(). They accept a string argument, which is interpreted as a Groovy expression that getsevaluated in the context of each row in the set as the aggregate is being computed:rowSetAttr.sum("GroovyExpr")such as employeesInDept.sum("Sal") or employeesInDept.sum("Sal!=0?Sal:0 + Comm!=0?Comm:0")rowSetAttr.count("GroovyExpr")• Use the return keyword just like in Java to return a value, unless it is a one-line expression in which case the return is assumed to be the result of the expression itself (such as Sal + Comm or Sal > 0). • Use the ternary operator to implement functionality that is similar to SQL’s NVL() function—for example, Sal + (Comm != null ? Comm : 0).• Do not use { }to surround the entire script. Groovy treats {as a beginning of a Closure object. (See Groovy documentation for more information about Closures.) • Any object that implements oracle.jbo.Row, oracle.jbo.RowSet, or oracle.jbo.ExprValueSupplieris automatically wrapped at run time into a Groovy “Expando” object to extend the properties available for those objects beyond the bean properties. This enables easy reference to ADF row properties (even if no Java class is generated) and avoids introspection for most used names.

Groovy is an agile, dynamic language for the Java platform, defined as JSR 241. It has many features that were inspired by languages such as Python, Ruby, and Smalltalk, making them available to Java...

Using Expression Language in Fusion Applications

This document forms a basic guide on using Expression Language (EL) inside customizations made to Fusion Applications. This feature support comes as part of the embedded Oracle WebCenter Page Composer, and the underlying ADF technology. What Is Expression Language? Expression Language is used for adding addition logic to the runtime customization of page components.The examples provided in this document serve the following basic customization needs, and whilst more advanced logic is possible venturing into great complexity may take your customization beyond the scope that page composer is designed to support. •  Dynamically set a field to default a specific value •  Dynamically set the display properties of a specific field •  Conditionally hide or disable a field or region Generally EL statements return either a value such as ‘Richard’, or a Boolean such as TRUE if the test is a success. These are then used in setting ADF page component properties, such as Value, Required, or Visible. The examples in this document include a mixture of return values used for setting various properties. In ADF a partial page refresh is used to fire the EL logic, and careful testing in a safe environment is needed to ensure your EL executes at the expected places. An example might be properly defaulting values for fields upon actions such as create, edit, and re-edit. In addition, please be aware that not every page isintended to be fully customizable, and even those that are may not always expose the component properties against which you might wish to add custom expression logic. As such expectations of what is possible should be set based on careful testing of each case, and not on any broad assumptions. Download Whitepaper //cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/f4a5b21d-66fa-4885-92bf-c4e81c06d916/File/b28ce781c5fd97d3066e8a5d1bc0574e/elfusionapps.pdf Other Reference Documents are:1) JavaEE Expression Language Tutorialhttp://docs.oracle.com/javaee/6/tutorial/doc/bnaim.html2) Webcenter Expression Language Reference Guide http://docs.oracle.com/cd/E23943_01/webcenter.1111/e10148/jpsdg_app_els.htm3) Developer Relations YouTube channel for demonstrations and exampleshttp://www.youtube.com/FADeveloperRelations

This document forms a basic guide on using Expression Language (EL) inside customizations made to Fusion Applications. This feature support comes as part of the embedded Oracle WebCenter...

Oracle Identity Manager

What’s New in Oracle Identity Manager 11gR2 PS2?

Oracle Identity Manager is a highly flexible and scalable enterprise identity administration system that provides operational and business efficiency by providing centralized administration & complete automation of identity and user provisioning events across enterprise as well as extranet applications. Part of the Oracle Identity Governance Suite, it provides role lifecycle management and privileged account management, ensuring consistent enforcement of identity based controls thereby reducing ongoing operational and compliance costs. This blog post highlights key new features introduced in Oracle Identity Manager 11gR2 PS2.  Dynamic Organization Membership  In a typical enterprise or extranet use case scenario, a user will be associated to their home organization but would require membership to other organization entities to perform related functions. For example, a global help desk user who belongs to the Support organization would require access to view and perform certain functions (like password reset) on other organizations like Finance, Sales etc. OIM has the capability to manually assign the help desk user to an Organization Viewer admin role, which is restrictive and more applicable to permission grants. Dynamic Organization Membership provides a way to specify a rule that would drive the membership of the user to one or more organizations based on their user attributes. The feature introduces the ability to specify a membership rule for organizations similar to how roles are handled. Once the user is dynamically associated to other organizations, they get implicit viewer privileges to view users, roles and privileges made available to those organizations as well. If certain users are needed to perform certain functions, like the help desk example above, they can still be associated to the corresponding admin role manually. Note that this is dynamic rule based organization membership (not virtual organization) that has to be associated with a physical organization in OIM.  Simplified Request Management  Oracle Identity Manager provides a centralized catalog of access rights, including enterprise and application roles, standard and privileged accounts (OOTB integration with Oracle Privileged Access Manager) and entitlements. OIM enables customers to create multiple views of the centralized catalog, like catalog by location, by department or a hierarchical catalog showing all applications along with associated entitlements etc, tailored to their needs. A list of beneficiaries can also be programmatically sent to the catalog enabling customers to integrate with other request initiating systems like a ticketing system.   OIM provides a business user friendly catalog to request account entitlements. However it required the business user to know any entitlement related dependencies. For example, the user needed to know that they needed an e-Business account before they can request for an entitlement that grants them privileges to raise a purchase order in e-Business. OIM can now automatically request the account for a user when a related entitlement is requested, thereby reducing the burden of the business users to know the account-entitlement relationship.  Business users, requesters, approvers or access certifiers, often require detailed information on what a particular entitlement maps to in the target system. For example, granting an e-Business role or responsibility would grant a user a set of menu/button privileges. OIM now supports such critical hierarchical entitlement metadata to be imported and made available during request, approval and certification processes. Users typically would have more than one account in a target system and OIM supported multiple accounts to be associated with a user. OIM now supports specifying to which account a specific entitlement in a request needs to be associated with during the request checkout process.  In many cases, requesters are required to provide additional information during access request for each item requested. For example, in a request that involves multiple entitlements, the requester might be required to specify the start date and end date for each of the entitlements requested. OIM enables requesters to provide such information during request that can be carried all the way to approval and provisioning processes. OIM also provides an out-of-the-box scheduled task for entitlement grant and revoke based on the start and end dates specified. OIM also enables requesters to save the request cart enabling them to validate and submit requests at a later time.  Collaborative Certification Process  OIM introduces the capability of specifying additional levels of reviews in the certification workflow process. For example, OIM can now launch a certification review process whereby the business manager reviews the users that report to him/her, but is then followed by the managers' manager also reviewing the same access rights, while viewing the decisions made by their subordinate.  Improved Diagnostics  OIM introduces a new operational console in Oracle Enterprise Manager that enables administrators a complete view of all the defined OIM operations, out-of-the-box and customer defined event handlers, child processes, workflow processes their state and error information without requiring to mine different server logs. This tool does not replace the larger IDM management pack in Enterprise Manager that provides a suite wide monitoring capability but serves as a useful diagnostic tool specifically for OIM. Source: http://www.oracle.com/technetwork/middleware/id-mgmt/overview/oim-11gr2-whats-new-1709505.pdf

Oracle Identity Manager is a highly flexible and scalable enterprise identity administration system that provides operational and business efficiency by providing centralized administration & complete...

Bounded Task Flow Properties

The ADF framework provides parameters for a bounded task flow parameters are provided in ADF, developer can give them default values with using JDeveloper. Configurable properties are: •  Initializer: This is a managed bean method that is invoked when a task flow starts execution. The value is specified using an EL expression. •  Finalizer: This is a managed bean method that is invoked when a task flow exits. The value is specified using an EL expression. •  Save Point Restore Finalizer: This is a managed bean method that is invoked when a task flow restores a save point. This is used for adding any custom method which is required to run after the execution of the framework code for a save point. If you need a quick brush up on how to define a save point in a task flow, refer back to the topic entitled Using save points in a task flow.  •  URL Invoke: Bounded task flows using JSPX documents may be called directly from a browser URL. This property defines which task flow is browser accessible and which task flow can only be accessed from within an ADF application. The following are the possible values for this flag: i.  url-invoke-allowed: URL invocation is allowed. ii.  url-invoke-disallowed: URL invocation is not allowed. If attempted to invoke task flow through URL, the ADF Controller will return a HTTP 403 status code in this case. iii.  calculated: This is the default value for the URL Invoke property. This option will allow URL invocation if the bounded task flow uses the view activity as default activity and does not use any task flow initializer. •  Library Internal: This property controls the visibility of a task flow when packaged in an ADF library. This helps developers to expose only those task flows that are indented for reuse. •  Parameters: The Parameters section allows you to define input parameters for the task flow. Parameterization makes a task flow more generic and reusable. You can specify parameter name, type, and value. For example, when you define a task flow to display employee details for a department, you can parameterize the task flow to accept the department id from the caller so that it can be reused for any department. •  Return Value: This feature allows you to define the return parameter value to the caller. You can specify return the parameter name, type, and return value. For example, suppose you are displaying the task flow in a pop up that can be used to search and select particular an employee row. The task flow should return the selected employee row to the caller in this case, which can be declaratively achieved by using this feature. To learn how to specify (input or return) parameters for a bounded task flow, read developers guide or stay in touch for my another blog entry about it :)  •  Train: This option, if set to true, generates a train model for the task flow activities. The train model can be used as a data model for various train components in the UI. For example, consider a typical shopping cart site that processes a transaction in multiple steps. You can use the train feature provided by ADF for such implementations. The train component summarizes the multiple steps (view activities) of a task flow as a navigational component in the UI. •  Task Flow Reentry: This option decides whether or not a user can re-enter the task flow by clicking on the browser's back button. The possible values are as follows: i.  reentry-allowed: Allows re-entry to the task flow. ii.  reentry-not-allowed: Disallows re-entry to the task flow. iii.  reentry-outcome-dependent: The re-entry permission for the task flow depends on the outcome that was received when the same bounded task flow was previously exited via the task flow return activities. Note that a task flow can take multiple return activities. If the previously used task flow return activity has a re-entry flag marked as reentry-allowed, then the framework allows re-entry this time as well. The framework disallows re-entry in all other cases.When an end user re-enters a task flow using a browser's back button, and the re-entry is allowed, the framework will re-initialize the task flow state. This includes re-initialization of input parameters used in the task flow, reinitialization of the transaction state, and re-execution of the default activity. The framework discards all the changes that are made before re-entry. •  Critical: If you mark a task flow as critical by setting the value to true, the framework treats the task flow with extra care. i.  If the application is configured to use implicit save points (configured in adf-config.xml), the framework will generate implicit save points on entry to all task flows that are marked as critical.  ii.  The framework will keep track of uncommitted data changes for critical task flow and warn the user if the person tries to exit from the task flow without committing changes. •  Transaction: This property helps to declaratively manage transactions for a task flow. The possible transaction attributes are as follows: i.  No Controller Transaction: The bounded task flow neither participates in existing transactions nor starts a new transaction. As the framework does not track pending changes for this setting, you will not be able to use declarative features available with Task Flow Return to commit changes to the database. ii.  Always Use Existing Transaction: The bounded task flow will always participate in an existing transaction. If no existing transaction is found in progress, then an exception is thrown when the task flow is initialized. iii.  Use Existing Transaction If Possible: The bounded task flow either participates in an existing transaction if one exists, or starts a new transaction upon entry of the bounded task flow if no transaction exists. iv.  Always Begin New Transaction: The bounded task flow always starts a new transaction when entered. The new transaction completes when the bounded task flow exits. These transaction attributes re not simple as explained just one sentence, for more details read developers guide or stay in touch for my another blog entry. •  Share Data Control with Calling Task Flow: Check this property to share the data control with the calling task flow. You should not turn on this property if the transaction type is set as Always Use Existing Transaction or Use Existing Transaction If Possible. •  No Save Point on Task Flow Entry: On task flow entry, the framework will create model save points to store the current state of the model layer if you set the transaction as Always Use Existing Transaction or Use Existing Transaction If Possible. This save point is used later to restore the model state on the exit of the task flow if the task flow return activity is configured for restoring the save point (the Restore Save Point option in Task Flow Return activity). Apparently, save point creation on task flow entry is not really required if the task flow does not need to roll back the changes on exit. The No Save Point on Task Flow Entry option allows you to optionally prevent the creation of an ADF model save point on task flow entry. References  & Further Readings :   Fusion Developer Guide - Part III Creating ADF Task Flows http://www.oracle.com/technetwork/developer-tools/jdev/documentation/index.html Task Flow Design Fundamentals  http://www.oracle.com/technetwork/developer-tools/jdev/adf-task-flowdesign-132904.pdf   Oracle ADF Real World Developers Guide

The ADF framework provides parameters for a bounded task flow parameters are provided in ADF, developer can give them default values with using JDeveloper. Configurable properties are: •  Initializer: Th...

Introduction to ADF Task Flow

Task Flows at the Heart of Oracle ADF There is nothing more important than understanding task flow-oriented design and architecture when developing Oracle ADF applications ADF controller supports task flows. Supporting task flows helps us to break our complex web application into smaller reusable flows. The task flows are simple XML files. Each of the pages in the task flow is added as a view activity and the control flows between the pages. The components in the task flows are called as activities and each of the control flows will have an outcome to define the navigation. Develop User Interface Services – Not Pages Steven Davelaar, "Building Highly Reusable Task Flows" Key Benefits Partitions and modularizes large business applications  Visual task flow diagrams  Provide a shared language between developers and domain experts  Reusable application flows published via ADF Libraries  Can have isolated transactions  Can be used as "remote services with a UI"  Supports traditional web navigation model and rich internet navigation models  Support for nested control flows  On-board security  ADF Security  Bounded task flow browser access protection  Additional memory scopes  Avoid memory attribute name conflicts  Avoid memory bloating  Improved and declarative exception handling  Load on demand  Static and dynamic configuration There are two types of task flows in ADF Unbounded Task Flow Unbounded task flows are designed to handle navigation between pages which do not necessarily follow any specific entry point or exit point. For example, consider the pages linked through the toolbar menu in an application. An end user can select any menu option that he or she likes, or the person can even type the URL directly in the browser for viewing the page and can exit from the page or switch to a new page at any point in time. The navigation model for such pages (unbounded view) is defined using unbounded task flow. Unbounded task flow defines navigation for unbounded views in a Fusion web application. Bounded Task Flow The bounded task flow is primarily designed to implement reusable navigation cases with definite entry and exit points. A bounded task flow contains its own set of control flow rules, activities, and managed beans.  Single point of entry: There is no multiple entry for the flow and it uses a default activity which will get executed before any other activity in the task flows. Accept parameters and return values: The task flow accepts parameter values to be processed within the task flow and returns a value to the calling task flow Reusability: Task flows can be reused within the application to perform common tasks. Re-entry supported: Users can re-enter the task flow based on the task flow re-entry setting. Rendered within ADF region in a page: A task flow can be added to a jspx page  as a region. Own memory scopes (page flow scope): The task flow contains the pageFlowScopevariableas a unique variable to store the data that exists within the boundary of the task flow instance. Transaction management: The task flow can manage transactions. It can create or join an existing transaction. Security: Task flows can be secured by providing privileges and granting and restricting access in an application. Properties that are commonly used in Bounded Task Flows are: For more & detailed information read my blog post about Bounded Task Flow Properties. (https://blogs.oracle.com/ArdaEralp/entry/bounded_task_flow_properties) Property Description Default Activity Activity that is invoked first when a bounded task flow is called. Exception Handler Activity that is called by the framework in case of an exception Initializer Invokes managed bean method upon task flow initialization before any activity is executed. Finalizer Invokes managed bean method upon task flow exit using return activity. URL Invoke Bounded task flows using JSPX documents may be called directly from a browser URL. This property defines which task flow is browser accessible and which task flow can only be accessed from within an ADF application. Managed Beans Managed bean definitions for use within the bounded task flow. Input Parameter Definitions API contract between the bounded task flow and the calling task flow or view. Return Value Definitions API contract between bounded task flow calling task flow. Requires task flows called via task flow call activity Train Defines whether or not the bounded task flow exposes a train model for navigation Critical If save point feature is used, critical ensures a save point is taken when the task flow is left for the application to recover to this state Transaction Defines the transaction setting for the bounded task flow and whether the data control is shared or not (isolated). Also defines if an implicit save point is taken when navigating into a bounded task flow that does not run in its own transaction

Task Flows at the Heart of Oracle ADF There is nothing more important than understanding task flow-oriented design and architecture when developing Oracle ADF applications ADF controller supports task...

ADF Reusable Artefacts

Primary reusable ADF Business Component: Entity Objects (EOs) View Objects (VOs) Application Modules (AMs) Framework Extensions Classes Primary reusable ADF Controller: Bounded Task Flows (BTFs) Task Flow Templates Primary reusable ADF Faces: Page Templates Skins Declarative Components Utility Classes Certaincomponents will often be used more than once. Whether the reuse happens withinthe same application, or across different applications, it is oftenadvantageous to package these reusable components into a library that can beshared between different developers, across different teams, and even acrossdepartments within an organization. Inthe world of Java object-oriented programming, reusing classes and objects isjust standard procedure. With the introduction of the model-view-controller(MVC) architecture, applications can be further modularized into separatemodel, view, and controller layers. By separating the data (model and businessservices layers) from the presentation (view and controller layers), you ensurethat changes to any one layer do not affect the integrity of the other layers.You can change business logic without having to change the UI, or redesign theweb pages or front end without having to recode domain logic. OracleADF and JDeveloper support the MVC design pattern. When you create anapplication in JDeveloper, you can choose many application templates thatautomatically set up data model and user interface projects. Because thedifferent MVC layers are decoupled from each other, development can proceed ondifferent projects in parallel and with a certain amount of independence. ADFLibrary further extends this modularity of design by providing a convenient andpractical way to create, deploy, and reuse high-level components. When youfirst design your application, you design it with component reusability inmind. If you created components that can be reused, you can package them intoJAR files and add them to a reusable component repository. If you need acomponent, you may look into the repository for those components and then addthem into your project or application. Forexample, you can create an application module for a domain and package it to beused as the data model project in several different applications. Or, if yourapplication will be consuming components, you may be able to load a pagetemplate component from a repository of ADF Library JARs to create common lookand feel pages. Then you can put your page flow together by stringing togetherseveral task flow components pulled from the library. AnADF Library JAR contains ADF components and does not, and cannot, contain otherJARs. It should not be confused with the JDeveloper library, Java EE library,or Oracle WebLogic shared library. Reusable Component Description Data Control Any data control can be packaged into an ADF Library JAR. Some of the data controls supported by Oracle ADF include application modules, Enterprise JavaBeans, web services, URL services, JavaBeans, and placeholder data controls. Application Module When you are using ADF Business Components and you generate an application module, an associated application module data control is also generated. When you package an application module data control, you also package up the ADF Business Components associated with that application module. The relevant entity objects, view objects, and associations will be a part of the ADF Library JAR and available for reuse. Business Components Business components are the entity objects, view objects, and associations used in the ADF Business Components data model project. You can package business components by themselves or together with an application module. Task Flows & Task Flow Templates Task flows can be packaged into an ADF Library JAR for reuse. If you drop a bounded task flow that uses page fragments, JDeveloper adds a region to the page and binds it to the dropped task flow. ADF bounded task flows built using pages can be dropped onto pages. The drop will create a link to call the bounded task flow. A task flow call activity and control flow will automatically be added to the task flow, with the view activity referencing the page. If there is more than one existing task flow with a view activity referencing the page, it will prompt you to select the one to automatically add a task flow call activity and control flow. If an ADF task flow template was created in the same project as the task flow, the ADF task flow template will be included in the ADF Library JAR and will be reusable. Page Templates You can package a page template and its artifacts into an ADF Library JAR. If the template uses image files and they are included in a directory within your project, these files will also be available for the template during reuse. Declarative Components You can create declarative components and package them for reuse. The tag libraries associated with the component will be included and loaded into the consuming project. You can also package up projects that have several different reusable components if you expect that more than one component will be consumed. For example, you can create a project that has both an application module and a bounded task flow. When this ADF Library JAR file is consumed, the application will have both the application module and the task flow available for use. You can package multiple components into one JAR file, or you can package a single component into a JAR file. Oracle ADF and JDeveloper give you the option and flexibility to create reusable components that best suit you and your organization. You create a reusable component by using JDeveloper to package and deploy the project that contains the components into a ADF Library JAR file. You use the components by adding that JAR to the consuming project. At design time, the JAR is added to the consuming project's class path and so is available for reuse. At runtime, the reused component runs from the JAR file by reference.

Primary reusable ADF Business Component: Entity Objects (EOs) View Objects (VOs) Application Modules (AMs) Framework Extensions Classes Primary reusable ADF Controller: Bounded Task Flows (BTFs) Task Flow...

ADF Business Components

ADF Business Components and JDeveloper simplify the development, delivery, and customization of business applications for the Java EE platform. With ADF Business Components, developers aren't required to write the application infrastructure code required by the typical Java EE application to: Connect to the database Retrieve data Lock database records Manage transactions ADF Business Components addresses these tasks through its library of reusable software components and through the supporting design time facilities in JDeveloper. Most importantly, developers save time using ADF Business Components since the JDeveloper design time makes typical development tasks entirely declarative. In particular, JDeveloper supports declarative development with ADF Business Components to: Author and test business logic in components which automatically integrate with databases Reuse business logic through multiple SQL-based views of data, supporting different application tasks Access and update the views from browser, desktop, mobile, and web service clients Customize application functionality in layers without requiring modification of the delivered application The goal of ADF Business Components is to make the business services developer more productive. ADF Business Components provides a foundation of Java classes that allow your business-tier application components to leverage the functionality provided in the following areas: Simplifying Data Access Design a data model for client displays, including only necessary data Include master-detail hierarchies of any complexity as part of the data model Implement end-user Query-by-Example data filtering without code Automatically coordinate data model changes with business services layer Automatically validate and save any changes to the database Enforcing Business Domain Validation and Business Logic Declaratively enforce required fields, primary key uniqueness, data precision-scale, and foreign key references Easily capture and enforce both simple and complex business rules, programmatically or declaratively, with multilevel validation support Navigate relationships between business domain objects and enforce constraints related to compound components Supporting Sophisticated UIs with Multipage Units of Work Automatically reflect changes made by business service application logic in the user interface Retrieve reference information from related tables, and automatically maintain the information when the user changes foreign-key values Simplify multistep web-based business transactions with automatic web-tier state management Handle images, video, sound, and documents without having to use code Synchronize pending data changes across multiple views of data Consistently apply prompts, tooltips, format masks, and error messages in any application Define custom metadata for any business components to support metadata-driven user interface or application functionality Add dynamic attributes at runtime to simplify per-row state management Implementing High-Performance Service-Oriented Architecture Support highly functional web service interfaces for business integration without writing code Enforce best-practice interface-based programming style Simplify application security with automatic JAAS integration and audit maintenance "Write once, run anywhere": use the same business service as plain Java class, EJB session bean, or web service Streamlining Application Customization Extend component functionality after delivery without modifying source code Globally substitute delivered components with extended ones without modifying the application ADF Business Components implements the business service through the following set of cooperating components: Entity object An entity object represents a row in a database table and simplifies modifying its data by handling all data manipulation language (DML) operations for you. These are basically your 1 to 1 representation of a database table. Each table in the database will have 1 and only 1 EO. The EO contains the mapping between columns and attributes. EO's also contain the business logic and validation. These are you core data services. They are responsible for updating, inserting and deleting records. The Attributes tab displays the actual mapping between attributes and columns, the mapping has following fields: Name : contains the name of the attribute we expose in our data model. Type : defines the data type of the attribute in our application. Column : specifies the column to which we want to map the attribute with Column Type : contains the type of the column in the database View object A view object represents a SQL query. You use the full power of the familiar SQL language to join, filter, sort, and aggregate data into exactly the shape required by the end-user task. The attributes in the View Objects are actually coming from the Entity Object. In the end the VO will generate a query but you basically build a VO by selecting which EO need to participate in the VO and which attributes of those EO you want to use. That's why you have the Entity Usage column so you can see the relation between VO and EO. In the query tab you can clearly see the query that will be generated for the VO. At this stage we don't need it and just use it for information purpose. In later stages we might use it. Application module An application module is the controller of your data layer. It is responsible for keeping hold of the transaction. It exposes the data model to the view layer. You expose the VO's through the Application Module. This is the abstraction of your data layer which you want to show to the outside word.It defines an updatable data model and top-level procedures and functions (called service methods) related to a logical unit of work related to an end-user task. While the base components handle all the common cases through built-in behavior, customization is always possible and the default behavior provided by the base components can be easily overridden or augmented. When you create EO's, a foreign key will be translated into an association in our model. It defines the type of relation and who is the master and child as well as how the visibility of the association looks like. A similar concept exists to identify relations between view objects. These are called view links. These are almost identical as association except that a view link is based upon attributes defined in the view object. It can also be based upon an association. Here's a short summary: Entity Objects: representations of tables Association: Relations between EO's. Representations of foreign keys View Objects: Logical model View Links: Relationships between view objects Application Model: interface to your application

ADF Business Components and JDeveloper simplify the development, delivery, and customization of business applications for the Java EE platform. With ADF Business Components, developers aren't required...

Introduction to Oracle ADF

Oracle ADF is an end-to-end development framework, built on top of the Enterprise Java platform, offering unparalleled productivity to application developers. The framework provides integrated infrastructure solutions for the various layers of the application and an easy way to develop on top of them. Key Features are:  Based on industry standards  Full model-view-controller implementation  Rich web, mobile and desktop UIs  Focus on reusability  Visual and declarative development  Integrated security and customization  Key Benefits are:  Speeds up application development  Protects from technology shifts  Increase reusability across applications  Create open and standard based applications The Oracle Application Development Framework (Oracle ADF) is an end-to-end application framework that builds on Java Platform, Enterprise Edition (Java EE) standards and open-source technologies. You can use Oracle ADF to implement enterprise solutions that search, display, create, modify, and validate data using web, wireless, desktop, or web services interfaces. Because of its declarative nature, Oracle ADF simplifies and accelerates development by allowing users to focus on the logic of application creation rather than coding details. Used in tandem, Oracle JDeveloper 11g and Oracle ADF give you an environment that covers the full development lifecycle from design to deployment, with drag-and-drop data binding, visual UI design, and team development features built in. In line with community best practices, applications you build using the Fusion web technology stack achieve a clean separation of business logic, page navigation, and user interface by adhering to a model-view-controller architecture. MVC architecture: The model layer represents the data values related to the current page The view layer contains the UI pages used to view or modify that data The controller layer processes user input and determines page navigation The business service layer handles data access and encapsulates business logic Each ADF module fits in the Fusion web application architecture. The core module in the framework is ADF Model, a data binding facility. The ADF Model layer enables a unified approach to bind any user interface to any business service, without the need to write code. The other modules that make up a Fusion web application technology stack are: ADF Business Components, which simplifies building business services. ADF Faces rich client, which offers a rich library of AJAX-enabled UI components for web applications built with JavaServer Faces (JSF). ADF Controller, which integrates JSF with ADF Model. The ADF Controller extends the standard JSF controller by providing additional functionality, such as reusable task flows that pass control not only between JSF pages, but also between other activities, for instance method calls or other task flows.

Oracle ADF is an end-to-end development framework, built on top of the Enterprise Java platform, offering unparalleled productivity to application developers. The framework provides integrated...