Monday Oct 01, 2012

Another big year for the ADF EMG at OOW12

Oracle Open World 2012 has only just started, but in one way it's just finished!  All the ADF EMG's OOW content is over for another year!

The unique highlight this year for me was the first ever ADF EMG social night held on Saturday, where I finally had the chance to meet so many ADF community members who I've known over the internet, but never met in person.  What?  You didn't get an invite?  Oh well, better luck next year ;-)


Seriously our budget was limited, so in the happy-dictatorship sort of way I had to limit RSVPs to just 40 people.  Hopefully next year we can do something bigger and better for the wider community.

Following directly on from the Saturday social night the ADF EMG ran a full day of sessions at the user group Sunday.  I wont go over the content again, but to say thank you very much to all our presenters and helpers, including Gert Poel, Pitier Gillis, Aino Andriessen, Simon Haslam, Ken Mizuta, Lucas Jellema and the FMW roadshow team, Ronald van Luttikhuizen, Guido Schmutz, Luc Bors, Aino Andriessen and Lonneke Dikmans.

Also special thanks must go to Doug Cockroft and Bambi Price for their time and effort in organizing the ADF EMG room behind the scenes via the APOUC. To be blunt Doug and Bambi really do deserve serious thanks because they had to wear a lot of Oracle politics behind the scenes to get the rooms organized (oh, and deal with me fretting too! ;-).

Finally thanks to all the members and OOW delegates for turning up and supporting the group on the day.  In the end the ADF EMG exists for you, and I hope you found it worthwhile.

Onto 2013 (oh, and the rest of OOW12 ;-) 

Announcing the ADF Architecture Square at OOW12

The ADF product management team are happy to announce at Oracle Open World the publication of the ADF Architecture Square:

Over the last number of years Oracle has recognized that many customers have matured their ADF skills and are now looking for information on advanced concepts beyond the how-do-I-get-this-poplist-to-work type questions.  In order to satisfy this demand we've devised the ADF Architecture Square where papers, presentations and demos will consider such broad software engineering concepts as ADF architecture, development and testing, building and deployment, and infrastructure.  

If you have a look at the site right now it's a rather modest affair, but we hope to continue to expand the content to give further guidance and information to help shortcut your ADF project needs.  Either watch the website or follow our dedicated @adfarchsquare twitter feed.

Thursday Sep 13, 2012

Perth's ADF Community Event now an open invite

Yesterday saw the next ADF Community Event in Perth, and as promised we grew from 15 to 25 attendees (which is going to cause a bit of a problem soon if we keep growing as we're going to run out of powerpoints for laptops).

This bimonthly enjoyed presentations from Matthew Carrigy from the Dept of Finance WA on the ADF UI Shell, a small presentation from me about how Fusion Apps uses ADF, and a hands on based on programatically extending ADF BC to call external web services.  For Matt, his first presentation to a user group, with two live demos, all kudos to him for making it look smooth (for the record I hate live demos, I always break something) - thank you Matt!

We've already lined up our speakers for the next event in November, and will be inviting yet more customers to this event.  However the event will now move to an open invite, so if you'd like your staff to attend please let me know by emailing chris DOT muir AT oracle DOT com.

Alternatively I've had a fair few requests now for an "Intro to ADF" 1 day session so I'll consider this soon.  Certainly if you're interested let me know as this will help organize the event earlier rather than later. 

The biggest ADF conference "down under"

While Oracle Open World is the place to be for ADF presentations, for Aussies living in Perth, San Francisco is a tad far away (believe me from experience, the 23hrs flight from PER-SYD-SFO is tedious).  That's why I'm very excited to see that the Australian Oracle User Group at this year's Perth conference is running its largest set of ADF presentation to date: 5!

Okay, it doesn't compare to the 60 ADF sessions at OOW, but it's a small conference of around 300 people that runs for 2 days with 54 sessions total, not 40000 people that runs for 5 days with 1900+ sessions, so I think that's a good effort for a conference that's at the end of the earth!

What's even better about this year's conference, is the AUSOUG conference is moving away from just consultants and Oracle staff presenting, but will also include customers presenting on ADF too.  This again proves Perth is a little ADF hotspot, which puts a tear to an ADF product manager's eye let me tell you ;-)

The ADF sessions will include:

  • Kevin Payne - JWH Group - ADF Mobile Application Development
  • Matthew Carrigy - Department of Finance Western Australia - The times, they are a-changin’ - An Oracle Forms to JDeveloper ADF  Case Study
  • Penny Cookson & Chris Noonan - Sage Computing Services - Impress your bosses with JDeveloper ADF dashboards on their iPads

...oh and...

  • Chris Muir - Oracle Corporation - Speed-Dating Oracle JDeveloper 12c and Oracle ADF New Features 
  • Chris Muir - Oracle Corporation - Develop Mobile Apps for Smart Devices: Converging Web and Native Applications

You can check out the conference schedule here.  I hope you'll support these ADF presenters by attending the AUSOUG Perth conference, I look forward to seeing you there.

ADF is YouTubed

A blog post along the lines of "your wishes are our command".


ADF developers are hopefully aware of our ADF Insider Essentials recordings, a page full of presentations from small to large topics on all-things-ADF.  A couple of customers have pointed out these recordings aren't accessible via the iPad and other Apple OSX devices thanks to the recordings being wrapped in an Adobe Flash applet.

To satisfy this need we've now uploaded all of the videos as MP4s to our ADF Insider Essentials YouTube channel for your iPad viewing pleasure.  So now regardless if you're sitting at your PC or on the couch with your iPad, you can enjoy my horrible Aussie accent amongst the more professional ADF presentations from my colleagues ;-)

