Subscribe

RSS Feed (xml)

Powered By

Skin Design:
Free Blogger Skins

Powered by Blogger

oracle search

Wednesday, May 7, 2008

AUSOUG 2007 conference "yarn" + what's happening in 2008

It's now Sunday after the 2nd leg of the Australian Oracle User Group (AUSOUG) 2007 conference in Melbourne. The following is a bit of a "yarn" about the overall conference series format, and doesn't bother to mention speakers or personalities. If that's your gig, hit the back button now, otherwise if you're interested in Oracle User Group events in general, read on.

All in all the volunteers of the AUSOUG committee and staff need to be congratulated on a conference well done this year, building upon last year's successes.

This year saw both cities, Perth and Melbourne break the attendee records of the previous year, with over 400 and 500 attendees respectively in each (sorry, I can't remember the exact numbers). In 2006 AUSOUG decided to change the tired "all cities" conference series, run in Sydney, Melbourne, Brisbane, Adelaide and Perth to focus on a smaller (in terms of number of cities) but larger (in terms of the size of the event) program in Perth and Melbourne. This has paid off with falling delegate numbers arrested, instead the 2 city conference seeing a growth of 100 each for 2006 and 2007 respectively. It's no Oracle OpenWorld, but in my opinion not bad for a country that only has a population of around 20 million.

As a side note: Why the 2 city model rather than 1? Or more specifically why Perth at all given it's so far from the Australian action on the West Coast? It's a question of member numbers and geography. Perth has always enjoyed a strong support for AUSOUG with (at times) the largest state based membership base. In turn Perth is such a considerable distance away from the Australian East Coast, there is a fair risk that West Aussies just wont commit the time or effort to head to an East Coast only "1 city" conference model. As such AUSOUG is mindful of ensuring it still supports one of its largest membership bases, to ensure the overall success of the conference series, and to protect the future of the group. However on the East Coast, the Melbourne conference sees attendees from Darwin through Tassie, even Indonesia and New Zealand, so it shows the people on the "other-side-of-the-big-brown-bit" are much more willing to head anywhere on the East coast than the "sand-gropers."

Why Melbourne? Well it was a considered choice between East Coast cities, and Sydney is known as the "nightmare" city in conference organiser circles in Australia (success is far from guaranteed in Sydney and can be very financially risky or so I'm told), Melbourne was a natural choice in 06 and 07 as it has (at last count) the largest state based membership.

The other key benefit of the 2 city conference model and was recognized by the AUSOUG committee as a priority when it changed the program, is the new conference model is seeing more international speakers willing to make the trip across. To some Aussies it might seem strange that international guests wouldn't want to see all Australia has to offer once flying the kzillion hour leg to our fair shores. However in speaking to a number of such speakers, most can't commit the huge amount of time (and dollars) required to visit every city. Now with the advantage of only a couple of cities to visit, they are willing to make the trip.

The decision of which cities to hold the conference at is an incredibly difficult one, and one that I'm happy I'm no longer a part of having stepped down from the National committee. It's the usual "you can only satisfy 20% of the people 80% of the time" decisions, and will draw complaints no matter what (especially from the Sydney crowd).

However the fact of the matter is from the user group's point of view, the conference series has seen good growth showing membership satisfaction, continued commitment from Oracle and other exhibitors from local and abroad showing the worth of the conference to sponsors and vendors, and of course the generous commitment from international and local speakers, who are what the punters come to see after all (either that or those free Toad tshirts this year - hard to tell really).

As announced at the Perth leg of the conference this year, next year's 2008 conference location is not yet 100% decided, but the going bet is the Gold Coast (south of Brisbane in Queensland for the international readers), approximately 2 weeks after San Fran's OOW in September 2008. The format and timing of the Perth conference leg is still a work in progress. Please remember I don't sit on the AUSOUG National committee anymore, so I have no "special" window into what the National committee decides. If you wish to influence the decision you should contact your local AUSOUG state representatives and voice your opinion.... and from personal experience, they do listen.

Anyway, after a year of watching the 2007 conference series form, while I sat on the sideline of the organisational effort, I think the end result has been a good one, and I wish the user group all the luck for the 2008 events.

My cursed presentation

For the frequent readers of my blog, you may know more recently I've been running my "Take a Load Off!" presentation at Oracle Open World Unconference, as well as the 2007 AUSOUG Perth and Melbourne conference legs. This presentation took time out to look at load and stress testing the latest web technologies, in particular those from Oracle such as Application Express (Apex) and JDeveloper.

This presentation has turned out to be in fact "cursed". There's no other description that's suitable.

The presentation contained a significant amount of live demos ("oh-no" I hear you say). Yet regardless of the amount of preparation I put in and the number of successful dry-runs I had before my presentation, the live demos kept on failing right at the critical point of my "live stand up routine". First at OOW my database exploded taking 99% of my CPU making my presentation drag to a halt. Then in Perth Apache JMeter and JDeveloper refused to talk and I had to rely on good ol'Apex to demonstrate what I wanted to show. Finally in Melbourne my laptop's Firewall went nuts right at the last moment, and I later discovered I was running on battery power for the whole demo. This is of course not to forget the same morning my database Listener wouldn't talk to my database and I had to desperately call my boss and her ever handy DBA expertise to sort it out.

Read my lips: "aaaaaaaaaaaaaaaaargh!"

There's a line in Australian television acting circles (I'm sure it crosses international barriers), that you should never work with animals or children during live broadcasts. I'd like to extend that to Oracle products during presentations for the foreseeable future! ;)

As somebody pointed out to me today though, the common denominator in the presentation wasn't the various technologies that failed, but in fact the operator himself. Being an Aussie, you can imagine my response to that ;)

Anyway, I've learned my lesson. From now on, it's all canned demos with Powerpoint content. At least until my confidence returns. I'd love to hear other presenters' "disaster stories" if you're willing to share.

For those overly keen on the whole load and stress testing gig, as well as checking the latest database tuning and Apex presentations from my boss Penny Cookson, head along to the Sage website to download the content. However I make no promise that my presentation wont destroy your PC.

Post OOW 07 - a green summary from TreeHugger

....filed with the "I'm a greeny so live with it" department.

As follow up to my recent post about Oracle's greening efforts at OOW, TreeHugger covered the event with a good range of posts which I hope you may find interesting. For the uninitiated, TreeHugger is the SlashDot of the environmental world.

Of particular interest:

  • Michael Dell from Dell and Jonathan Schwartz from Sun received some points for their "green" message during the keynote, but Oracle's Larry Ellison received a big fat zero. Come on Oracle, you're not alone in this big wide world!
  • Jena Thompson from The Conservation Fund spoke on the importance of C02 offsets in context of the gathering criticism.
  • Michael Dell talks among other green initiatives at Dell, the concept of the Green Print where organisations go beyond just looking at their CO2 emissions, but look at collaborative efforts among all departments within an organisations to reduce their CO2 footprint.
  • Recorded by video are some enlightening opinions from the punters at the conference on what being green means, moving from the marketing corporate hype of it all to what the "common folk" are concerned about.
For more check out the complete set of OOW tagged posts. Well done to TreeHugger for capturing the green issues around such a large event. I look forward to their coverage next year.

On a secondary note, thanks to a change of federal government and a general public tired of a government ignoring the environmental issues and concerns of the Australian voters for over 11 years, Australia's new government has finally ratified the Kyoto Protocol. Officially "Hurrah!" Now I don't feel so embarrassed about being an Australian. This mean the USA is the last industrialised country to not make the leap. Come on America, pull your socks up!

In the Mix - Oracle User Groups

It didn't take long for Oracle user groups and SIGs to be represented on Oracle's new site mix.oracle.com. The Mix proves to be a particular good fit for the user groups, because it allows non-technical discussions and posting of ideas for each group, unlike other technical forums hosted by Oracle or the user groups in particular.

If you're a registered user of the Mix, take the chance to dive in and start posting ideas and questions for your respected group. Given enough votes your ideas could persuade the group to take action.

User groups:

  • Australian Oracle User Group - AUSOUG
  • German Oracle Users Group - DOAG
  • Higher Education User Group - HEUG
  • Northwest Oracle Users Group (USA) - NWOUG
  • Oracle Applications Users Group - OAUG
  • Oracle Development Tools User Group - ODTUG
  • Quest International Users Group
  • San Diego Oracle Applications User Group - SDOAUG
  • Standard Life Oracle User Group - SLUG
  • Turkish Oracle Users - OracleTURK
Special Interest Groups (SIGs):
  • Contracts SIG
  • Quest Public Sector SIG
  • UKOUG Development Engineering SIG
Miscellaneous:
  • International Oracle User Council Product Development Committee - IOUC PDC
  • OAUG Customer Support Council
  • Second Life Oracle Users Groups
Apologies to any groups I missed out. Note I also haven't had the chance to check that these are all legitimate user groups, but you get the idea.

Conference widows

Filed under "I'm really all pink and squishy inside."

I've just come off 3 weeks of conferences, having visited OOW in San Fran, the Perth Australia leg of the AUSOUG conference, as well as the Melbourne leg too. Conferences, whether you're just attending or actually participating, can take up a fair amount of work and home time in preparation, during the conferences and the lead up time. Multiple that by 3 and you'll know that I've recently had a very busy time.

In all the excitement of attending such events, it can be easy to forget the "significant other parties" who make a pretty clear sacrifice to allow us to attend these events.

My partner said to me the other day that she felt like a "conference window" over the last few weeks, having looked after our baby daughter, kept the house running with the usual array of chores, and working part-time to boot. All of this without me around to lend much of a hand at all while I swanned around the world. As you can imagine, an ever-so-small-incy-wincy-tiny-bit of guilt invaded my conscious.

So here's a small public thanks to my partner, and all the other wives, husbands, boyfriends, girlfriends, family, children, friends and work colleagues, who kindly and patiently put up with all of us who follow the conference trail, who understand and support us while we pursue our passions and interests, who nod and humour us when we return and rant about the latest Oracle 11g feature, the future of Fusion Middleware, or how many free Toad shirts we scored this year.

Thank you very much.

At least until next year of course.

Why doesn't the Oracle RDBMS feature in the web space?

There was a recent post by Nati Shalom analyzing Why most large-scale web sites not written in Java based on a statistics from Pingdom on What nine of the world’s largest websites are running on.

Assuming the Pingdom analysis is correct, there is a glaring whole in the database technologies category used by major websites; Where is Oracle?

Geva Perry picked up on this in his post Where is Oracle?. There are a number of other follow up posts within the blogosphere, but unfortunately mostly have degenerated into personality clashes, protecting personal agendas and the usual large corporation bashing; you can follow the trail if you so desire.

But the question is still valid and seems to have passed the Oracle blogosphere by in the last few month possibly thanks to OOW (unless I missed it of course). Where is Oracle in the web space? Given that there is so much publicity about the Web 2.0 world and innovation making it an important market at the moment, why doesn't the Oracle RDBMS feature in that arena? Many of us claim that the Oracle RDBMS is a very sophisticated product, but why is the apparent market leader in RDBMS technology not adopted as the RDBMS of choice by web companies?

Maybe it's a question of ongoing cost. MySQL and the LAMP stack are free.

Maybe these web companies came from the "start-up" mold, were experimental to start with, and as such the reliance of free products from day 1 was imperative to get their products and services out the door?

Maybe it's a question of open source, and the ability to rewrite and debug the entire stack?

Maybe the Oracle RDBMS is overkill for the database requirements of most websites?

Or maybe the analysis is just plain wrong.

What's your opinion of why the Oracle RDBMS is missing?

Footnote: You'll note that there are some obvious missing web companies in the Pingdom analysis, including Google, Yahoo etc.

New Aussie Oracle database blogger

Yah, my 100th blog post! You just can't shut me up.

Talking about people you can't shut up, with Marcel Kratchovil this year I had the chance to meet Richard Foote from the Australian Capital Territory (you know, where Canberra the capital of Australia is) at OOW this year. Richard is an ex-ACT Oracle User Group President, is full of great DBA stories and good opinions to boot, and I note he had a number of people rapped at his OOW Unconference session on indexes.

Richard has decided to finally dive in as an Aussie Oracle blogger, with his new blog Richard Foote's Oracle Blog. While I'm not going to give Richard any points for an inspiring blog name (sorry Richard, with a surname like "Foote" you had so many great puns you could have gone with), I wish him all the luck in his new blog endeavours.

+1 to the Aussie team. 0 for the rest of the World.

Oracle blog aggregators

For the last few days it appears the Oracle blog aggregator www.orablogs.com has been down (or at least I can't connect?). This initiated a personal search for other aggregators, and I can't say I found that many, but thought I'd post the results and see if anybody has any feedback on aggregators they use instead.

Specifically to Oracle there are the following services:

  • www.orablogs.com - as mentioned above, currently appears to be down.
  • www.orafaq.com/aggregator - run by the OraFaq team.
  • orana.info - run by Eddie Awad.
Following my interests in all things Java, and branching across from Oracle into the JDeveloper and Java world's are the following services:
  • thepeninsulasedge.com/adfblog - run by Ric Smith at the Peninsula's Edge.
  • www.javablogs.com - much more a Java blog aggregator than an Oracle aggregator, but many of the JDev bloggers appear here.
Are there any other Oracle aggregators that you regularly use?

My top 8 JDeveloper technical blog entries

I'm in the process of moving houses, states and family in Australia so time is just a little limited at the moment. This presents a great time to post a little re-hash of my blog and the top technical JDeveloper blog entries as ranked by my web counter, giving new readers a chance to look at some of my older material:

  1. Using multiple faces-config.xml files in JSF
  2. Back to programming: Programmatic ADF Faces Tree component
  3. Some explicit language about implicit EL objects
  4. Don't constrain yourself: displaying alternative database constraint error messages with ADF BC
  5. Bah! What is JBO-35007?
  6. Handy JDeveloper utility: the Http Analyzer
  7. JDeveloper and the art of the rollback
  8. I rest my case: Converting ADF BC EO/VO attributes to upper and lower case with custom properties
Of all the articles definitely the multi faces-config.xml files page gets the most hits each day, mostly from Google searches.

Happy reading..... and I intend to start posting again once I've driven to the other side of this big brown country of ours.

Local Aussie Oracle related events

My family has made the big leap from Melbourne across this big brown country of ours to Perth. I had an excellent drive across the Nullarbor, one of the true beautiful desolate areas I've ever been. The Nullarbor is normally dry as a bone, but I crossed it during a long period of rain, with green everywhere (okay, it's still a brown-green), and fantastic sunrises and sunsets while dodging kangaroos and road-trains on the A1 highway. Oddly I even hit a snow storm in Victoria as I drove to South Australia, as well as huge amounts of rain from Coolgardie onwards in Western Australia.

Meanwhile the Oracle world moves on and there are a number of Oracle events happening in Australia that local readers may be interested in:

  • Oracle Fusion Middleware Forum - Oracle is running a number of Fusion Middleware events during August in Auckland, Sydney, Melbourne and Perth. Thomas Kurian will be one of the presenters in Sydney and Melbourne, and Roland Slee in Perth and Auckland. I'm not usually a fan of these Oracle events as they prove to be more marketing than technically useful, but if I was in Melbourne or Sydney I'd take the effort to see Thomas. I also note past and present AUSOUG presidents Dennis Remmer and Martin Power are also presenting. For those who want a no sales-fuss approach to presentations Dennis will meet your demands.
  • In an effort to support the local Western Australian Oracle User Group (AUSOUG), they are running with "Common Stuff-Ups & How to Avoid Them" presented by Penny Cookson (Oracle Educator of the Year 2004). Perth for its small size is blessed by a number of local Oracle talents including Connor McDonald an Oracle ACE and well known presenter at the UKOUG. Both Penny and Connor are known for their down to earth presentations and are very popular at conferences (both have won numerous presentation awards). If you haven't before check out Penny this August Wednesday 1st. (Disclaimer: I work for Penny at SAGE Computing Services - but it's my blog, so I can post what I like ;).
