[ https://issues.apache.org/jira/browse/ISIS-661?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13887617#comment-13887617 ]
ASF subversion and git services commented on ISIS-661: ------------------------------------------------------ Commit 49c7c05dd57be56f6d272329c3a4693a996d8a09 in branch refs/heads/master from [~danhaywood] [ https://git-wip-us.apache.org/repos/asf?p=isis.git;h=49c7c05 ] ISIS-657,ISIS-660,ISIS-661,ISIS-662,ISIS-663,ISIS-667,ISIS-668,ISIS-670: JDO services ISIS-657: - appsettings / usersettings entities also now use "Isis" as prefix to table names ISIS-660: - renamed InteractionFactory to InteractionService - renamed InteractionRepository to InteractionServiceJdoRepository - InteractionDefault and InteractionJdo now have a next() method, to create sequences of numbers (as used to generate the PKs for PublishedEventJdo and BackgroundTaskJdo, see below) - Interaction#startedAt renamed to Interaction#timestamp (and #startedAt now a derived property) - Interaction now defines a #transactionId property - IsisTransaction now picks up its transactionId from passed-in Interaction object (if available) - and defers to Interaction for generation of next pub/sub event sequence if it can (else previous behaviour) - IsisTransaction#guidId renamed to #transactionId ISIS-661: (background service mementos, background task service) - renamed BackgroundTaskContributions to BackgroundTaskServiceJdoContributions - renamed BackgroundTaskRepository to BackgroundTaskServiceJdoRepository ISIS-662: published events contributions - renamed PublishedEventRepository to PublishingServiceJdoRepository - renamed PublishedEventContributions to PublishingServiceJdoContributions ISIS-663: audit entry contributions - rename AuditEntryCountributions to AuditingServiceJdoContributions - rename AuditEntryRepository to AuditingServiceJdoRepository ISIS-667: - added JdoColumnLength as central location for standard column lengths of JDO entities - renamed AuditEntry to AuditEntryJdo - renamed PublishedEvent to PublishedEventJdo - changed PK for PublishedEventJdo entity to be application-defined: (transactionId,sequence) - change to datatype of some PublishedEventJDO entities - changed PK for BackgroundTaskJdo entity to be application-defined: (transactionId,sequence) - factored out Util class for JDO entities - renamed UserSettingPrimaryKey to UserSettingJdoPK ISIS-668: - improvements to ServicesInstallerFromConfiguration - improved formatting of isis.properties in the todo app & simple app ISIS-670: - removed AuditingService, AuditingService2 APIs - introduced replacement AuditingService3 API > 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)