Create a new java class SendRankingJob in the package de/hybris/platform/cuppytrail/jobs:
/* * [y] hybris Platform * * Copyright (c) 2000-2011 hybris AG * All rights reserved. * * This software is the confidential and proprietary information of hybris * ("Confidential Information"). You shall not disclose such Confidential * Information and shall use it only in accordance with the terms of the * license agreement you entered into with hybris. * * */package de.hybris.platform.cuppytrail.jobs;import de.hybris.platform.cronjob.enums.CronJobResult;import de.hybris.platform.cronjob.enums.CronJobStatus;import de.hybris.platform.cronjob.model.CronJobModel;import de.hybris.platform.cuppy.model.PlayerModel;import de.hybris.platform.cuppy.services.MailService;import de.hybris.platform.cuppy.services.PlayerService;import de.hybris.platform.cuppy.services.RankingData;import de.hybris.platform.servicelayer.cronjob.AbstractJobPerformable;import de.hybris.platform.servicelayer.cronjob.PerformResult;import java.util.List;import org.apache.log4j.Logger;public class SendRankingJob extends AbstractJobPerformable<CronJobModel>{ private static final Logger LOG = Logger.getLogger(SendRankingJob.class); private PlayerService playerService; private MailService mailService; @Override public PerformResult perform(final CronJobModel cronJob) { LOG.info("Sending ranking mails"); final List<RankingData> rankings = playerService.getRankings(); if (rankings.isEmpty()) { LOG.info("No competitions have changed, skipping send of ranking mails"); return new PerformResult(CronJobResult.SUCCESS, CronJobStatus.FINISHED); } for (final PlayerModel player : playerService.getAllPlayers()) { final List<RankingData> playerRankings = playerService.filterRankingsForPlayer(rankings, player); if (!playerRankings.isEmpty() && player.isSendNewsletter()) { mailService.sendRankingMail(player, playerRankings); } } return new PerformResult(CronJobResult.SUCCESS, CronJobStatus.FINISHED); } public void setPlayerService(final PlayerService playerService) { this.playerService = playerService; } public void setMailService(final MailService trailMailService) { this.mailService = trailMailService; }} |
The new JobPerformable has to be defined as a Spring bean in cuppytrail-spring.xml.
Add the following line at the bottom of the file, but inside the beans-tag:
<bean id="sendRankingJob" class="de.hybris.platform.cuppytrail.jobs.SendRankingJob" autowire="byName"/> |
Rebuild the hybris Platform by calling ant in the $/{HYBRIS_BIN_DIR}/platform directory.
Run a system update with only essential data checked - during the phase of essential data creation, for each Spring definition of a class implementing the JobPerformable interface, a ServicelayerJob instance gets created and the code attribute of the job is set to the name of the Spring bean.
You can check in the FlexibleSearch console: http://localhost:9001/console/flexsearch that the new item was created by executing the following query:
select {code} from {servicelayerjob} where {code} = ‘sendRankingJob‘
To create the CronJob and the Trigger, you can either:
You can go in the hybris Admin Console to the Console tab select ImpEx Import and execute the following impex-script there by clicking on the Import Content button
INSERT_UPDATE CronJob; code[unique=true];job(code);singleExecutable;sessionLanguage(isocode);sendRankingCronJob;sendRankingJob;false;deINSERT_UPDATE Trigger;cronjob(code)[unique=true];cronExpression#% afterEach: impex.getLastImportedItem().setActivationTime(new Date());; sendRankingCronJob; 0 0 0 * * ? |
A cron expression is a string comprised of 6 or 7 fields separated by white space. Fields can contain any of the allowed values, along with various combinations of allowed special characters for that field.
|
Seconds |
YES |
0-59 |
, - * / |
|
Minutes |
YES |
0-59 |
, - * / |
|
Hours |
YES |
0-23 |
, - * / |
|
Day of month |
YES |
1-31 |
, - * ? / L W |
|
Month |
YES |
1-12 or JAN-DEC |
, - * / |
|
Day of week |
YES |
1-7 or SUN-SAT |
, - * ? / L # |
|
Year |
NO |
empty, 1970-2099 |
, - * / |
Quartz cron trigger is used, see Quartz Scheduler for more details.
Any changes you are making for testing can easily be redeployed or reexecuted.
原文:http://www.cnblogs.com/wahaha603/p/7262638.html