Make sure to subscribe to the YouTube channel to receive notifications of newly uploaded content. 

Thursday Aug 23, 2012

The Year After the Year of the ADF Developer - the ADF EMG at OOW 2012

I'm happy to announce that the ADF EMG will be continuing on from its success in 2011, and will be running "The Year After the Year of the ADF Developer" at Oracle Open World 2012

On the user group Sunday 30th of September the ADF EMG has a full day of sessions for anybody interested in ADF.  The collective sessions are designed to have something for everyone, ADF beginners, ADF experts, all.  All sessions will be held in Moscone South room 305.

To start out with for OOW attendees coming from a Forms background, Gert Poel and Pieter Gillis from iAdvise will give us the lowdown on ADF for Forms programmers.  This is a very important presentation for the beginners in the ADF community who are coming from a Forms background: 

1) UGF3783 - Oracle ADF Immersion: How an Oracle Forms Developer Immersed Himself in the Oracle ADF World - 9am-10am Moscone South room 305 

At the other end of the spectrum for EMG members who are looking to expand their ADF skills beyond the basics, Aino Andriessen from AMIS will be looking at using Hudson for building ADF applications.  Surprisingly via the EMG new member's survey around 25% of new members have no idea about CI tools so I think Aino's presentation is a great addition to the ADF EMG line up: 

2) UGF4945 - Deploy with Joy: Using Hudson to Build and Deploy Your Oracle ADF Applications - 10:15am-11:15am Moscone South room 305 

The 3rd presentation is one ADF EMG members have been asking for such a long time: 

3) UGF10463 - A Peek into the Oracle ADF Architecture of Oracle Fusion Applications - 11:30am-12:30am Moscone South room 305 

In this presentation Simon Haslam will be discussing the actual Fusion Apps "ADF" architecture.  In other words forgot the high level "yes ADF was used to build Fusion Apps" bullet points, Simon is going for a deep dive into the nitty gritty details of how ADF was used to build Fusion Apps.  For ADF EMG members remember all those times you posted to the EMG wishing to know more details about how ADF was used in Fusion Apps? This is the session for you to learn and bring your own questions.

But the fun doesn't stop here.  The final presentation is a muti-slot presentation, where a team of FMW programmers, including ADF programmers, SOA programmers and more will build an end-to-end application, live in front of your very eyes: 

4) UGF10464 - Oracle Fusion Middleware Live Application Development Demo - 12:45-3:45pm Moscone South room 305 

Why this presentation rocks, is rather than a single presentation on ADF here, then a separate presentation on SOA there, the goal of this presentation is to bring it altogether so you can see an end-to-end Fusion Middleware application being built at once.  I've seen this before, this is a great session, and I highly recommend it. 