In the "I'm not as good as them" vein, I'd like to thank the South Australian Oracle User Group for allowing me to present "All you (ever) needed to know about Java" (the ever so slightly abbreviated version) for Oracle professionals as I was passing through. It was great to see Oracle professionals looking outside the (dare I say PL/SQL ;) box with an interest in what other technologies have to provide.

OTN and Development Licences part 73.2 -- a FAQ!

This is yet another blog post around the issues of Oracle's Development Licenses downloaded from OTN.... this time with some light at the end of the tunnel.

Thought some readers might be interested on Doug Burn's blog, Justin Kestelyn of OTN fame has made the comment "We [sic: Oracle] are in fact working on a plain-English Developer Licensing FAQ".

This is nice to see, particularly with all the confusion based around the OTN development licenses.... and once again shows Oracle is listening.

(And well timed as if I read one more discussion about someone giving their interpretation of the licenses with the disclaimer "but I'm no lawyer" .... I'm going to scream! ;) -- or at least employee a lawyer)

I think many of us will be waiting keenly for this. I hope Justin and Oracle will take suggestions like Doug's on board before publishing the FAQ (not necessarily about licenses conditions but rather what should be in the FAQ).

4 things I read more recently

Yet another 4 things I read more recently that you may be interested in:

  • Comparing the GlassFish and OC4J Admin Consoles - I haven't had much time to look at other J2EE server consoles in comparison to Oracle's OC4J console. Jason Lee puts together a good summary of the consoles for these 2 popular products. Worth a read to see if the grass is greener....
  • The grass isn't greener on the other side - talking about the green grass of yonder, there seems to be a large amount of negativity about the Java platform. Is the grass oh so greener on the .Net side? Cay Horstmann has a look at a few .Net woes.
  • Is .NET or Java dying? - James Crisp undertakes a comparison of the .Net vs Java vs RoR job market, including some information from an Australian perspective.
  • Developer Ramp up time - as a developer-consultant I've always taken the head-first approach into new work. Partially it's from the perspective of saving clients money, but more for the reason I just get bored waiting around for some organisations to get their act together to give me what I need to do my job. Such an approach apparently isn't the forte of everyone though. Derik Whittaker discusses his thoughts on why some developers ramp up faster than others on new projects.

JDev 11g new features - ADF BC Entity Object Validation Rules part 1 of 3

JDeveloper 10.1.3 saw the introduction of "Validators," a declarative approach to defining business rules and error messages against Entity Objects (EOs) within ADF Business Components (ADF BC). The declarative approach saves much coding and uses a well tested framework over writing custom validation code.

Documentation on this can be found within the Oracle Application Development Framework Developer’s Guide For Forms/4GL Developers under the section 6.7 Using Declarative Validation Rules.

The JDeveloper 11g Technical Preview (TP) edition introduces extended functionality which can be categorised under the tabs they exist within the Add Validation Rule dialog. This post specifically looks at the Rule Definition tab within the dialog. Refer to the above documentation on how to invoke the dialog.

The following validator types have been introduced in JDev 11g:

Collection Validator - this is a good addition but maybe poorly named validator - possibly Group By Validator or Aggregate Validator would be a better name. What it allows you to do is compute an aggregate value on an attribute in the current EO using an aggregate function such as Sum, Count, Average, Min or Max. The result can then be compared against a Literal, Query Result and so on like the Compare Validator.

How is this useful? Imagine a scenario where you have a business rule that says a training event shall only be stored in the database if there are 4 or more bookings. Creating a Collection Validator we can Count the number of bookings when the event is saved, and raise an appropriate error message if necessary if the bookings is less than 4.

Keys Exist Validator - in 10.1.3, it was possible for the user to change a FK child attribute (or in other words a detail attribute involved as an EO Accessor between two EOs) to an invalid value without the error being picked up until the data change hit the database and the FK constraint was violated. In 11g the declarative Keys Exist Validator allows us to check that the new attribute actually exists in another EO, or even VO, thus allowing us to validate FK values before they hit the database.

Expression Validator - provides validation of the EO against a Groovy expression. For more information read Steve Muench's post on Groovy Scripting Tips for ADF Business Components.

Within the existing validators the following changes and additional functionality have been added in JDev 11g:

Compare Validator - on selecting the Compare With field for a Compare Validator, there are now 3 new options: View Accessor Attribute, Expression and Entity Attribute. I'm unsure what the first option does, but the 2nd allows you to create a compare rule based on a Groovy expression, and the 3rd a comparison of the current attribute to any other attribute of the same datatype within the same EO.

List Validator - the Compare With field also introduces the new option View Accessor Attribute.

Length Validator - now allows the "Between" operator giving a minimum and maximum value constraint on the current attribute's length.

Regular Expression Validator - introduces the ability to select Predefined Expression such as email addresses and US phone numbers, as well as adding your own (this feature doesn't appear to work in the TP release just yet).

Unique Key Validator - has changed somewhat and now allows you to define validation on primary and unique keys defined for the EO (indirectly derived from the underlying table). In addition you may define multiple Unique Key Validators against the one EO where the 10.1.3 release limited this to one.

In summary the 10.1.3 release introduced the basic declarative validators against Entity Objects in ADF Business Components. Within the 11g release this has given the JDeveloper team the opportunity to go beyond the obvious validation requirements and give sophisticated declarative business rule validation still with the advantage of minimal to no coding required.

Part 2 and part 3 of this post will look at the other tabs within the Add Validation Rule dialog, namely Condition Execution and Failure Handling respectively.

Disclaimer: this post is written against the JDeveloper 11g Technical Preview (pre-production) edition. Oracle reserves the rights to remove or change this functionality in the final release so ensure to check your facts if you're using a later version when reading this post.

JDev 11g new features - ADF BC Entity Object Validation Rules part 2 of 3

This is the 2nd post in a 3 part series on the new Entity Object (EO) Validation Rule facilities in ADF Business Components (ADF BC) within the JDeveloper 11g Technical Preview edition. The previous post can be found here, and part 3 here.

The JDeveloper 11g Technical Preview (TP) edition introduces extended functionality which can be categorised under the tabs they exist within the Add Validation Rule dialog. This post specifically looks at the Validation Execution tab within the dialog:

The Validation Execution tab is an entirely new tab since the 10.1.3 release and provides the following new functionality:

Validation Level - under the 10.1.3 release validation was always fired at entity level and immediately. This was an issue if the user had yet to complete work in order to satisfy the business rule. Under 11g, if creating the validation rule at the EO level the Validation Option is available, and validation can be set to fire at entity level or when the transaction is committed. This provides the same sort of functionality and advantages as transactional deferred constraints in the Oracle RDBMS.

Conditional Execution - a Groovy expression may be added to the validation rule that when true enforces the validation rule. As mentioned in the previous post Steve Muench has posted on this under his article Groovy Scripting Tips for ADF Business Components.

Triggering Attributes - if the validation rule is defined at the EO level, one or more attributes can be selected, and if any of the selected attributes' values are changed the validation rule will fire. If the validation rule is created at an attribute level rather than EO level, this option does not appear but rather only the single selected attribute is assumed to be defined against the rule.

Available for Real Time Client Execution - this option is only available for validation rules that are defined against an EO attribute, not for validation rules at the EO level. At this stage I'm sketchy on what this feature does, but I'm guessing it indicates to ADF Faces Rich Client components that it is fine to implement and fire this validation within Javascript on the client side. This will have the advantage of saving a round trip to the mid-tier, with the disadvantage of performance loss on the client.

In summary the 10.1.3 release provided little declarative control over when a validation rule should fire. Within the 11g release the developer now has the ability to be very specific under which conditions a validation rule should enforce its business rules, giving a sophisticated declarative approach to business rule programming with little to no coding required.

Part 3 of this post will look at the final tab within the Add Validation Rule dialog, namely Failure Handling.

Disclaimer: this post is written against the JDeveloper 11g Technical Preview (pre-production) edition. Oracle reserves the rights to remove or change this functionality in the final release so ensure to check your facts if you're using a later version when reading this post.

JDev 11g new features - ADF BC Entity Object Validation Rules part 3 of 3

This is the 3rd and final post in a 3 part series on the new Entity Object (EO) Validation Rule facilities in ADF Business Components (ADF BC) within the JDeveloper 11g Technical Preview edition. Follow these links for the previous posts part 1 and part 2.

The JDeveloper 11g Technical Preview (TP) edition introduces extended functionality which can be categorised under the tabs they exist within the Add Validation Rule dialog. This post specifically looks at the Failure Handling tab within the dialog:

The Failure Handling tab is an entirely new tab in the 11g TP release and provides the following functionality:

Validation Failure Severity - errors are now categorised into errors and warnings. An "error" based validation rule if invalidated will display the corresponding error message and will not save the changes until the issue is fixed. Alternatively "warning" based validation rules will fire on exactly the same conditions, but if the validation rule condition is true, while an error message is still displayed, the transaction will not be halted. This provides a nice mechanism to give users informational messages about problems in the data they entered, but not stopping them from saving their work just in case the user knows more than the business rule assumes.

Message Text - this field allows the entering of an error message including positional message expressions (see below). This is similar to the 10.1.3 functionality of entering an error message to display when the validation rule is invalidated. However in the 11g release via the new Select Message button, you may in the associated dialog select an error message out of an existing message bundle file, or even create a new message bundle file. Of particular use this allows you to reuse existing messages defined once in a single message bundle, unlike the 10.1.3 release where error messages where stored in separate MsgBundle class files for each EO.

Error Message Expressions - error messages may include positional fields to be substituted when the error messages is displayed at runtime to make the message more meaningful to the user. The positional fields take the form {n} within the error message where n is a sequential unique number within the error message. The Error Message Expressions option is populated with rows as you enter new substitution variables in your message. The value for the message to be displayed at runtime is defined by a Groovy expression.

Note: the use of positional fields in error messages was supported in 10.1.3, but the dialog did not include this level of sophistication for specifying the fields nor adding Groovy expressions.

In summary within the 10.1.3 release the error messages associated with validation rules was a simple text message. In the 11g release the developer now has the declarative ability to easily parameterise error messages from a single standard message bundle with no coding required.

In summary to the 3 part post, the declarative approach adopted in the EO validators in JDeveloper 10.1.3 and expanded upon in the JDeveloper 11g Technical Preview release, within software development saves much complex coding and uses a tested framework over writing custom validation code that may be error prone (no pun intended). However if necessary the programmer still has the flexibility to drop back to code and write whatever functionality if deemed necessary.

Disclaimer: this post is written against the JDeveloper 11g Technical Preview (pre-production) edition. Oracle reserves the rights to remove or change this functionality in the final release so ensure to check your facts if you're using a later version when reading this post

Other 11g news: The little SQL Developer editor that could

The new 11g release of the RDBMS has brought an interesting array of new features for database administrators and developers, including new tuning features, revisions to SQL and PL/SQL and the inclusion of the latest version of Oracle Application Express (APEX).

One additional inclusion in the 11g release that hasn't received much press is the inclusion of SQL Developer in the default RDBMS install package. As of the 11g release SQL Developer v1.1.3 is now included by default.

This brings up an interesting point. SQL*Plus for many years has been a dominant SQL editor for the Oracle RDBMS for the fact that it's a common dominator on all Oracle installs. Guaranteed between Oracle sites, you can ensure SQL*Plus is installed. I often make this point to students when teaching SQL why SQL*Plus is preferred.

So it's now possible with the inclusion of SQL Developer we may see a gradual change in SQL*Plus's dominance given that SQL Developer will be readily available for use on all installs. You never know, you might even see hardcore DBAs using it ;)

Oh, and before the SQL*Plus lovers jump on my back, I'm not advocating SQL*Plus's replacement, that one tool is better than another, that SQL Developer should be used in a production environment, just the fact above. It's nearly the weekend here. Who needs another flame war?

Thanks to Sue Harper for the heads up & confirmation on this factoid from this OTN Forum post.

How to run a successful panel session at a conference?

Well it's that time of year again where I need to prepare for the Australian Oracle User Group (AUSOUG) conference series. This year I've the opportunity to run a panel session at the conference in November along with another presentation.

Having never run such a panel session before, I was hoping readers who have participated or attended a panel session could give advice on the following please?:

1) What to prepare for?
2) How to run the actual panel session?
3) What makes for a successful panel session?
4) What makes for a panel session disaster?
5) Is there any equipment that is essential?

