Ich versuche, einen regelmäßigen Bericht Job einzurichten. Der Bericht muss ohne Benutzerinteraktion erstellt werden und der Job muss beim Start der Anwendung geplant werden.Apache ISIS Call-Aktion programmgesteuert
Ich habe den Hintergrund Service und Scheduler arbeiten. Wenn ich die createReport-Aktion als eine Schaltfläche in der Benutzeroberfläche verfügbar mache, wird ein Bericht erstellt, wenn der Job das nächste Mal ausgelöst wird. Dieser Bericht muss jedoch wiederholt und ohne Benutzerinteraktion erstellt werden.
Ich denke, die Frage ist, wie programmgesteuert eine Aktion aufrufen? Das Verschieben von createReport() in einen Domänenservice und das Aufrufen in einer annotierten Methode @PostConstruct führt zu einer Ausnahme (versucht, den Befehl für IsisCommand beizubehalten). Ich vermute, dass ich einen Kontext für die Aktion aufrufen muss? Oder nähere ich mich dem in die falsche Richtung? Vielen Dank!
@Action(command = CommandReification.ENABLED,
commandExecuteIn=CommandExecuteIn.BACKGROUND)
public Command createReport() {
backgroundService.execute(this).generateReport();
return commandContext.getCommand();
}
@Programmatic
public void generateReport() {
....
}
Vielen Dank! Genau die Informationen, die ich brauchte. Ging mit dem zweiten Ansatz und es funktioniert gut. – user5806139