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>