I guess there is the obvious stuff like organising your panel members, and making sure they turn up, but I'm sure there's more others could suggest beyond the basics.

Any help and advice appreciated. Please leave comments in the blogs comments section and I'll publish them.

4 things I read more recently (about Java)

This is a my usual regular post on links around the web I've been reading, this time posts specifically related to Java that may interest those in the Oracle Java and JDeveloper arenas:

  • Get to know Java EE 5 - the last few months has seen the publication of some good "new features" Java posts, including this one from Roland Barcia at IBM that specifically looks at JEE. Articles like these are good for those who don't have time to read the huge array of publications but would like to keep up to date in a concise form. Obviously being from IBM this article has a Websphere focus but looking further afield to see what others are doing can provide some valuable information.
  • Java EE 6 wishlist part 2 and part 3 - the wheel never stops turning and JSR 316 has been approved for the development of JEE 6.0 specification. Already the Hibernate Team have jumped forwards for suggestions on improvements and issues to be addressed from J2EE 5.0 and earlier. These discussions I find interesting because I find my learning of JEE is fairly boxed in by the Oracle world and others sources can provide useful insight into what needs to be improved in the technology I use -- either that or I just like reading stuff and not doing any work. I linked to part 1 in a previous post.
  • Why do people insist on doing EVERYTHING in Java? - I've encountered sites where I have to ask why are we using Java? -- where the only serious answer seems to be we're using Java because Java is Java. Huh? Anyway, Gregory Pierce has started a bit of a barney on why some sites insist on doing all development in Java. Your opinions may vary.....
  • JUGs Offer More Than Free Pizza - okay, Jason Lee's post here could equally apply to any technical user group including Oracle User Groups. Given my own background as an Oracle Ace Director which was greatly facilitated by my committee participation in the Australian Oracle User Group, Jason's words ring true here for me, Java User Group or not. Forget all that Web 2.0 social website belavar, head out to your local user group meeting and meet some real people.