I hope you'll take the opportunity to attend and support the ADF EMG this year, I'm especially keen to see new faces and meet old friends and to continue supporting it's members.

Of course note rooms and times may change, so ensure to check the schedule builder closer to the event. 

See you at Oracle Open World!

Friday Aug 17, 2012

Meet ojdeploy's big brother ojserver

Just over a year ago Oracle released the 11gR2 branch of JDeveloper starting at version 11.1.2.0.0.  The primary reason for that release was giving customer's JSF2.0 support in ADF, though our 11gR1 branch remains for various reasons.


While JSF2.0 is the primary reason to check out 11gR2, there are some minor other benefits including that of ojserver, which is ojdeploy's big brother.

I first became aware of ojserver when Oracle ACE John Stegeman mentioned it when he spotted in 11.1.2.0.0, it's come up on the ADF EMG a number of times, and I've been curious about it ever since.  Part of that curiosity is peaked by the fact that ojdeploy is one of Oracle's, let's say, least loved products.  I'm not utterly convinced by the naysayers' arguments about ojdeploy, but putting that aside, it does leave us wondering what ojserver does and what problem it attempts to rectify for ojdeploy.

Why ojserver was invented was to address an issue with the Fusion Applications build.  To date the statistics for the size and number of libraries in Fusion Apps is rather impressive.  And it is ojdeploy's task to build all those libraries and the resulting application.  At one stage it was observed the Fusion Apps build times were becoming rather long, and with a bit of analysis it was determined that the start and stopping of ojdeploy for each build component was a large time sink.

Why was this?  ojdeploy is ultimately a "headless" JDeveloper which requires it's own JVM to start, run and stop.  As you can appreciate that lifecycle takes time.  If you call it seven hundred times, that's seven hundred times ojdeploy needs to be start, run and stop.  There's not much we can do about the run bit, that's the bit when ojdeploy is actually doing it's real job, but is there anything Oracle could do to fix the start and stop cycle?

Enter odeploy's big brother ojserver.

ojserver is essentially a server version of ojdeploy, in the sense that once started it stays alive and can be asked to, well serve stuff ;-)  As such what you can ask ojdeploy to do is rather than build each library itself, just hand the request off to ojserver instead, which has already been started.  Brilliant.  We no longer have to start and stop the ojdeploy process for each build item, we just start it once at the beginning, and stop it once at the end.

To start ojserver you simply execute the following from the jdeveloper/jdev/bin directory:

ojserver -start

This will start the service on localhost port 2010 by default.  You can override this by specifying the address after the -start flag.  On starting the server you will eventually see:

INFO: Server ready.

We're now ready to rock n roll with ojdeploy.  The following shows you an example of how to call ojserver from ojdeploy from a separate command line, note the additional -ojserver and -address flags: 

ojdeploy -workspace /Users/chris/jdev/mywork/Demo/Demo.jws -project ViewController -profile DemoVCProfile -ojserver -address localhost:2010

In context of ojdeploy you will not see much activity in the logs.  Rather all activity include build output, errors and more will come from the ojserver logs.

One thing to keep in mind is if you're accessing ojserver remotely from ojdeploy remotely, for the given paths for the ojdeploy -workspace flag and more, ojserver must have access to those paths and the source code.  Remember ojserver is just a server version of ojdeploy, there's no magic copying of files between ojserver and ojdeploy, so in terms of building applications and the files it needs, it's the same as ojdeploy.

Note there is currently one known limitation with using ojserver and ojdeploy via Ant (as separate to the command line call above).  At the moment the OJDeployAnt taskDef that you define in Ant to call ojdeploy currently does not support parameters for calling ojserver.  ER 14464838 has been raised to address this limitation.

Reference: ojserver documentation

--Errata--

In addressing the last comment about OJDeployAnt, there is a known workaround to add <arg> elements to the taskDef as follows:

