Grant Ronald
Oracle Forms and SOA in Egypt and Jordan
Oracle in Egypt and Jordan are running two partner technology days (Jordan 18th Nov, Egypt 18th Nov) at which I will be talking about Oracle Forms strategy, Forms and SOA and will also give an introduction to our Fusion development platform: JDeveloper and Oracle ADF.
For any Oracle technologists in the area, this might be a good opportunity to see how to modernize your current investment, and what the future holds for Oracle technology.
Calling all Oracle Developers in Latvia
If you are an Oracle developer, or have a history with Oracle's classic tools set like Oracle Forms, you may want to check out the event we are running in Riga on the 28th October.
I will be kicking off the event with a presentation on Oracle's strategy with Oracle Forms and will be introducing SOA and web services and how they can be called from Oracle Forms. I will then do an overview of Oracle JDeveloper 11g and Oracle ADF before handing over to Andrejus Baranovskis (Oracle ACE Director) who will be doing a masterclass on JDeveloper.
This will be a great opportunity to get the low down on how to modernize your investment in Oracle Forms, as well as learning from a customer in the field (Andrejus) who is using this technology. If you are in the area and can make it, the registration link is on this page.
Mapping JDeveloper 11g and Oracle ADF to Oracle Forms; Object Libraries
In Oracle Forms, the object library was a container for creating reusable UI components. So for example, if you wanted to created a standard button for all your applications, or a standard text field, or even something more complicated like a standard canvas for address information, the object library was the place to do it.
Now, JDeveloper and Oracle ADF 11g have something which goes WAY beyond the object library. Declarative Components allows you to create reusable composite components that you can package up make available to your development teams.
To show you the functionality, I've put together a demo of building a reusable panel for displaying customer information. This is then packaged up as a library and made available in a different project. The nice thing is you can set placeholders (called facets) in which the user of the component can add their own content. So you can make it pretty clear where they can and can't add or customise the component. You can also pass parameters to the component so that you can use the same component but, for example, have it bound to different data in different cases.
Check out the demo here and click on "Declarative Components" under ADF Development.
Redeveloping an Oracle Forms Application using JDeveloper 11g and Oracle ADF
To coincide with the production release of JDeveloper 11g, I've produced a new and updated paper, based on my Oracle World presentation, on how you can redevelop a typical Forms application using Oracle JDeveloper 11g and Oracle ADF.
I've posted the paper and the sample application on the dedicated webpage for Forms developers coming to the JDeveloper world.
The goal is not to force you to redevelop applications (I state that right at the beginning) but instead, I want to show that typical Forms and Forms functionality can be mapped to the Java world if you use JDeveloper and Oracle ADF.
There is also a completed sample app as well.
As always, feel free to post any feedback.
Regards
Grant
oracle world Tuesday
Tuesday at OW kicked of with me doing a two hour stint on the demogrounds. Things were pretty slow to start but by the second hour I had a crowd of about five or six people hanging around discussing everything they could about Forms. And it was great to see them come along to my "Forms in a SOA world" session in the afternoon.
Again, great turnout, I guess that we had at least 80% of the room full (which is about 100). I did notice someone videoing the presentation as well...Is that going be to on youtube? ;o)
I think the presentation was enhanced all the more by having Nathalie Roman from iAdvise presenting her company's experiences of modernizing a Forms application. So you get the official line from Oracle and the real world experiences from the customer. I also got the opportunity to meet up with a few people I've only "met" through the forums.
Then some customer meetings and back to the hotel for a late meal with some of the Product Management team. Nice way to end a very busy day!
Oracle World 2008 Monday
Well, Oracle World kicked of big time on Moday with some hot news that Oracle JDeveloper 11g is production! (Of course, I already knew this, last week was a mad dash to get white papers and demos prepared for the launch). It will be uploaded and accessible very soon from OTN.
After sitting in on Ted Farrell's keynote on Fusion development it was off to the demogrounds for a sessions and then my "Redeveloping a Forms Application in ADF". Hopefully the picture below shows, but it was pretty much a full room (about 150 people)
It's a tough presentation because there is so much to cram into 60 minutes. I take a "typical" Forms application and then rebuild the Form infront of you. Six database tables, master/detail, look-ups, list of values, validation triggers! Its alot to squeeze in but I just managed it. Next week I will upload a white paper and sample application based on my demo - so keep an eye on my blog for an announcement.
Once that was over there were some quick meetings and then a chance to unwind at the OTN night with a hot dog and a beer.
Tuesday sees me back on the demogrounds and my "Forms and SOA" strategy paper.
Oracle World - Day 0
Oracle World really kicks off tomorrow (Monday) but today was the start of the developer focused "sub-conference" Oracle Develop.
I was manning the hands-on sessions for JDeveloper and as the photo shows, just about, we had a good turn out of about 50 -60 people at each session
After that, it was a quick check of the demo ground machines and back to the hotel for email. Which brings me to my last picture. With me hanging out the hotel window to get the picture, can you guess the district I am in, and better still, the hotel!
Oracle World 2008 - My sessions and time to catch up
Well it's been heads down and busy preparing for the biggest conference of the year - about 45,000 Oracle bods are expected to swoop into San Francisco next week.
If you'd like to disucss face-to-face Oracle Forms, Oracle's tools strategy or how to get started in JDeveloper then come and meet me at one of my sessions.
On Monday I will aim to redevelop part of a Forms application using ADF (not EMP and DEPT!) before your very eyes! Should be interesting. I'm going to try and show all the "typical" things in Forms within ADF and JDeveloper 11g.
On Tuesday I will be giving THE presentation for anyone who has an investment in Oracle Forms. Forms in a SOA world will aim to give you the OFFICAL line on the future of Oracle Forms, some new features information and also, some technical "how tos". In addition, I've arranged for a customer to come on stage and give you the "warts and all" view of their Forms modernization experiences. So you get the official view and the customer view!
If you can't make any of those I will be manning the Forms demo both and also doing a number of hands-on sessions for JDeveloper as well.
So, as I always say to people who come to these conferences: its great to get the freebies but use the time to get face-to-face and go home with all this difficult questions you've always wanted to ask, resolved once and for all!
Oracle World 2008 - My sessions are filling up!
I'm delivering two main sessions at Oracle World this year.
On Monday 22nd Sept, I am delivering "Redeveloping an Oracle Forms Application with Oracle Application Development Framework: A Case Study". This is new and updated for JDeveloper 11g and at the end of Oracle World, I will be publishing a case study paper. The good news for me, but might be bad news for you, is as of today, there are only 5 places left in the room! So, if you are not pre-enroled, get moving fast!
On Tuesday I will be presenting "Oracle Forms in a SOA world" which will focus on Forms strategy and the technical aspects for modernizing Oracle Forms applications. I will also touch on some Forms 11g New Features. The nice thing about this presentation is, it's not all me!. Oracle partner iAdvise will be presenting a case study of a Forms customer who has modernized their application through web services and ESB (Enterprise Service Bus). There are 60 already registered for this presentation so its filling up quickly as well.
If you can't make it to one of those sessions, I will also be manning the Oracle Forms demo both at various points throught the week. Stop my and say hello!
Desupport of Oracle Forms - things just got better
For those of you in global land where Friday is the last day of the working week, this message might put a spring in your step for the weekend.
Hidded in this document is the NEW desupport date for Oracle Forms 10.1.2 (and Application Server 10.1.2) has been extended by another year to Dec 2010.
And of course, Forms 11g is in the pipeline awaiting release; as well and 10.1.2 having extended support to 2011 and indefinite sustaining support. So, for all you people running Forms applications on 10.1.2, or thinking about upgrading to 10.1.2, you've got another 12 months to think about it.
For those doom-mongers forseeing the immenent demise of Forms, sorry, you'll have to add another year to your prediction, at least ;o)
Enjoy.
Oracle Forms running with MapViewer. Maps and Oracle Forms!!
Jacob Madsen from Brandsoft in Denmark has written a community white paper on how his company has integrated MapViewer with Oracle Forms. Having seen a demo from Jacob, its pretty amazing stuff. Highlighing a region on a map queries data into you Forms block from that map area.
You can get a copy of the paper here.
How to use the Sun plug in with Oracle Forms
With Oracle Forms we are moving towards certification with the Sun plug-in. We already certify 1.4, 1.5 and 1.6 with various versions of Oracle Forms. If you want to know how to set up Oracle Forms to run with the Java Plug-in then you can read this article.
Can Oracle Forms Run on WebLogic
I've been seeing this question come up more and more given recent events. Jan Carlin as posted a response to this.
The bottom line is that one element of the Oracle Application Server in release 11 (OC4J) will now be WLS. This affects Forms in a minimal way since Forms is a C process and only uses the Java container for serving up HTML and for comms management. So, Forms 11g, the next version, will run on a server which uses WLS. It doesn't mean your Forms 9i applications can now be run on some existing WebLogic versions.
Hope that addresses the questions for people.
Collect America screenshots and architecture for Oracle ADF 11g
An interesting article from Collect America who are using Oracle ADF 11g. Some good information on their motivation, architecutre and some nice screenshots of the applications they are building.
Oracle Forms Modernization: Tools Direction ODTUG Article
Earlier in the year I wrote an article on Oracle Forms modernization for the ODTUG (Oracle Development Tools Uset Group) Technical Journal. I've now posted a copy on the Forms Modernization page for everyone to read. Thanks for the ODTUG group for allowing me to reproduce it here.
Mapping JDeveloper 11g and Oracle ADF to Forms: In Love with LOVs
A common feature used in Oracle Forms is the good old LOV - List of Values. In Forms, you can create an LOV based on a select statement or a record group, and then you assign that LOV to a field. So, on entering ctrl-l it will display the LOV, or if you type in some data will will validate that data against the LOV (and display it automatically).
JDeveloper 11g provides the exact same functionality in a simple declarative way. Here is how its done:
In Forms
So, in Oracle Forms you would create a record group and supply a select statement, something like
SELECT Jobs.JOB_ID,
Jobs.JOB_TITLE,
Jobs.MIN_SALARY,
Jobs.MAX_SALARY
FROM JOBS Jobs
(is this looking a bit like an ADF Business Components View Object to you??)
You then create the LOV by supplying the name of the record group, and which attributes you want returned from the LOV and into which fields. Forms will automatically assign a key to access the LOV (ctrl L) and you can also set the property Validate From List to force the LOV to appear and validate against any data yoy typed in.
In JDeveloper 11g
Its pretty much the same steps
Firstly, you will have created a VO called JobsVO (this is the same as your record group in Forms).
You can now set a list of values of the JobID field of the Employees object (just like you did on the Emp block in Forms).
Here you can define (shown in red) the type of list that appears (Input Text With List of Values is the same as the Forms LOV), the attributes you want to appear in the LOV, and finally, you can set that you will automatically query the LOV based on any data input into field, just as Forms does.
The last step is on the JobID Field, set AutoSubmit to true, to ensure that tabbing out the field will validate the data immediately.
When you do this, you get the following:
Which is exactly as you got in Oracle Forms, and we haven't even touched on some of the advanced features of JDeveloper's LOVs.
Thanks to Frank Nimphius for the spark for this post.
Mapping ADF to Oracle Forms - Access Keys and other UI properties.
I've started a new category on my blog which will focus on features you use every day in Oracle Forms, which map directly, and declaratively, to Oracle Forms. The idea is to show that ADF provides the same simple declarative "hooks" as Forms.
The first of these is Access Keys. When building a Forms UI, you would typically assign mneumonic/access keys to a Forms item. This means that on pressing some key combination, would "shortcut" you to a UI item.
So in this example, the Stock button has an access key of S meaning that when you enter Shift Alt S, the button presses.
And you have the same functionality in ADF Faces Rich Client (JDeveloper 11g)
So pressing shift-alt-N will "press" the Next button and navigate to the next record.
This is of course in addition to many of the other attributes on the UI items like. Here is just a short sample:
Oracle Forms JDeveloper 11g Access Key Access Key Iconic, Iconic Filename Icon Prompt Label or Text Foreground Color Text Color Background Color Background Color Font Name Font Font Size Size Font Style Italic Font Weight Bold Width Box Width Height Box Height Wrap Style Wrap Enabled Disabled Required RequiredCalculating Line Totals in JDeveloper 11g - now codeless
Last week down at the MOD, I was doing some hands-on training with 10.1.3 and made specific mention that some of the coding performed in the hands-on labs, was now completely codeless in JDeveloper 11g. This shows the kinds of advancements we are making in JDeveloper 11g to make it more and more declarative.
Take the example of creating a line total (e.g. LineTotal = QuantityShipped * Price).
Here is how you do it in JDeveloper 10g
JDeveloper 10g
First, you declare a new attribute on your View Object and specify that the attribute is based on a SQL statement.
This attribute will automatically be populated with the correct value when the View Object is queried. However, if you then change the value of the Price or QuantityShipped, you need to force the recalculation to happen. To do this you have to add a little code to the View Object. Namely:
In this case, what you are doing, is when the value of the attribute is being updated by the new value (a set method is being called), you need to force the line total to be reset. In this case, it is being reset to null.
Now, when the value is being set, the getLineTotal is being called to get the value from the attribute (which is now null) and redisplay that to the user. And so, at this point, you do the calculation again.
So, only three lines of code required but code all the same.
So how do we do it in JDeveloper 11g? Well, its totally declarative now.
JDeveloper 11g
You create the same LineTotal attribute on the View Object, but now you can set the value of the attribute to be an expression, and you can also set, which attribute should trigger the recalculation of the expression as you can see in the screenshot below:
Better than than, I could even make the expression conditional. So the expression might be:
(QuantityShipped > 100) ? QuantityShipped * (Price * 0.9) : (QuantityShipped * Price)
So, I can calculate a discount if the quantityShipped is > than 100.
Pretty cool!