Yet another OOW Connect card

Well I haven't been to a conference before where you can actually meet and talk to delegates before you get there. Having worked on a number of conferences down-under the OOW Connect facility is impressive stuff.

Anyway, for reference, my OOW Connect card with charming mug-shot :)

Join Me at Oracle OpenWorld Connect!

Anybody interested in starting a JDeveloper OOW Connect group?

JDeveloper documented "Recommendations"

Wednesday, August 29

JDeveloper documented "Recommendations"

I've been sitting on this post for a long time, 4 months in fact, as a back up post in case I'm too busy to write anything new. The next few weeks are such a time and it's about time I published this post before the imminent release of JDeveloper 11g Gold! (not that I know anything, but I'd be placing my bets on a November release date)

Oracle's JDeveloper team has to be commended for the large leap in the quality and breadth of documentation from the 10.1.2 to 10.1.3 releases, with the introduction of the ADF Developers' guides. In my opinion the effect of this has been noticeable on the JDev OTN forum where beginner questions have become thinner on the ground, possibly thanks to RTFM.

Of course now with so much documentation -- one such guide is over 1000 pages -- there is an awful lot to digest. Unfortunately within such a large set of documentation, Oracle's "JDeveloper Recommendations" and best practices can be lost or forgotten.

I recently took time out to search within Oracle's JDeveloper 10g provided documentation for any JDeveloper and ADF BC/Faces recommendations that they thought necessary to document. I provide a summary of the recommendations below to assist your JDeveloper experience, may it be a good one ;)

