3000 Developers!: Kaleidoscope ’09 Report II

Last week, I talked a bit about the two talks I saw at ODTUG Kaleidoscope 2009 on Monday, Lucas Jellema‘s “That’s Rich! Putting a smile on ADF Faces,” and Duncan Mills‘ “Fusion Design Fundamentals.” My focus was the debate about whether and when to use custom Javascript and ADF Faces RC client-side objects. But both talks had a lot of interesting information outside the debate. In this post, I’m going to talk about Duncan’s account of the ADF methodology used by the team  at Oracle responsible for Oracle Fusion Applications–a massive rewrite of Oracle’s business applications based on ADF with the Fusion stack (that is, ADF all the way from bottom to top: business components, model, task flows, Faces RC). This team is is especially notable for its size–3000 developers–which makes a proper methodology even more critical than usual. Next week, I’m going to go into more specific detail about the client-side programming tips Lucas demonstrated.

Continue reading 3000 Developers!: Kaleidoscope ’09 Report II

Vote for my Oracle OpenWorld Presentation on Oracle Mix

So, I submitted a presentation, “The Rich Get Richer: Ultimate RIA with Oracle ADF Faces RC Client-Side Objects” to Oracle OpenWorld 2009, in San Francisco this October. The presentation is about performing tasks that usually require a partial round-trip, such as cascading dropdowns, conditionally visible content, etc., with no server round-trip at all. I talk a bit about this, on a very theoretical level, here (in the section, “Consider a Javascript-Only Solution,”) but I plan to go into considerably more detail, giving practical examples and advice, in the presentation.

The presentation did not make the cut of abstracts selected by Oracle. But if you want to see it at OOW, there’s still a chance! Just vote for the presentation on Oracle Mix (you’ll need to create an Oracle Mix account if you don’t already have one, but it’s free and a good way to meet people in the ADF community).

See you at ODTUG and/or OOW!

ADF BC Tuning IV: View Objects, Part 2

Continuing on from the last post, we’re looking at ways to tune ADF view objects for optimal performance and resource management.

Forward-Only Mode

In most applications, the user needs to be able to scroll through data both forwards and backwards–to return to a previous row in addition to simply being able to scroll forward, or to find rows an earlier view row after finding a later one. Because of this, by default, once rows from a view object’s query result are read into the view cache, they stay there. If your JDBC fetch size is 18, then initially, only 18 rows will be in the view cache, but when request rows outside the first 18, that number goes up to 36, then 54, then 72, and so on.

Continue reading ADF BC Tuning IV: View Objects, Part 2

ADF BC Tuning III: View Objects, Part 1

Now that we’ve looked at tuning entity objects and associations, we’ll turn to talking about tuning your ADF view objects for good performance and memory management. There’s a lot to say about tuning view objects (more than for any other business component, in my opinion), so I’m going to break this topic up over two posts. This week, we’ll discover the reasons for and against basing read-only view objects on entity objects, learn how to control how much data is fetched into the middle tier at one time (and how to optimize this for your particular case), and talk about what passivation of view objects is and how to control whether and how much of it happens. Next week, we’ll talk about query-level range paging, forward-only mode, and the spill-to-disk feature for handling very large caches.

Continue reading ADF BC Tuning III: View Objects, Part 1

The Power of Properties II: The View Object

Hey, did you know that, even if you create a “Programmatic View Object” (rows populated programmatically, not based on a query), you can set “bind variables” for it? Neither did I until very recently. You can’t do it in the Create View Object wizard (because the Query page never appears), but once you’ve got that VO, you can indeed add bind variables in the editor.

“Why on earth would you want to do that?” you ask (or, at least, I imagine you asking). “Bind variables are meant to allow the application or user to specify bind parameters for a query, and a programmatic VO doesn’t have a query.” Indeed, that’s what bind variables are usually for, but here, I’m going to show you, at least in outline, how to use this feature to make the ultimate 100% declaratively customizable framework classes (one view object class, one view definition class) for view object definitions based on REF cursors (i.e., whose instances will call a package function to retrieve their row set, rather than execute a query).

Continue reading The Power of Properties II: The View Object