<ora:ojdeploy xmlns:ora="oraclelib:OJDeployAntTask"
     executable="${oracle.jdev.ojdeploy.path}"
     ora:buildscript="${oracle.jdev.deploy.dir}/ojdeploy-build.xml"
     ora:statuslog="${oracle.jdev.deploy.dir}/ojdeploy-statuslog.xml">
  <arg value="-ojserver"/>
  <arg value="-address "/>
  <arg value="localhost:2010"/>
  <ora:deploy>
    <ora:parameter name="workspace" value="${oracle.jdev.workspace.path}"/>
    <ora:parameter name="profile" value="${oracle.jdev.deploy.profile.name}"/>
    <ora:parameter name="nocompile" value="false"/>
    <ora:parameter name="outputfile" value="${oracle.jdev.deploy.outputfile}"/>
  </ora:deploy>
</ora:ojdeploy>

In the above example I've truncated some of the Ant property names using "jdev" rather than "jdeveloper" so the code will fit in the width of the blog.  Ensure to double check these with your own Ant property names.

Thursday Aug 02, 2012

New recording on using JMeter to test ADF applications

Before joining Oracle I maintained an older ADF blog where I covered using Apache JMeter to load test ADF.  That post has been picked up by a number of people over the years and it's nice to see it was useful.

Unfortunately one of the problems in using JMeter to test ADF is there's an extreme amount of fussy configuration to get right.  As a result to this day I continue to get hit with questions - why don't our tests work?  From my own investigation 99% of the time it's a configuration error on the developer's part.  Like I said, there's lots of fussy configuration you must get exactly right otherwise ADF gets confused by the messed up HTTP requests it receives from JMeter (more rightly ADF says the user session has expired, which is just ADF's way of saying it doesn't know who the current session is because the ADF HTTP state parameters JMeter is sending to the ADF server are not what it expected).

While the original blog post was useful in teaching people the technique of using JMeter, it really could do with a recorded demonstration to show all the steps involved in a live test.  Lucky for you as I'm now an ADF product manager with far too much time on my hands, I've taken time out to record such a demo as part of our ever expanding ADF Insider series.

At the conclusion of the demo you may decide it all sounds like too much effort.  Without a doubt this is why you should look at Oracle's Application Test Suite (OATS).  OATS has ADF intelligence built in, there's far less fussy configuration required, so you can focus on the job of testing rather than configuring the test tool.  I hope to publish some demos on using OATS soo.

One final caveat, I don't expect the existing JMeter configurations to survive for every future version of ADF.  So if you do find your old JMeter tests stop working on adopting a future ADF version, time to look under the covers, discover how we need to change the JMeter tests, and most importantly please share your knowledge by blogging about it or post it on the ADF EMG and leaving a comment here for people to find.

Post edit 12th March 2013: Jan Vervecken has provided a very useful update for JMeter, check out the following OTN forums post.

Post edit 2nd September 2013: Ray Tindall has provided the following updates for using this under 11.1.1.7.0. The following changes need to be made to the JMeter solution:

Previously 11.1.1.6.0 afrLoop was extracted from:
query = query.replace(/_afrLoop=[^&]*/__,"_afrLoop=21441675777790");
or
query = query += "_afrLoop=21441675777790";

Under 11.1.1.7.0 it should be extracted from:
query = _addParam(query, "_afrLoop", "21137373554065");

As such afrLoop should now be extracted using:
_afrLoop", "([-_0-9A-Za-z]{13,16})

Thanks to both Jan and Ray for these updates.

Thursday Jul 12, 2012

Perth reveals itself as an ADF hotspot - ADF Community Event

I don't know if you've every visited Perth, but it's a loooooong way from anywhere.  As a result sandgropers often feel like we're left out of the rest of the world's excitement (which isn't a bad thing sometimes either).

In the IT industry this as true as other worldly events.  We read all about those exciting Silicon Valley conferences, huge European technical user groups, and look local to find, well with a population of only 1.2 million and the next major city 2500kms away, IT events are on a much smaller scale.

So I'm happy to announce regardless of the tyranny of distance, Perth proved itself a little ADF hotspot yesterday. Yesterday marked the first ADF Community Event trial in Perth, opened to only 4 of our local customers to test will this work locally, and I must say the event was a success!

The ADF Community Events are designed not to be Oracle sales events, but rather gathering parties who are interested in ADF to discuss and collaborate and network, while learning more about what ADF and other FMW products have to offer (think: SIG).   All in all this is an idea we "borrowed" from Frank Nimphius and Germany who are running their own successful events series.