The mileage you experience from each recommendation may vary. Some are trivial, others encompass the whole development cycle.

Disclaimer: please note this is not a definitive list of recommendations, just my own summary. You should persist in regularly reading white papers, blogs and attending Oracle related conferences to keep up with the latest recommendations. If I've missed any of the recommendations you think crucial in the JDev documentation, let me know via a comment with appropriate links, and I'll update this blog. Also take time out to read the original quote in context of the actual JDev documentation by following the links.

Copyright disclaimer: the following quotes are all sourced from Oracle's own documentation and as such please respect their copyright if you source this page and acknowledge their efforts appropriately if you reference a section.

Final comment and appreciation: Thanks to Victoria Lira for her assistance in getting this post finally published.

JDeveloper recommendations
....(from the Oracle documentation set)

JDeveloper migration

Migrating Projects from Pre-Oracle9i Releases - Direct migration from pre-Oracle9i releases to Oracle JDeveloper 10g is not certified. We recommend that you first migrate to release 9.0.x (see the 9.0.x documentation), and then proceed from there.

Migrating System Settings to Oracle JDeveloper 10g - Select the settings and customizations you want to migrate. We recommend selecting all available options.

Projects

Working with Large Projects - It is strongly recommend to use ANT for such tasks as building and deploying.

ADF Business Components

