我正在尝试设置定期报告工作。该报告应在没有用户交互的情况下创建,并且应在应用程序启动时安排作业。
我有后台服务和调度程序工作。如果我将 createReport 操作公开为 UI 中的按钮,则下次触发作业时会创建一个报告。但是,我需要在没有用户交互的情况下重复创建此报告。
我想问题是如何以编程方式调用一个动作?将 createReport() 移动到域服务并在 @PostConstruct 注释方法中调用它会产生异常(尝试将命令持久化到 IsisCommand)。我猜我必须为动作调用提供某种上下文?还是我以错误的方式接近这个?谢谢!
@Action(command = CommandReification.ENABLED,
commandExecuteIn=CommandExecuteIn.BACKGROUND)
public Command createReport() {
backgroundService.execute(this).generateReport();
return commandContext.getCommand();
}
@Programmatic
public void generateReport() {
....
}