<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
   <channel>
      <title>ORACLE ADF - Putting It Together</title>
      <link>http://blogs.oracle.com/DavidGiammona/</link>
      <description>Harness the power of ORACLE ADF for your applications! </description>
      <language>en</language>
      <copyright>Copyright 2009</copyright>
      <lastBuildDate>Fri, 25 Sep 2009 10:12:37 -0800</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

      
      <item>
         <title>Task Flow Editor Enhancements</title>
         <description><![CDATA[<p>If you've been poking around the Task Flow Editor in the new release of JDeveloper 11g (11.1.1.2), you might have noticed some of the following cool new enhancements:<br /></p>

<p><big><strong>Bounded Task Flow Identifier</strong></big><br />
There's now an easy way to identify if the task flow diagram currently in use is a bounded task flow or part of the unbounded task flow.  Just look in the upper left corner of the diagram for the new identifier.&nbsp; It remains hovering in the same location as the diagram is scrolled within the editor.</p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="taskfloweditor1 identifier.GIF" src="http://blogs.oracle.com/DavidGiammona/2009/09/25/taskfloweditor1%20identifier.GIF" class="mt-image-center" style="margin: 0pt auto 20px; text-align: center; display: block;" width="600" height="135" /></span>

<p><strong><big>Navigate to Method from Method Call Activity</big></strong><br />When method call activities are assigned a managed bean method, double-clicking on the method call activity will navigate directly to the method within its corresponding Java class. <br /></p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="taskfloweditor1 methodcall1.GIF" src="http://blogs.oracle.com/DavidGiammona/2009/09/25/taskfloweditor1%20methodcall1.GIF" class="mt-image-center" style="margin: 0pt auto 20px; text-align: center; display: block;" width="512" height="331" /></span>

<p>This same navigation can also be performed by selecting the method call activity and then its <i>"Go to Method"</i> context menu.</p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="taskfloweditor1 methodcall2.GIF" src="http://blogs.oracle.com/DavidGiammona/2009/09/25/taskfloweditor1%20methodcall2.GIF" class="mt-image-center" style="margin: 0pt auto 20px; text-align: center; display: block;" width="519" height="183" /></span>

<p><strong><big>Task Flow Definition - Transaction &amp; Data Control Scope</big></strong><br />
Task flow definitions contain the two properties <i>&lt;transaction&gt;</i> and <i>&lt;data-control-scope&gt;</i>.   Previously in the task flow definition Property Inspector, these two properties appeared to be completely independent from each other.  However, that really is not the case.  There actually are subtle relationships between the two different properties resulting in specific runtime behaviors.  This often caused confusion with developers trying to understand any resulting application problems.</p>

<p></p>

<p>Therefore, in the new release of JDeveloper 11g (11.1.1.2), the user interface for these two properties has been redesigned to express these relationships in a more explicit manner.&nbsp; <i>Transaction </i>is now a group of related properties.  The first is a dropdown specifying the transactional options.</p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="taskfloweditor2 transaction1.GIF" src="http://blogs.oracle.com/DavidGiammona/2009/09/25/taskfloweditor2%20transaction1.GIF" class="mt-image-center" style="margin: 0pt auto 20px; text-align: center; display: block;" width="475" height="208" /></span>

<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="taskfloweditor2 transaction2.GIF" src="http://blogs.oracle.com/DavidGiammona/2009/09/25/taskfloweditor2%20transaction2.GIF" class="mt-image-center" style="margin: 0pt auto 20px; text-align: center; display: block;" width="475" height="223" /></span><p>Once this value is set the display of the "<i>Share data controls with calling task flow</i>" and "<i>No save point on task flow entry</i>" checkboxes will adjust accordingly.<br />
<strong><big><br />
View and Task Flow Call Activity Thumbnails</big><br /></strong>When working with task flow diagrams in JDeveloper, it's often easy to forget the general look and feel of the task flows assigned to task flow call activities and pages assigned to view activities.  In these situations it can be helpful to quickly refresh ones memory on how a given task flow or page appears.  In the previous release of JDeveloper, this was only possible by drilling down into these task flow activities to open their corresponding task flows or pages within their own editor.  This could take time and also clutter the workspace.  When all that's desired is simply a quick memory refresh or assistance in walking someone through an application flow within JDeveloper this approach could be cumbersome.

</p><p>A feature is now provided in new release JDeveloper 11g (11.1.1.2) to quickly assist the developer in this situation.  The developer selects a task flow call or view activity within a task flow diagram.  Then the developer selects the "<i>Show Thumbnail...</i>" context menu.  A peek dialog will be displayed containing a thumbnail of the corresponding task flow or page.  Using the "<i>Show Thumbnail...</i>" context menu does not dirty the containing task flow diagram.  It also will not allow modifications to the task flows and pages displayed within the peek dialog. <br />
</p>Task flow call activity thumbnails provide the additional ability to pan and zoom the appropriate portion of the diagram into view.<br /><br />  <span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="taskfloweditor3 thumbnail1.GIF" src="http://blogs.oracle.com/DavidGiammona/2009/09/25/taskfloweditor3%20thumbnail1.GIF" class="mt-image-center" style="margin: 0pt auto 20px; text-align: center; display: block;" width="473" height="405" /></span><p><strong></strong></p><span class="mt-enclosure mt-enclosure-image" style="display: inline;">View activity thumbnails do not provide the capability to pan and zoom.<img alt="taskfloweditor3 thumbnail1.GIF" src="http://blogs.oracle.com/DavidGiammona/2009/09/25/taskfloweditor3%20thumbnail1.GIF" class="mt-image-center" style="margin: 0pt auto 20px; text-align: center; display: block;" width="473" height="405" /></span><p><strong></strong></p><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;">View activities; however, do provide an additional context menu item "Expand Thumbnail" to display an image of the corresponding page within the task flow diagram context.  Expanding view activity thumbnails can also be performed by selecting the expand icon in the upper left corner of a view activity.   Changing the expanded state of a view activity thumbnail dirties the task flow diagram.  Therefore, the expanded state of view activity thumbnails can be saved and restored when the same containing task flow diagram is once again opened for editing.<img alt="taskfloweditor3 thumbnail3.GIF" src="http://blogs.oracle.com/DavidGiammona/2009/09/25/taskfloweditor3%20thumbnail3.GIF" class="mt-image-center" style="margin: 0pt auto 20px; text-align: center; display: block;" width="475" height="293" /></span></div><div><br /></div>]]></description>
         <link>http://blogs.oracle.com/DavidGiammona/2009/09/task_flow_editor_enhancements.html</link>
         <guid>http://blogs.oracle.com/DavidGiammona/2009/09/task_flow_editor_enhancements.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">ADF Controller</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">11g</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">ADF</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">ADF Task Flow</category>
        
         <pubDate>Fri, 25 Sep 2009 10:12:37 -0800</pubDate>
      </item>
      
      <item>
         <title>Task Flow Call Activity Run As Dialog Using a Popup</title>
         <description><![CDATA[<p>In the previous JDeveloper 11g release, it was possible to declaratively define a task flow call activity to be "Run As a Dialog".  When using this approach, the dialogs presented at runtime  could only be displayed as external windows. Implementation involved declaratively setting the task flow activity <em>&lt;run-as-dialog&gt;</em> property to "true" and also setting the launching UI component <i>useWindow</i> attribute to "true". At runtime when the UI component was selected, the task flow specified by the task flow call activity was presented within a dialog using an external window. </p>

<span class="mt-enclosure mt-enclosure-image" style="display: inline;"></span><p>In the new release of JDeveloper 11g (11.1.1.2), a new option has been added. It allows the developer to declaratively define a task flow call activity to be "Run As a Dialog" using a popup or an external window. This can be very helpful due to the prevalence of application popups. The developer must still set the task flow activity <em>&lt;run-as-dialog&gt;</em> property to "true" and also the launching UI component <i>useWindow </i>attribute to "true". Then, a new task flow activity property for dialog <i>Display Type</i> is set to either <i>"external-window"</i> (default) or <i>"inline-popup"</i>. Therefore, to run the dialog as a popup, the developer sets the task flow call activity <i>Display Type</i> to <i>"inline-popup"</i>. </p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="runasdialog1.GIF" src="http://blogs.oracle.com/DavidGiammona/2009/09/25/runasdialog1.GIF" class="mt-image-center" style="margin: 0pt auto 20px; text-align: center; display: block;" width="475" height="500" /></span>
<p>At runtime when the UI component is selected, the task flow specified by the task flow call activity is presented as a dialog using a popup (not an external browser window).</p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="runasdialog2.GIF" src="http://blogs.oracle.com/DavidGiammona/2009/09/25/runasdialog2.GIF" class="mt-image-center" style="margin: 0pt auto 20px; text-align: center; display: block;" width="428" height="307" /></span><p>
</p><div><br /></div>]]></description>
         <link>http://blogs.oracle.com/DavidGiammona/2009/09/task_flow_call_activity_run_as.html</link>
         <guid>http://blogs.oracle.com/DavidGiammona/2009/09/task_flow_call_activity_run_as.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">ADF Controller</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">11g</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">ADF</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">ADF Task Flow</category>
        
         <pubDate>Fri, 25 Sep 2009 09:44:03 -0800</pubDate>
      </item>
      
      <item>
         <title>Dynamically Assign TaskFlowId to Task Flow Call Activity </title>
         <description><![CDATA[

<p>Previously, the Task Flow Reference (TaskFlowId) of a task flow call activity was required to be statically assigned at design time.   However, this often brought challenges when the task flow to call was not known until runtime.  In these situations, the developer was often forced use a dynamic region rather than a task flow call activity even though a region might not be required by the application design.</p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="dynamicassigntaskflowid1.GIF" src="http://blogs.oracle.com/DavidGiammona/2009/09/25/dynamicassigntaskflowid1.GIF" class="mt-image-center" style="margin: 0pt auto 20px; text-align: center; display: block;" width="451" height="521" /></span>

<p> </p>

<p>But, in the new release of JDeveloper 11g (11.1.1.2) the developer  can dynamically assign a Task Flow Reference to a task flow call activity at runtime.  This requires simply changing the new Task Flow Reference dropdown value from <i>"Static"</i> to<i> "Dynamic"</i>.  Then a valid EL Expression can be entered into the <i>Dynamic Task Flow Reference</i> property.  When evaluated, the EL Expression should result in a valid Task Flow Reference (TaskFlowId)<document><id> (e.g. - "/WEB-INF/employees-task-flow.xml#employees-task-flow").  Input parameters and return values can be assigned using a map or name/value pairs in the same manner as invoking a task flow as a region via a taskFlow binding.</id><br /></document></p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="dynamicassigntaskflowid2.GIF" src="http://blogs.oracle.com/DavidGiammona/2009/09/25/dynamicassigntaskflowid2.GIF" class="mt-image-center" style="margin: 0pt auto 20px; text-align: center; display: block;" width="441" height="528" /></span><p><document></document></p>

<p> </p>]]></description>
         <link>http://blogs.oracle.com/DavidGiammona/2009/09/dynamically_assign_task_flow_c.html</link>
         <guid>http://blogs.oracle.com/DavidGiammona/2009/09/dynamically_assign_task_flow_c.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">ADF Controller</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">11g</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">ADF</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">ADF Task Flow</category>
        
         <pubDate>Fri, 25 Sep 2009 09:32:56 -0800</pubDate>
      </item>
      
      <item>
         <title>New Features in the ADF Debugger</title>
         <description><![CDATA[<p><font style="font-size: 1.25em;"><font style="font-size: 0.8em;">In
the new release of JDeveloper 11g </font></font><font style="font-size: 1.25em;"><font style="font-size: 0.8em;">(11.1.1.2)</font></font><font style="font-size: 1.25em;"><font style="font-size: 0.8em;">, the ADF Debugger has some
very helpful new features.&nbsp; Check these out, if you haven't already
taken them for a spin...</font><br /></font></p><p><font style="font-size: 1.25em;"><strong>Page Definition Breakpoints</strong></font><br />
Page definition breakpoints were available in the prior release of
JDeveloper, however, they only provided the ability to pause debugging
BEFORE bindings and executables were performed. Now, it's also possible
to pause debugging AFTER page definition bindings and executables are
performed.&nbsp; A new column has been added on the right of page definition
binding and executable lists for these new AFTER breakpoints. Toggle an
AFTER breakpoint "on" by clicking within the new column or select the
binding or executable in the list and utilize the context menu.&nbsp;
Stepping is possible from the BEFORE to the AFTER page definition
executable location, but no longer continues once the AFTER page
definition executable location is reached.</p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="newdebugger1 after breakpoint.GIF" src="http://blogs.oracle.com/DavidGiammona/2009/09/25/newdebugger1%20after%20breakpoint.GIF" class="mt-image-none" style="" width="705" height="352" /></span>
<p>Keep in mind refreshing is NOT the same as executing
iteratorBindings. Each data control determines how and when to execute
a collection. When using ADFbc, a Java breakpoint is required on the
ViewObjectImpl executeQueryForcollection or QueryCollection's
executeQuery methods to break on the execute of a particular
collection. This Java breakpoint can be made conditional to break only
if the VO name or ViewDef name matches how the iteratorBinding is bound.</p>

<p> </p>

<p></p>

<p> </p>

<p><b><font style="font-size: 1.25em;">ADF Lifecycle Phase Breakpoints</font></b><br />
It's now possible to pause debugging BEFORE and/or AFTER any ADF
lifecycle phase. There are a couple places these new ADF lifecycle
phase breakpoints can be created:<br /></p><ul><li>
ADF Lifecycle Phase Dialog - Available from the <i>ADF Structure</i>
window or task flow diagram editor using the <i>"ADF Lifecycle Breakpoints..."</i>
toolbar item.&nbsp; ADF lifecycle phase breakpoints are toggled "on" by
selecting within the columns on either side of the ADF lifecycle phases listed within the dialog. When paused during debugging runtime, the current ADF lifecycle phase
will be displayed within the dialog in bold.</li></ul><div align="center">&nbsp;&nbsp;&nbsp;&nbsp; <img alt="newdebugger2 adf lifecycle breakpoints.GIF" src="http://blogs.oracle.com/DavidGiammona/2009/09/25/newdebugger2%20adf%20lifecycle%20breakpoints.GIF" class="mt-image-none" style="" width="243" height="236" /></div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"></span><ul><li>Debugger <i>Breakpoint </i>Window - A new
toolbar has been added to the Debugger <i>Breakpoint</i> window. It provides
the ability to create, edit, delete, enable, and disable different types of breakpoints, including ADF lifecycle breakpoints. Currently, page definition breakpoints cannot be added within the debugger <i>Breakpoint </i>window.</li></ul><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="newdebugger3 breakpoint window.GIF" src="http://blogs.oracle.com/DavidGiammona/2009/09/25/newdebugger3%20breakpoint%20window.GIF" class="mt-image-center" style="margin: 0pt auto 20px; text-align: center; display: block;" width="662" height="234" /></span>

<p>Once debugging is paused on an ADF lifecycle phase breakpoint, stepping can be performed to advance from the current location the next BEFORE or AFTER ADF lifecycle phase location. </p>

<p><font style="font-size: 1em;"><b><font style="font-size: 1.25em;">Display of Current ADF Lifecycle Phase</font></b></font><br />
Previously, it was difficult to identify where debugging was paused
within the ADF lifecycle. Now, when debugging is paused at any breakpoint
the ADF Debugger displays the current ADF Lifecycle Phase at the top of
the <i>ADF Structure</i> window.&nbsp; This can be very helpful information when
further inspecting values and/or determining application processing. <br /></p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="newdebugger4 display life cycle phase.GIF" src="http://blogs.oracle.com/DavidGiammona/2009/09/25/newdebugger4%20display%20life%20cycle%20phase.GIF" class="mt-image-center" style="margin: 0pt auto 20px; text-align: center; display: block;" width="280" height="327" /></span>

<p> </p>

<p><font style="font-size: 1.25em;"><b>New ADF Business Component Content</b></font><br />
This new release also adds the capability to review the BC4J objects
currently instantiated when
debugging is paused. To view this information, the<i> ADF Structure</i> window
provides an&nbsp; <i>"Application Data"</i> node within each viewport. Selecting the
desired viewport's <i>"Application Data"</i> node will present its
corresponding instantiated BC4J objects for display within the <i>ADF Data</i> window. This includes the
following BC4J objects:<br /></p><ul><li>
Application Module:  identifies the current transaction status</li><li>
Entity Object:  displays all rows and the current status of the entity's state.</li><li>
View Object:  shows its corresponding SQL Query and the rows it retrieved.  The current row is identified with a current row icon.</li></ul><br /><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="newdebugger5 adfbc content1.GIF" src="http://blogs.oracle.com/DavidGiammona/2009/09/25/newdebugger5%20adfbc%20content1.GIF" class="mt-image-center" style="margin: 0pt auto 20px; text-align: center; display: block;" width="788" height="280" /></span>

<p></p>

<p> </p>

<p></p>

<p> </p>

<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="newdebugger6 adfbc content1.GIF" src="http://blogs.oracle.com/DavidGiammona/2009/09/25/newdebugger6%20adfbc%20content1.GIF" class="mt-image-center" style="margin: 0pt auto 20px; text-align: center; display: block;" width="760" height="270" /></span><p></p><p><b><font style="font-size: 1.25em;">Enhanced ADF Model Content</font></b><br />
Previously, when selecting a binding container node in the <i>ADF
Structure</i> window it was difficult to locate the desired ADF Model
information displayed within the <i>ADF Data</i> window. Now, the ADF Model content
displayed mirrors the same structure as its design time page
definition: Data Controls, Parameters, Executables, and Bindings. Each area can be expanded to inspect its current runtime values.</p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="newdebugger7 adfm conten 1.GIF" src="http://blogs.oracle.com/DavidGiammona/2009/09/25/newdebugger7%20adfm%20conten%201.GIF" class="mt-image-center" style="margin: 0pt auto 20px; text-align: center; display: block;" width="762" height="273" /></span>

<p> </p>

<p>Data controls based on business services not implemented by BC4J
objects will display within the binding container content using raw
member variables similar to the standard debugger <i>Data </i>window. For
example, the "EmployeeService" bean data control shown below was
implemented using a POJO.</p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="newdebugger8 adfm conten pojo.GIF" src="http://blogs.oracle.com/DavidGiammona/2009/09/25/newdebugger8%20adfm%20conten%20pojo.GIF" class="mt-image-center" style="margin: 0pt auto 20px; text-align: center; display: block;" width="718" height="324" /></span>

<p> </p>

<p><font style="font-size: 1.25em;"><b>Hide Page Template Content</b></font><br />
When inspecting view contents within the <i>ADF Data </i>window, it's now
possible to easily filter out page template content from the content of
its associated page. A checkbox labeled <i>"Include Page Template
Content"</i> will be displayed on the <i>ADF Data</i> window toolbar if the view displayed
is assigned a page template.&nbsp; The checkbox default is to
include page template content. Just uncheck the box to easily
filter out any page template content. Then only the content coming from the page will presented
within facets.</p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="newdebugger9 page template.GIF" src="http://blogs.oracle.com/DavidGiammona/2009/09/25/newdebugger9%20page%20template.GIF" class="mt-image-center" style="margin: 0pt auto 20px; text-align: center; display: block;" width="762" height="311" /></span><p> </p><div><br /></div><div><br /></div>]]></description>
         <link>http://blogs.oracle.com/DavidGiammona/2009/09/new_features_in_the_adf_debugg.html</link>
         <guid>http://blogs.oracle.com/DavidGiammona/2009/09/new_features_in_the_adf_debugg.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">ADF Declarative Debugger</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">11g</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">ADF</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">ADF Debugger</category>
        
         <pubDate>Fri, 25 Sep 2009 08:41:18 -0800</pubDate>
      </item>
      
      <item>
         <title>What Approach Should I Use for ADF Regions to Share Data or Initiate Navigation?</title>
         <description><![CDATA[<p>ADF Regions provide a great deal of application flexibility. Yet, when implementing ADF Regions that same flexibility often leaves the pensive developer wondering how best to share data or initiate navigation.  Many different technologies come together to provide these types of application interactions for ADF Regions. Which one best fits what your trying to accomplish?  Input parameters?  Shared Data Controls?  Contextual Framework Events?  To help decipher through the appropriate approach to choose, I've created an <a href="http://www.oracle.com/technology/products/adf/patterns/11/ADFRegionInteraction.pdf">ADF Region Interaction</a> pattern document available on OTN.  It describes each of the different ADF Region interaction development approaches and their recommended uses.  Examples are also provided to help demonstrate each of the concepts.  </p>

<p>So think globally and interact "regionally"!  ;)</p>]]></description>
         <link>http://blogs.oracle.com/DavidGiammona/2009/01/what_approach_should_i_use_for.html</link>
         <guid>http://blogs.oracle.com/DavidGiammona/2009/01/what_approach_should_i_use_for.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">Regions &amp; Dynamic Regions</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">11g</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">ADF</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">Pattern</category>
        
         <pubDate>Fri, 23 Jan 2009 09:25:31 -0800</pubDate>
      </item>
      
      <item>
         <title>How Are “Empty” Regions Implemented?</title>
         <description><![CDATA[<p>There might be times when ADF Region content should not be displayed on a runtime page.  Instead, the page should appear blank where the region was previously located.  This is really easy to implement, but it’s not really the region that’s “empty”.  It’s actually the task flow definition associated with the region that’s “empty”.  But, no need to go to the trouble of creating metadata for a task flow definition containing a view activity associated with a blank page.  All you need to do is just set the region or dynamic region taskFlow binding taskFlowId=””.   The open-quote closed-quote convention MUST be used as defined by ADF Controller.  Setting the taskFlowId to “null” or using parse commands will not work.  </p>

<p>This same “empty” task flow approach is often used when region content is hidden and shown as part of an ADF Faces popup or panelTab.  It’s important to swap an “empty” task flow into a dynamic region when it’s hidden from view.  This ensures memory and recourses for the associated task flow definition are allocated and released appropriately.</p>

<p>For example, the following Java class can be used to swap an “empty” task flow into a dynamic region contained within an ADF Faces popup.   Note two VERY IMPORTANT things about the code sample:  1) getDynamicTaskFlowId() returns a String, not a TaskFlowId (currently there is not a formalized TaskFlowId="")  2) the parse() command will NOT work for "".</p>

<p>public class popupDynamicRegion {</p>

<p>    private String taskFlowId = "";<br />
    private String popupTaskFlowId = "/WEB-INF/employee-update.xml#employee-update";<br />
    private String emptyTaskFlowId = "";</p>

<p>    public PopupDynamicRegion() {<br />
    }</p>

<p>    public String getDynamicTaskFlowId() {<br />
        if (taskFlowId != null)<br />
            return taskFlowId;<br />
        else<br />
            return getEmptyTaskFlowId();<br />
    }</p>

<p>    public String getEmptyTaskFlowId() {<br />
        return emptyTaskFlowId;<br />
    }</p>

<p>    public void swapEmptyTaskFlow(ClientEvent event) {<br />
        setDynamicTaskFlowId("");</p>

<p>        // if event delivery set to immediate="true", short-circuit to renderResponse.<br />
        // Forcing an empty taskflow releases the bindings and view port.<br />
        Boolean immediate = (Boolean)event.getParameters().get("immediate");<br />
        if (immediate != null && immediate) {<br />
            FacesContext context = FacesContext.getCurrentInstance();<br />
            context.renderResponse();<br />
        }</p>

<p>        String popupId = (String)event.getParameters().get("popupId");<br />
        System.out.println("**** Swapping Empty Taskflow on popupClosed for " +<br />
                           popupId + " ****");<br />
    }</p>

<p>public void setDynamicTaskFlowId(String newTaskFlowId) {<br />
        taskFlowId = newTaskFlowId;<br />
        <br />
        // For HA Applications<br />
        //if (taskFlowId != null) <br />
        //{<br />
        //  ControllerContext.getInstance().markScopeDirty(pageFlowScope);<br />
        //}<br />
    }<br />
}<br />
</p>]]></description>
         <link>http://blogs.oracle.com/DavidGiammona/2008/11/how_are_empty_regions_implemen.html</link>
         <guid>http://blogs.oracle.com/DavidGiammona/2008/11/how_are_empty_regions_implemen.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">Regions &amp; Dynamic Regions</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">11g</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">ADF</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">Sample Code</category>
        
         <pubDate>Thu, 20 Nov 2008 15:57:38 -0800</pubDate>
      </item>
      
      <item>
         <title><![CDATA[When Are Regions &amp; Dynamic Regions Refreshed?]]></title>
         <description><![CDATA[<p>Regions and dynamic regions are initially refreshed in the ADF Lifecycle prepareModel phase when the binding container of the containing page is refreshed. On subsequent requests, the region or dynamic region will be refreshed during the ADF Lifecycle prepareRender phase depending on its taskFlow binding Refresh and RefreshCondition attributes and parameter values.  Task flow definitions associated with dynamic regions are only switched during the ADF Lifecycle prepareRender phase.</p>

<p>For further information on ADF region taskFlow binding Refresh and RefreshCondition attributes, refer to the <a href="http://download.oracle.com/docs/cd/E12839_01/web.1111/b31974/toc.htm">Fusion Developer’s Guide for ORACLE ADF</a> section 17.1.7 “What You May Need to Know About Refreshing an ADF Region”.<br />
</p>]]></description>
         <link>http://blogs.oracle.com/DavidGiammona/2008/11/when_are_regions_dynamic_regio.html</link>
         <guid>http://blogs.oracle.com/DavidGiammona/2008/11/when_are_regions_dynamic_regio.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">Regions &amp; Dynamic Regions</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">11g</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">ADF</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">ADF Lifecycle</category>
        
         <pubDate>Thu, 20 Nov 2008 14:02:47 -0800</pubDate>
      </item>
      
      <item>
         <title>How Do I Initiate Region Navigation From the Parent Page?</title>
         <description><![CDATA[<p>There are often cases when a page requires some type of interaction with one or more of its regions.  If the interaction depends on application data being shared between the two, typically either input parameters or a &lt;data-control-scope&gt; of "shared" is utilized by the region.  If only a small payload of application data is to be shared without restarting the region, contextual framework events can be used.  But, when a page must initiate control flow navigation within one of its regions the best approach is to utilize the queueActionEventInRegion(...)  method located within the <a href="http://www.oracle.com/technology/products/adf/adffaces/11/doc//adf-richclient-api/apidocs/oracle/adf/view/rich/component/rich/fragment/RichRegion.html#queueActionEventInRegion(javax.el.MethodExpression, javax.el.M">oracle.adf.view.rich.component.rich.fragment.RichRegion</a> class.</p>

<p>To help describe the required development approach, I've created a <a href="http://www.oracle.com/technology/products/adf/patterns/11/QueueActionEventInRegionPatternOTN.pdf">Initiate Control Flow Within Region From Its Parent Page</a> pattern document available on OTN.  It contains a link to download a sample application. The pattern document and sample application also describe how to use region capabilities to enable/disable buttons on the parent page based on the current state of the region.  Just follow the recommended development approach.  It's easy to navigate your way through it.  :)<br />
</p>]]></description>
         <link>http://blogs.oracle.com/DavidGiammona/2008/11/how_do_i_initiate_region_navig_1.html</link>
         <guid>http://blogs.oracle.com/DavidGiammona/2008/11/how_do_i_initiate_region_navig_1.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">Regions &amp; Dynamic Regions</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">11g</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">ADF</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">Pattern</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">Sample Application</category>
        
         <pubDate>Mon, 17 Nov 2008 16:26:50 -0800</pubDate>
      </item>
      
      <item>
         <title><![CDATA[How Do I Include a Region Within an &lt;af:popup&gt;?]]></title>
         <description><![CDATA[<p>Regions can be incorporated into ADF Faces popup content to support tasks requiring complex navigation through a series of pages.  Another important benefit of including regions within ADF Faces popups is content reuse.  These great benefits make ADF Faces popups containing regions a commonly used application development pattern.  </p>

<p>Incorporating regions into &lt;af:popup&gt; content can seem similar to incorporating regions into a page, especially since an &lt;af:popup&gt; is actually considered part of a page.  However, there are some important differences to keep in mind.   Many of these differences are the result of &lt;af:popup&gt; behavior being mainly client-side only.  When a user discloses an &lt;af:popup&gt;, JavaScript on the client unhides the &lt;af:popup&gt; created previously when the page was initially displayed.  When the &lt;af:popup&gt; is dismissed, JavaScipt on the client simply hides the &lt;af:popup&gt; again.  By default in both cases, no event or request is sent to the server to refresh the region content or retrieve data based on the current application state.  If the &lt;af:popup&gt; is displayed a second time, it simply redisplays the &lt;af:popup&gt; content remaining from the previous disclosure.  </p>

<p>The default behavior limitations of &lt;af:popup&gt; content can be overcome quite easily though. To help describe the required development approach, I've created an <a href="http://www.oracle.com/technology/products/adf/patterns/11/popupregionpattern.pdf">Embeding Regions Inside PopUp Windows</a> pattern document available on OTN.  The pattern document also provides a link to download a sample application.  Just follow the simple approach to ensure region content within an &lt;af:popup&gt; is newly refreshed for each launch of the &lt;af:popup&gt;.  Soon you'll be seeing regions popping up all over!</p>

<p><img alt="blogpopupregion.gif" src="http://blogs.oracle.com/DavidGiammona/images/blogpopupregion.gif" width="523" height="361" /></p>]]></description>
         <link>http://blogs.oracle.com/DavidGiammona/2008/11/how_do_i_include_a_region_with_1.html</link>
         <guid>http://blogs.oracle.com/DavidGiammona/2008/11/how_do_i_include_a_region_with_1.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">Regions &amp; Dynamic Regions</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">11g</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">ADF</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">Pattern</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">Sample Application</category>
        
         <pubDate>Mon, 17 Nov 2008 16:10:06 -0800</pubDate>
      </item>
      
      <item>
         <title>Expression Language:  “#” or “$”?</title>
         <description><![CDATA[<p>When looking at the source code of JSF application pages have you ever noticed some EL Expressions might begin with an “#” (e.g.: #{foo.bar}) while others begin with an “$” (e.g.: ${foo.bar}).  If you ever wondered why, check out the following Sun Developer Network article on <a href="http://java.sun.com/products/jsp/reference/techart/unifiedEL.html">Unified Expression Language</a> which does a good job of describing the difference between immediate “$” vs. deferred “#” expression language evaluation.  Typically, ADF applications will utilize the deferred “#” style to evaluate the expression at the appropriate time during the page life cycle.  I guess “$” is not always the answer…  ;)<br />
</p>]]></description>
         <link>http://blogs.oracle.com/DavidGiammona/2008/11/expression_language_or.html</link>
         <guid>http://blogs.oracle.com/DavidGiammona/2008/11/expression_language_or.html</guid>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">ADF</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">JSF</category>
        
         <pubDate>Fri, 14 Nov 2008 16:36:02 -0800</pubDate>
      </item>
      
      <item>
         <title>Introducing the New ADF Declarative Debugger!</title>
         <description><![CDATA[<p>For my very first blog entry (<em>WooHoo!</em>), I want to share with you something NEW and EXCITING in the world of ADF application development.  If you’ve had a chance to download <a href="http://www.oracle.com/technology/software/products/jdev/htdocs/soft11.html">Oracle JDeveloper 11g</a> for a test drive, I’m guessing you’ve already found lots of new and exiting changes.  One you might not have noticed yet is the new ADF Declarative Debugger.  It’s actually built right on top of the existing JDeveloper Java Debugger you already know and love.  That’s great since there might be a little Java debugging needed within your ADF application, too.</p>

<p>The new ADF Declarative Debugger allows you to place breakpoints on task flow activities, page definition bindings, page definition executables, and of course Java source code, too.  When paused at a breakpoint during debugging runtime, several targeted new windows provide the ADF application developer a detailed and intuitive understanding of the application based on ADF runtime objects.  These new ADF Declarative Debugger windows include the following:</p>

<p><strong>ADF Structure Window</strong> - Describes the relationship of ADF runtime objects within the application and specifies detailed content to display within the new ADF Data window.  It provides a fantastic snapshot of what ADF runtime objects are currently in use.  For that reason alone you’ll love it!</p>

<p><img alt="ADF Structure Window" src="http://blogs.oracle.com/DavidGiammona/images/blogADFStructureWindow.gif" width="374" height="285" /></p>

<p><strong>ADF Data Window</strong> - Displays detailed content for the individual ADF runtime object currently selected within the ADF Structure window.  Presents runtime values based on actual ADF objects making locating and understanding the needed information easy and efficient for any ADF application developer.</p>

<p><img alt="blogADFDataWindow.gif" src="http://blogs.oracle.com/DavidGiammona/images/blogADFDataWindow.gif" width="689" height="226" /></p>

<p><strong>EL Evaluator Window</strong> - Provides the ability to evaluate arbitrary EL expressions within the current runtime context.  This window can really help shine a light on many different debugging scenarios.  It’s like a skeleton key you’ll always have in your back pocket.</p>

<p><img alt="ELEvaluatorWindow" src="http://blogs.oracle.com/DavidGiammona/images/blogELEvaluatorWindow.gif" width="635" height="258" /></p>

<p>In future blog entries I'll be showing you more of the very powerful, cool things the ADF Declarative Debugger provides to your ADF application debugging.  Until then, more information about the ADF Declarative Debugger can be found in section 29.5 "Using the ADF Declarative Debugger" of the <a href="http://download.oracle.com/docs/cd/E12839_01/web.1111/b31974/toc.htm">Fusion Developer's Guide for Oracle Application Development Framework</a>.  Your ADF application debugging will never be the same!<br />
</p>]]></description>
         <link>http://blogs.oracle.com/DavidGiammona/2008/11/introducing_the_new_adf_declar_1.html</link>
         <guid>http://blogs.oracle.com/DavidGiammona/2008/11/introducing_the_new_adf_declar_1.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">ADF Declarative Debugger</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">11g</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">ADF</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">Debugging</category>
        
         <pubDate>Fri, 14 Nov 2008 14:20:03 -0800</pubDate>
      </item>
      
   </channel>
</rss>