Introducing Oracle ADF Business Components - In addition, if you are an Oracle Forms user, we recommend reading the following topic: About Oracle ADF Business Components: An Oracle Forms Developer's Perspective

Working with ADF Business Components in the Model Project - If you are comfortable with UML modelling, we recommend selecting Business Components Diagram, which provides a graphical interface for designing your business components. You can drag tables onto this diagram to create business domain components. For more information, see the Related Topics list.

ADF BC Application Modules

Accessing a Root - Level Application Module From an Entity Object - You can access a root-level application module directly from an entity object if the entity object is hosted by the application module. Generally speaking, this is not the recommend approach, as your entity object will only work with that particular application module. You might want to do this, for example, if you need to create rows of a view and insert new records in an entity object's doDML() method.

Creating a Package of Data Model Components - We recommend using packages to separate your data model components (view objects, view links, and application modules) from your business domain components (entity objects, associations, and domains). This allows you to reuse your business domain components with multiple sets of data model components. For more information, see the related topics list.

About Oracle ADF Business Components Packages - We recommend putting business domain components (entity objects and associations) in a separate package from data model components (view objects, view links, and application modules). This allows you to reuse your business domain components with multiple sets of data model components.

ADF BC View Objects

Understanding the Default View Link Consistency Setting and How to Change It
- Conversely, you could globally enable this feature by setting jbo.viewlink.consistent to the value true, but Oracle does not recommend doing this. Doing so would force view link consistency to be set on for view objects with secondary entity usages that are not marked as a reference which presently do not support the view link consistency feature well.

