[
https://issues.apache.org/jira/browse/ISIS-661?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13886399#comment-13886399
]
ASF subversion and git services commented on ISIS-661:
------------------------------------------------------
Commit b99640031fd05002aefa455b201eff37656f1776 in branch refs/heads/master
from [~danhaywood]
[ https://git-wip-us.apache.org/repos/asf?p=isis.git;h=b996400 ]
ISIS-660,ISIS-661,ISIS-662,ISIS-663: background tasks and similar
ISIS-660:
- consistent pattern of services vs repository vs contributions for
each of interactions, background tasks, published events and audit entry
- refactored todo app, introducing new Admin service that delegates
- InteractionOutcome and InteractionOutcome.Type, capture any exception
- Interaction.Nature
- HasTransaction now defines transactionId property as a UUID, not a String
- can now use UUID as a @PrimaryKey (used by the HasTransaction implementations)
ISIS-661: BackgroundTask contributions service
ISIS-662: PublishedEvent contributions service
ISIS-663: AuditEntry contributions service
> BackgroundService and BackgroundTaskService as a way of creating mementos to
> execute jobs asynchronously
> --------------------------------------------------------------------------------------------------------
>
> Key: ISIS-661
> URL: https://issues.apache.org/jira/browse/ISIS-661
> Project: Isis
> Issue Type: New Feature
> Components: Core, Objectstore: JDO
> Affects Versions: objectstore-jdo-1.3.0, core-1.3.0
> Reporter: Dan Haywood
> Assignee: Dan Haywood
> Fix For: objectstore-jdo-1.4.0, core-1.4.0
>
>
> BackgroundService is the service that creates the mementos, with a default
> implementation in isis-core.
> usage:
> public void submitInvoices() {
> for(Customer customer: customerRepository.findCustomersToInvoice()) {
> backgroundService.execute(customer).submitInvoice();
> }
> }
>
> @javax.inject.Inject
> private BackgroundService backgroundService;
> Here the service creates a javassist proxy through which it can figure out
> the arguments. The MementoService and BookmarkService can be used to create
> the memento string (XML).
> ~~~~~~~~~~~~~
> BackgroundTaskService is the service that persists the mementos, with a
> default implementation in objectstore-jdo. Each persisted BackgroundTask
> should be associated with the transactionId of the Interaction (see ISIS-660).
> ~~~~
> also:
> - require separate "contributions" service to add in the BackgroundTask
> collection to the Interaction.
> ~~~~
> NB: the docs should indicate that an alternative implementation for
> BackgroundTaskService could be webhooks. Per Maurizio's comment:
> a web hook is basically an HTTP callback
> An example of web hook is available on the Google infrastructure, where task
> longer than 30 sec. are not allowed.
> This is similar to your idea of background service:
> public void calculateInvoices() {
> for(Customer customer: customerRepository.findCustomersToInvoice()) {
> Queue queue = QueueFactory.getDefaultQueue();
> queue.add(withUrl("/worker").param("id", customer.getId()));
> }
> }
> Tasks added to the queue will execute by calling the request handler at the
> URL /worker with the parameter id at a given task rate.
> https://developers.google.com/appengine/docs/java/taskqueue/overview-push
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)