public class UserRetrievePerformable extends AbstractJobPerformable<UserRetrieveJobModel>
{
private static final Logger LOG = Logger.getLogger(UserRetrievePerformable.class);
@Autowired
TotalCustomerFacade totalCustomerFacade;
@Override
public PerformResult perform(UserRetrieveJobModel userRetrieveJobModel) {
LOG.info("**********************************");
LOG.info("Greeting from MyJobPerformable!!!");
LOG.info("**********************************");
return new PerformResult(CronJobResult.SUCCESS, CronJobStatus.FINISHED);
}
我想让这个工作把参数作为字符串。
我该怎么做?根据春季文档,它无法完成。但必须有另一种方式吗?
当我从后台或某处给出字符串时,job会给输出字符串吗?
答案 0 :(得分:1)
您必须创建一个新类型,该类型使用新的字符串属性扩展CronJobModel,该属性稍后保存参数值。 然后,您可以在运行作业之前从后台更改参数值。
您可以按照此分步教程获取更多信息: https://www.stackextend.com/hybris/everything-about-cronjobs-in-hybris-part-2/
答案 1 :(得分:0)
我想你可能会混淆Job和CronJob。工作是应该完成的任务。 CronJob是该任务的单个执行。因此,如果要执行Job,则必须创建CronJob的实例。您可以通过选择正确的Job实例来定义CronJob应执行的任务。启动此CronJob时,将使用CronJob作为参数调用相应的AbstractJobPerformable类的perform方法。
那么如何为执行创建参数?创建CronJob类型的子类型,并将所有需要的参数添加为属性。然后,当您创建CronJob时,相应地设置所有属性。在perform方法中,您可以访问该CronJob实例的属性。
您可以像这样创建CronJob:
HelloWorldCronJobModel cronJob = modelService.create(HelloWorldCronJobModel.class);
JobModel myJob = cronJobService.getJob("myJob");
cronJob.setJob(myJob);
// Add own attribute to Job
cronJob.setGreetedPerson("John Doe");
modelService.save(cronJob);
cronJobService.performCronJob(cronJob);
调用perform方法时,请访问属性:
@Override
public PerformResult perform(MyCronJobModel myCronJob) {
LOG.info("Hello " + myCronJob.getGreetedPerson());
return new PerformResult(CronJobResult.SUCCESS, CronJobStatus.FINISHED);
}