Efficiently Scrolling Through Large Result Sets Using Range Paging - As a general rule, for highest performance, Oracle recommends building your application in a way that avoids giving the end-user the opportunity to scroll through very large query results. To enforce this recommendation, call the getEstimatedRowCount() method on a view object to determine how many rows would be returned the user's query before actually executing the query and allowing the user to proceed. If the estimated row count is unreasonably large, your application can demand that the end-user provide additional search criteria.

Consider Whether Fetching One Row at a Time is Appropriate - Caution - Unless your query really fetches just one row, leaving the default fetch size of one (1) in the in Batches of field on the Tuning panel is a recipe for bad performance due to many unnecessary round trips between the application server and the database. Oracle strongly recommends considering the appropriate value for each view object's fetch size.

How a RowMatch Affects Rows Fetched from the Database - Oracle recommends using database-level filtering to retrieve the smallest-possible rowset first, and then using RowMatch as appropriate to subset that list in memory

Creating a Calculated Attribute at the View Object Level - Ensure View Row Class > Generate Java File and Generate Accessors are selected. We recommend selecting Ex pose Accessors to the Client as well.

Adding a View Link Instance with a New View Object Attribute - Based Definition at Runtime - Note: This is the most flexible, but the most complex, way to create view link instances dynamically. If you have a view link definition or association that might be appropriate, we recommend that you use another method. For more information, see the related topics list.

Using Parameterized WHERE Clauses - In the Where field, enter a WHERE clause using parameters. Do not include the word "WHERE". Unless you are running against a non-Oracle database, we suggest you use Oracle-style parameters: ORDER_TOTAL > :1 + :2

ADF BC Runtime Properties

Oracle ADF Business Components System Properties # 1 - jbo.locking.mode - Note: In the case of session-oriented programs, such as web applications, it is recommended that the Oracle ADF Business Components property jbo.locking.mode should be set to optimistic unless you also set the RELEASE_MODE property to Reserved. Pessimistic locking is not compatible with Stateful or Stateless modes because the database transaction is always rolled back to allow the connection to be reused by another user. This results in the lock being released and makes pessimistic locking unusable. If you want to use pessimistic locking, you must set RELEASE_MODE to Reserved.

* and *

jbo.maxpoolcookieage - The maximum age of the browser cookies used to help clients retrieve stateful application modules. If these cookies do not time out, the value is -1. It is recommended that the max cookie age is always set less than or equal to the session cookie age. It is set that way by default (both are -1). If you change the the max cookie age then you must also change the session cookie age to the same value.

ADF BC Java stack

oracle.jbo.server.EntityCacheOverRowSet jdoc - getRow - use instead findByKey() for larger datasets

Note this discussion is repeated in:

oracle.jbo.common.ws.WSObject
oracle.jbo.client.remote.ViewUsageImpl
oracle.jbo.RowIterator
oracle.adf.model.generic.DCRowSetIteratorImpl

oracle.jbo.CSMessageBundle - In general, we recommend using EXC_INVALID_PARAMETER instead of EXC_INVALID_PARAM_NO_EXPL_GIVEN.

ADF Faces

The ADF Faces Dialog Framework - Note that we've also set "partialSubmit" on the commandButton to "true"; we highly recommend using this option on buttons that launch dialogs, as it avoids an otherwise unnecessary flash of the main page as the dialog is launched.

Configuring ADF Faces for Performance - In adf-faces-config.xml.....

When configuring ADF Faces for deployment, it is most critical that debug options have been turned off. Specifically: <> should be removed or set to false. oracle.adf.view.faces.CHECK_FILE_MODIFICATION should be removed or set to false. oracle.adf.view.faces.DEBUG_JAVASCRIPT should be removed or set to false.

* and *

The <> will show "You're in an English locale" if the locale's language is English. This means that in English, a user's version of the page will have an extra component over users who aren't using English; the state will vary accordingly. This sort of problem can cleanly be resolved by using "rendered" instead of <> , which is always a recommended JSF best-practice:

ADF Faces Page Definitions

What You May Need to Know About Binding to Values in Other Pages - While Oracle does not recommend this approach, you can access the bound values in another page's binding container from the current page using the data binding variable in an EL expression. The data binding variable references the binding context itself, which provides access to all the binding containers that are available. Use this variable when you want to bind to an object in the binding container of another page. The data variable must be immediately followed by the name of a page definition file that defines the binding container being referenced. For example: #{data.mypagePageDef.BindingObject.propertyName}

*and*

You may find cases, where you need to use the data variable to bind to values across binding containers. However, Oracle recommends that instead you use a backing bean to store page values and make them available to other pages. For more information about storing values in backing beans, see Using a Managed Bean to Store Information.

ADF Faces Components


+ oracle.adf.view.faces.component.core.CoreSubForm

