Description
For example, if an end-user submits a long-running job, then the action should acknowledge the request. When the job completes then we should provide a mechanism to notify the user (if they are using the system).
~~~~~~~~
(Jul 2015, Dan):
One likely technology will be web sockets or Atmosphere; Wicket integrates with both.
(Oct 2016, Martin on mailing list suggested):
The simplest way is to use AbstractTimerAjaxBehavior/AjaxSelfUpdatingBehavior. This would do polling,
i.e. every N seconds an Ajax call will be made to check whether there is new data to show.
If you need to do server push, i.e. whenever new data comes to push it immediately to the client then I'd suggest Wicket Native WebSocket instead of Atmosphere. Nowadays all browsers support WebSocket (IE10+ and all others) and almost everyone deploys on web server that support JSR 356 - https://ci.apache.org/projects/wicket/guide/7.x/guide/nativewebsockets.html.
It's usage is as easy as Wicket Ajax.
Another option is Server Send Events (https://github.com/wicketstuff/core/tree/master/wicket-html5-parent/wicket-html5)
demo: https://github.com/wicketstuff/core/tree/master/wicket-html5-parent/wicket-html5-examples/src/main/java/org/wicketstuff/html5/eventsource
~~~~~~~~~~~~
One possible design is a persisted entity to hold the messages, keyed by (username, datetime). We could then have a service that a completing action could call, to save the message.
This service could check if the user is currently logged on, and if so could notify the user via Atmosphere or similar.
I also think it might be nice if the Wicket UI could provide a way for the user to view the last 5 (say) messages, a bit like a notificatoin center. I think that Mac does this, and Windows 10 will do, Thus, if the user is not logged on when the job completes, then we can still bring the notification message to their attention when they next log on.
Perhaps this could be added as a button on the footer bar? And/or the messages could slide in from this footer bar. (This is the way that the MS Azure portal works, and it's not too unpleasant).