Over 3 hours we covered discussing how to build large scale ADF applications, as well as what I thought an excellent hands-on session by Tim Middleton on integrating Coherence with ADF (Tim, I finally get Coherence, thanks!).

So how do I know the event was a success? Well firstly Oracle staff were trying to push their way in too, so I had an overly full room.  Secondly I've already lined up our customer speakers for the next event and they volunteered themselves without (much) prompting! ;-)

The next event is tentatively scheduled for Wednesday 12th September.  I'm deliberately controlling the invites, but if you're desperate to attend please email me at chris DOT muir AT oracle DOT com.

Thanks to everyone who attended yesterday and I look forward to seeing everyone at the next event.

Saturday Jul 07, 2012

Do you know your ADF "grace period?"

What does the term "support" mean to you in context of vendors such as Oracle giving your organization support with our products? Over the last few weeks I'm taken a straw poll to discuss this very question with customers, and I've received a wide array of answers much to my surprise (which I've paraphrased):

"Support means my staff can access dedicated resources to assist them solve problems"

"Support means I can call Oracle at anytime to request assistance"

"Support means we can expect fixes and patches to bugs in Oracle software"

The last expectation is the one I'd like to focus on in this post, keep it in mind while reading this blog.

From Oracle's perspective as we're in the business of support, we in fact offer numerous services which are captured on the table in the following page.

As the text under the table indicates, you should consult the relevant Oracle Lifetime Support brochures to understand the length of time Oracle will support Oracle products. As I'm a product manager for ADF that sits under the FMW tree of Oracle products, let's consider ADF in particular. The FMW brochure is found here.

On page 8 and 9 you'll see the current "Application Development Framework 11gR1 (11.1.1.x)" and "Application Development Framework 11gR2 (11.1.2)" releases are supported out to 2017 for Extended Support. This timeframe is pretty standard for Oracle's current released products, though as new releases roll in we should see those dates extended.

On page 8 of the PDF note the comment at the end of this page that refers to the Oracle Support document 209768.1:

For more-detailed information on bug fix and patch release policies, please refer to the “Error Correction Support Policy” on MyOracle Support.

This policy document is important as it introduces Oracle's Error Correction Support Policy which addresses "patches and fixes". You can find it attached the previous Oracle Support document 209768.1.

Broadly speaking while Oracle does provide "generalized support" up to 2017 for ADF, the Error Correction Support Policy dictates when Oracle will provide "patches and fixes" for Oracle software, and this is where the concept of the "grace period" comes in.

As Oracle releases different versions of Oracle software, say 11.1.1.4.0, you are fully supported for patches and fixes for that specific version. However when we release the next version, say 11.1.1.5.0, Oracle provides at minimum of 3 months to a maximum of 1 year "grace period" where we'll continue to provide patches and fixes for the previous version. This gives you time to move from 11.1.1.4.0 to 11.1.1.5.0 without being unsupported for patches and fixes.

The last paragraph does generalize as I've attempted to highlight the concept of the grace period rather than the specific dates for any version. For specific ADF and FMW versions and their respective grace periods and when they terminated you must visit Oracle Support Note 1290894.1. I'd like to include a screenshot here of the relevant table from that Oracle Support Note but as it is will be frequently updated it's better I force you to visit that note.

Be careful to heed the comment in the note:

According to policy, the Grace Period has passed because a newer Patch Set has been released for more than a year. Its important to note that the Lifetime Support Policy and Error Correction Support Policy documents are the single source of truth, subject to change, and will provide exceptions when required. This My Oracle Support document is providing a summary of the Grace Period dates and time lines for planning purposes.

So remember to return to the policy document for all definitions, note 1290894.1 is a summary only and not guaranteed to be up to date or correct.

A last point from Oracle's perspective. Why doesn't Oracle provide patches and fixes for all releases as long as they're supported? Amongst other reasons, it's a matter of practicality. Consider JDeveloper 10.1.3 released in 2005. JDeveloper 10.1.3 is still currently supported to 2017, but since that version was released there has been just under 20 newer releases of JDeveloper. Now multiply that across all Oracle's products and imagine the number of releases Oracle would have to provide fixes and patches for, and maintain environments to test them, build them, staff to write them and more, it's simple beyond the capabilities of even a large software vendor like Oracle. So the "grace period" restricts that patches and fixes window to something manageable.

In conclusion does the concept of the "grace period" matter to you? If you define support as "getting assistance from Oracle" then maybe not. But if patches and fixes are important to you, then you need to understand the "grace period" and operate within the bounds of Oracle's Error Correction Support Policy.

Disclaimer: this blog post was written July 2012. Oracle Support policies do change from time to time so the emphasis is on you to double check the facts presented in this blog.

Sunday Jun 24, 2012

466 ADF sample applications and growing - ADF EMG Kaleidoscope announcement

Interested in finding more ADF sample applications?  How does 466 applications take your fancy?

Today at ODTUG's Kaleidoscope conference in San Antonio the ADF EMG announced the launch of a new ADF Samples website, an index of 466 ADF applications gathered from expert ADF bloggers including customers and Oracle staff.

For more details on this great ADF community resource head over to the ADF EMG announcement.

Thursday Jun 14, 2012

An invitation to join a JDeveloper and ADF productivity clinic (and more!) at KScope

Would you like a chance to influence Oracle's decisions on tool usability and productivity?

If you're attending ODTUG's Kaleidoscope conference this year in San Antonio, Oracle would like to invite you to participate in our Usability Activity Research and separately our JDeveloper and ADF Productivity Clinics with our experienced user experience teams.  The teams are keen to hear what you have to say about your experiences with our tools in general and specifically JDeveloper and ADF.  The details of each event are described below.

Invitation to Usability Activity - Sunday June 24th to Wednesday June 27th

Oracle is constantly working on new tools and new features for developers, and invites YOU to become a key part of the process!  As a special addition to Kscope 12, Oracle will be conducting onsite usability research in the Alyssum room, from Sunday June 24 to Wednesday June 27.

Usability activities are scheduled ahead of time for participants' convenience.  If you would like to take part, please fill out this form to let us know of the session(s) that you would like to attend and your development experience. You will be emailed with your scheduled session before the start of the conference.

JDeveloper and ADF Productivity Clinic - Thursday June 28th

Are you concerned that Java, Oracle ADF or JDeveloper is difficult? Is JDeveloper making you jump through hoops?  Do you hate a particular dialog or feature of JDeveloper? Well, come and get things off your chest! Oracle is hosting a product management and user experience clinic where we want to hear about your issues and concerns. What's difficult to use?  What doesn't work the way you want, and how would you want it to work?  What isn't behaving like your current favorite tool?  If we can't help on you the spot, we'll take your feedback and use it to improve the product experience.  A great opportunity to get answers, or get improvements.

Drop by the Alyssum room, anytime from 8:30 to 10:30 on Thursday, June 28.

We look forward to seeing you at KScope soon! 

Sunday May 27, 2012

Page based Prematurely Terminating Task Flow scenario

In a previous blog post I highlighted the issue of ADF Prematurely Terminating Task Flows, essentially where ADF page fragment based task flows embedded in regions can be terminated early by their enclosing page causing some interesting side effects.  In that post I concluded the behavior was restricted to task flows embedded in regions, and to be honest besides a log out/timeout scenario, I thought this issue could only occur in regions.

While reading our documentation on the CLIENT_STATE_MAX_TOKENS and browser back button support I realized there is indeed another prematurely terminating task flow scenario for page based task flows rather than fragment based task flows which we'll describe here.  For anyone who hasn't read the previous blog post, I suggest you read it before reading this post as it won't make much sense otherwise.

Let's describe the application we'll use to demonstrate the scenario:

1) First it contains an unbounded task flow which includes a ViewCountries.jspx page to show data from the Countries table, followed by call to a countries-task-flow.xml.



