Author: buildbot
Date: Wed Nov 19 10:45:41 2014
New Revision: 929760

Log:
Staging update by buildbot for isis

Modified:
    websites/staging/isis/trunk/cgi-bin/   (props changed)
    websites/staging/isis/trunk/content/   (props changed)
    websites/staging/isis/trunk/content/intro/tutorials/apacheconeu-2014.html

Propchange: websites/staging/isis/trunk/cgi-bin/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Wed Nov 19 10:45:41 2014
@@ -1 +1 @@
-1640512
+1640519

Propchange: websites/staging/isis/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Wed Nov 19 10:45:41 2014
@@ -1 +1 @@
-1640512
+1640519

Modified: 
websites/staging/isis/trunk/content/intro/tutorials/apacheconeu-2014.html
==============================================================================
--- websites/staging/isis/trunk/content/intro/tutorials/apacheconeu-2014.html 
(original)
+++ websites/staging/isis/trunk/content/intro/tutorials/apacheconeu-2014.html 
Wed Nov 19 10:45:41 2014
@@ -962,38 +962,77 @@ mvn clean install
 <li>write a domain service subscriber to subscribe to events</li>
 <li>use the domain service to perform log events</li>
 <li>use the domain service to veto actions (hide/disable or validate)</li>
-<li>Bulk actions</li>
+<li>Bulk actions (and the ScratchPad)</li>
 </ul>
 
 <p>Bulk actions are actions that can be invoked on a collection of actions, 
that is on collections returned by invoking an action.  Actions are specified 
as being bulk actions using the <a 
href="http://isis.apache.org/reference/recognized-annotations/Bulk.html";>@Bulk</a>
 annotation.  Note that currently (1.8.0-SNAPSHOT) only no-arg actions can be 
specified as bulk actions.</p>
 
 <ul>
-<li>Write a no-arg action for your domain entity </li>
-<li>Inject the <a 
href="http://isis.apache.org/reference/services/bulk-interaction.html";>Bulk.InteractionContext</a>
 service and use this to </li>
+<li>Write a no-arg action for your domain entity, annotate with 
<code>@Bulk</code></li>
+<li>Inject the <a 
href="http://isis.apache.org/reference/services/bulk-interaction.html";>Bulk.InteractionContext</a>
 (request-scoped) service</li>
+<li>Use the <code>Bulk.InteractionContext</code> service to determine whether 
the action was invoked in bulk or as a regular action.
+<ul>
+<li>return null if invoked as a bulk action; the Wicket viewer will go back to 
the original collection</li>
+<li>(if return non-null, then Wicket viewer will navigate to the object of the 
last invocation... generally not what is required)</li>
+</ul></li>
 </ul>
 
-<h2>Performance tuning</h2>
+<p>The similar <a 
href="http://isis.apache.org/reference/services/scratchpad.html";>ScratchPad</a> 
(request-scoped) domain service is a good way to share information between bulk 
action invocations:</p>
 
-<p>TODO</p>
+<ul>
+<li>Inject the [ScratchPad] domain service</li>
+<li>for each action, store state (eg a running total)</li>
+<li>In the last invoked bulk action, perform some aggregate processing (eg 
calculate the average) and return</li>
+</ul>
+
+<h2>Performance tuning (optional)</h2>
+
+<p>The <a 
href="http://isis.apache.org/reference/services/query-results-cache.html";>QueryResultsCache</a>
 (request-scoped) domain service allows arbitrary objects to be cached for the 
duration of a request.</p>
 
+<p>This can be helpful for "naive" code which would normally make the same 
query within a loop.  </p>
+
+<ul>
+<li>optional: inject the <code>QueryResultsCache</code> service, invoke 
queries "through" the cache API
 <ul>
-<li>QueryResultsCache</li>
-<li>Scratchpad Services</li>
+<li>remember that the service is request-scoped, so it only really makes sense 
to use this service for code that invokes queries within a loop</li>
+</ul></li>
 </ul>
 
 <h2>Extending the Wicket UI</h2>
 
+<p>Each element in the Wicket viewer (entity form, properties, collections, 
action button etc) is a component, each created by a internal API 
(<code>ComponentFactory</code>, described <a 
href="http://isis.apache.org/components/viewers/wicket/customizing-the-viewer.html";>here</a>).
  For collections there can be multiple views, and the Wicket viewer provides a 
view selector drop down (top right of each collection panel).</p>
+
+<p>Moreover, we can add additional views.  In this section we'll explore some 
of these, already provided through <a href="http://www.isisaddons.org/";>Isis 
addons</a>.</p>
+
 <h3>Excel download</h3>
 
-<p>TODO</p>
+<p>The <a href="https://github.com/isisaddons/isis-wicket-excel";>Excel 
download add-on</a> allows the collection to be downloaded as an Excel 
spreadsheet (<code>.xlsx</code>).</p>
+
+<ul>
+<li>Use the instructions on the add-on module's README  to add in the excel 
download module (ie: update the POM).</li>
+</ul>
 
 <h3>Fullcalendar2</h3>
 
-<p>TODO</p>
+<p>The <a 
href="https://github.com/isisaddons/isis-wicket-fullcalendar2";>Fullcalendar2 
download add-on</a> allows entities to be rendered in a full-page calendar.</p>
+
+<ul>
+<li>Use the instructions on the add-on module's README  to add in the 
fullcalendar2 module (ie: update the POM).</li>
+<li>on one of your entities, implement either the 
<code>CalendarEventable</code> interface or the (more complex) 
<code>Calendarable</code> interface.</li>
+<li>update fixture scripts to populate any new properties</li>
+<li>when the app is run, a collection of the entities should be shown within a 
calendar view</li>
+</ul>
 
 <h3>gmap3</h3>
 
-<p>TODO</p>
+<p>The <a href="https://github.com/isisaddons/isis-wicket-gmap3";>Gmap3 
download add-on</a> allows entities that implement certain APIs to be rendered 
in a full-page gmap3.</p>
+
+<ul>
+<li>Use the instructions on the add-on module's README to add in the gmap3 
module (ie: update the POM).</li>
+<li>on one of your entities, implement the <code>Locatable</code> 
interface</li>
+<li>update fixture scripts to populate any new properties</li>
+<li>when the app is run, a collection of the entities should be shown within a 
map view</li>
+</ul>
 
 <h2>Add-ons</h2>
 


Reply via email to