Hi Igor, just looking into this now and reminding myself of what the design was...
... did you look into using BackgroundCommandExecution, rather than AbstractIsisSessionTemplate (of which it is a subclass?) This will initialize the parent command for you, I think. The BackgroundCommandExecutionFromBackgroundCommandServiceJdo in turn is a concrete implementation which you could have Quartz call every 30 seconds or so. There's actually an example QuartzJob at [1] HTH Dan [1] https://isis.apache.org/guides/rgsvc.html#_rgsvc_api_BackgroundService_BackgroundCommandExecution On 9 April 2016 at 18:46, Dan Haywood <[email protected]> wrote: > Thanks Igor, > > I'll do my best to take a look tomorrow. > > Dan > > > On 9 April 2016 at 18:45, Igor Lobanov <[email protected]> wrote: > >> I've created simple project demonstrating the behaviour: >> https://github.com/lobanov/apache-isis-bug1 >> >> README.md provides a sequence of steps required to reproduce the >> behaviour, hopefully it is clear enough. >> >> -- Best regards, Igor Lobanov >> >> >> On Saturday, 9 April 2016, 16:21, Dan Haywood < >> [email protected]> wrote: >> >> >> >> Just use the simpleapp archetype and add in the minimal amount of stuff >> needed to demonstrate the issue. >> Thx, >> Dan >> On 9 Apr 2016 16:05, "Igor Lobanov" <[email protected]> >> wrote: >> >> Sure, although I need an advice on how to best approach it. Is there an >> easy way of bootstrapping Isis as a standalone app using HSQL or something >> similar? >> -- Best regards, Igor Lobanov >> >> On Saturday, 9 April 2016, 15:33, Dan Haywood < >> [email protected]> wrote: >> >> >> >> That does sound like an issue. Probably the issue is in the addons >> implementation rather than in Isis "proper", so will a bit easier to >> release a fix if that is a problem. >> >> Could you put together a simple example on github that demonstrates the >> problem, and document on its README how to reproduce? >> >> Thx, >> Dan. >> On 9 Apr 2016 15:28, "Igor Lobanov" <[email protected]> >> wrote: >> >> All, >> I am running business logic in background using Quartz. To that end I am >> extending AbstractIsisSessionTemplate in my job classes and overriding >> doExecuteWithTransaction() to do something useful, so far so good. Now I >> need to schedule some actions to be executed in the background outside the >> main scheduled job. This is because spawned tasks themselves may fail, but >> it must not cause the main job to fail as well. >> The project makes use of isis-module-command addon to schedule background >> commands from the UI, so I went on and wrote a logic that calls >> BackgroundService#execute(...) in the job code. Apparently this doesn't >> work, as I'm getting a few 'cannot insert null into non-null column' when >> CommandJdo INSERTs are being flushed. It is difficult for me to work out >> what the problem is by reading the code, but it seems that >> BackgroundService#execute(...) assumes invocation from the context of >> another parent command, which apparently is not so when the code is >> running >> in a background thread. >> >> Ideally, I want to make use of BackgroundService#execute(...) rather than >> building something custom. Is there a particular way to invoke it from a >> background thread aside from >> AbstractIsisSessionTemplate#doExecuteWithTransaction()? Do I need to >> 'spoof' a parent command somehow? I would appreciate any suggestion. >> -- Best regards, Igor Lobanov >> >> >> >> >> >> >> >> >