2) The ViewCounteries.jspx page contains a read-only af:table showing countries data and the ability to select a record, an edit button to navigate to the countries-task-flow, and finally a plain old submit button.



4) The countries-task-flow includes an EditCountries.jspx and an exit Task Flow Return Commit activity.



Note the countries-task-flow transaction options are set to Always Begin New Transaction and a shared Data Control Scope:



6) Finally the EditCountries.jspx page includes an editable af:form for the countries data, and a button to exit the task flow via the Task Flow Return Commit activity.



Similar to the last blog post we'll use ADFLoggers on the underlying Application Module to show what's happening under the hood.

On running the application and accessing the ViewCountries.jspx page
we see the Application Module initialized in the logs:

<AppModuleImpl> <create> AppModuleImpl created as ROOT AM
<AppModuleImpl> <prepareSession> AppModuleImpl prepareSession() called as ROOT AM

We'll pick the Brazil record....



....then the edit button which navigates us to the EditCountries.jspx page within the countries-task-flow.  Note the Brazil record is showing as the current row as the countries-task-flow is using a shared data control scope:



Now if we use the browser back button to return to the previous page we see something interesting in the logs as soon as we click the button.....

<AppModuleImpl> <beforeRollback> AppModuleImpl beforeRollback() called as ROOT AM