We strongly recommend the use of a single <> per page, and using <> where you might otherwise be tempted to use multiple forms. Multiple forms require multiple copies of page state, and user edits in forms that aren't submitted are always lost. When a page using subforms is submitted, page state is only written once, and all user edits are preserved

ADF Faces Support Platforms

About ADF Faces Supported Platforms - Tip: On a UNIX server box, button images may not render as expected. Assuming you're using JDK 1.4 or later, we strongly recommend using -Djava.awt.headless=true as a command-line option with UNIX boxes.

CVS

About CVS and JDeveloper - We strongly recommend that you read the CVS Manual ("Version Management with CVS" by Per Cederqvist et al), which is freely available from www.cvshome.org

Note. Even if you know how to use existing checked out modules with JDeveloper CVS version control, you should not do so. We strongly recommend that you instead perform fresh checkouts from within JDeveloper.

Configuring JDeveloper for CVS - If you wish to use an external CVS client, we recommend the following: CVSNT 2.0.58a for Windows platforms - http://www.cvsnt.org/archive cvshome's CVS 1.11.9 for other platforms



AUSOUG Conference 2007 presentations accepted

For the local Aussie readers, I'm excited to announce my presentation has been accepted for the 2007 AUSOUG conference in Melbourne and Perth both in November.

In order to drum up an audience that doesn't just include my Mum, here's some details of my presentation. I hope to see you at the conference.

Take a load off! Load testing your Oracle Apex or JDeveloper web applications

"Geeeez, after demanding you unit test, system test, black box test, white box test, test-test-test everything, your manager is now demanding you load and stress test your brand spanking new Oracle web application. How on earth can you do this? .... and stop your manager from nagging?

This technical presentation will explain the concepts behind preparing for load and stress testing, the Http protocol's request/response model, and live demonstrations using Oracle's Http Analyzer and Apache's JMeter to stress test your Oracle web application.

The presentation is suitable for anybody, be it DBAs or developers, who are concerned about the performance of any web based application, possibly an Apex or JDeveloper or 3rd party web application. Knowledge of Apex or JDeveloper is not mandatory for this presentation and will not be covered in any depth

SQL Developer Hotkeys

I've recently had some spare time to start writing training notes for a Oracle SQL Developer course here in Australia for my company SAGE Computing Services. While SQL Developer in its infancy contained few features compared to Quest's Toad, today as new revisions come along it's developing quite a varied set of features that are making it a tool of choice for many sites (not to mention it's free).

In writing the training material I've collated all SQL Developer's hotkeys into one document which I share with you here. You can of course determine these for yourself by visiting the Tools -> Preferences -> Accelerator menu options, but this collated document should save you the hassle of reading through all the different options.

Happy SQL Developer-ing!

Drowning in Oracle blog aggregators

Have you ever wanted to merge all the separate Oracle RSS aggregators into one, and subscribe to the merged feed?

Lazytom's FeedJumbler provides such a service, where you can list a number of RSS feeds, and FeedJumbler will publish a single RSS/Atom which you may subscribe to instead.

This has been a godsend for myself, having nearly drowned in Oracle aggregator feeds more recently. The FeedJumbler site feed makes it very easy to see duplicate entries and only read what I need to.

Now, if I could only find another RSS service that eliminates duplicates from a feed, I'll have 100% perfection.

What features would you like to see in PL/SQL?

Every day I read posts that start "I was going to blog about X but Y beat me to it". It looks like it's my turn. I've been sitting on a post for improvements I'd like to see to PL/SQL, and it turns out Steven Feuerstein has set up a site to capture PL/SQL improvements we'd all like to see. Dag-nab-it!

Anyway, the gist of my original post follows, slightly rewritten to make it look like I didn't think of the idea first ;)

With the arrival of Oracle 11g we see a new set of features for PL/SQL. PL/SQL from my point of view has always been the ideal procedural language for the Oracle database, as many years ago I programmed with Ada which was the basis for PL/SQL syntax so I didn't have to learn a new language from scratch, I find the syntax very easy and clear to work with, and a breeze to teach (compared to Java for instance).

From experience, my positive outlook on PL/SQL is shared by a number of Oracle experts out there, with the main comment being "PL/SQL does what it needs to do." In other words it's a very mature language.

This doesn't mean that we shouldn't drive for further innovation in the PL/SQL language though, as there are many features in other languages that could make our PL/SQL programming experience more rewarding. If you look at the Java camp, committees upon committees, and blog entries upon blog entries are dedicated to improvements in the language for the next version. I can't say I've seen the same for PL/SQL, so Steve's initiative here is a good one.

So what improvements would you like to see in PL/SQL?

To start ball rolling, I'll suggest a couple and will post onto Steve's site:

1) I miss the ternary operator from other languages such as Java. The ternary operator takes the form:

() ? : ;

So for a trivial example from Java:

boolean b = (1 <>

The ternary operator is really a short hand CASE or IF-ELSE-END IF statement. The power of the ternary operator is it supports expressions within each component, and expressions within expressions and so on. However the ternary operator is also responsible for some evil looking code because of this ability, so definitely it has its pros and cons.

2) To retrieve a sequence number in PL/SQL, you need to wrap this in an implicit SELECT-INTO statement or similar. What I really want to do is the following short-hand:

v_number := my_seq.nextval;

(and thanks to Justin Cave's response to my question on OTN, turns out this is available in 11g, as published in this AskTom article under the section "It's the little things". Neat!)

3) Assertions are a common feature in many languages beyond simple exception handling. They allow you to test a condition, and if it fails, stop the program. They are ideal for debugging programs because you can (for example) place the assertions at the beginning of each PL/SQL module to ensure incoming parameters are not null.

So what features would you like to see in PL/SQL? Why not head over to Steve Feuerstein's site and record your thoughts.