....and because of the rollback note that the current row has reset to the first row:


As promised this is another prematurely terminating task flow scenario, this time with pages rather than fragments.  As we can see the framework on detecting the back button press terminates the task flow's transaction by automatically issuing the rollback.

You can download the sample application from here.

Thursday May 17, 2012

Which JDeveloper is right for me?

Developers downloading JDeveloper will notice that there are two "current" releases to download, 11g Release 1 and 11g Release 2 (abbreviated to 11gR1 and 11gR2 respectively).  11gR1 encompasses the 11.1.1.X.0 JDeveloper versions including the latest 11.1.1.6.0 release.  11gR2 encompasses the 11.1.2.X JDeveloper versions including the latest 11.1.2.2.0 release.

What's the difference between the two releases and when would you want to use them?

JDeveloper 11g Release 2 includes support for JavaServer Faces 2.0 and was released for customers who are specifically interested in using this contemporary Java EE technology.  Oracle plans to bring in full Java EE 6 support in JDeveloper 12c which JSF2.0 is apart of, but in listening to customers there was interest in obtaining the JSF2.0 support earlier.  Thus the 11gR2 release.

The question begs then why would you want 11gR1 if 11gR2 includes the latest Java EE JSF standards?  Surely 11gR1 only supports the older JSF1.2?  The answer revolves around JDeveloper's Fusion Middleware (FMW) support.  Only 11gR1 and the yet-to-be-released 12c versions of JDeveloper will support the full FMW tools including WebCenter, SOA Suite and so on.

So if you want the latest JSF2.0 support go 11gR2, but if you're happy with 11gR1 or need the rest of the FMW stack stay on the 11gR1 platform for now as Oracle is continuing to actively improve it.  Eventually JDeveloper 12c will arrive where the 11gR1 and 11gR2 releases will converge, and your choice will again be a simple one.

Friday May 04, 2012

ADF UI Shell update

Developers who use the ADF UI Shell (aka Dynamic Tab Shell) will be interested to know it now has support for multi browser tabs.  What does multi browser tab support mean?

As separate to the dynamic tab feature provided by the ADF UI Shell, contemporary browsers give the user the ability to open multiple tabs within the browser. Each browser tab can view different URLs allowing the user to browse different websites simultaneously, or even the same website multiple times. 

There's effectively two ways you can currently be using the ADF UI Shell, either you're using the version coupled with JDeveloper and selected through the New Page dialog the Dynamic Tab Shell template, or you've downloaded the source code via the ADF UI Shell patterns page.

If you're using the former option, note that the multi browser tab support within the Shell  became available in JDeveloper 11.1.1.6.0 (patchset 5).  If you want to make use of this support you will need to consider adding the context parameter USE_PAGEFLOW_TAB_TRACKING to your web.xml to turn on the multi browser tab support in the shell.  By default the Shell will not turn this on for backwards compatibility reasons.

Alternatively if you're using the ADF UI Shell source code as downloaded via the original pattern web page, you will not only need to configure this new parameter, but you will need to download the source code (via the zip in the link above) and modify your local copy of the template too.  For reference the only code change has been to the TabContext.java class.

Note while this will make the ADF UI Shell ready for multi browser tab support, it does not mean your entire application suddenly can support multi browser tabs. You need to have taken special care in determining your application's bean scopes as detailed in one of my old blogs.

About

Chris Muir - Oracle ADF Product Manager - The views expressed on this blog are my own and do not necessarily reflect the views of Oracle.

Search

Categories
Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today