|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object atg.nucleus.logging.VariableArgumentApplicationLoggingImpl atg.nucleus.GenericService atg.service.scheduler.SchedulableService atg.service.scheduler.SingletonSchedulableService atg.commerce.order.scheduled.ScheduledOrderService
public class ScheduledOrderService
This class is the back-end service responsible for processsing scheduled orders,
on periodic intervals defined by the property pollSchedule
. The
interval specified begins counting after Dynamo server starts. Therefore, if
Dynamo server is rebooted every 11 hours, and pollSchedule is set to "every 12 hours",
then no orders will ever be placed. A shorter interval might reduce performance,
but it will never cause the situation that some schedule orders will miss being placed
on time.
The method doScheduledTask
is a call-back method which is called
whenever the schedule order is scheduled to be placed. It calls
processDueScheduledOrders
to process any due schedule orders. Other objects
can also call this method to trigger a poll on demand. The method peformScheduledTask
will poll the order repository defined by property orderReposiotry
with the repository view of itemDescriptorName
. The poll query is defined by the
property pollQuery
. All the scheduled orders returned are processed individually which
is sent to the fullfiller for processing, and the nextScheduledRun
property
is updated to reflect the next time the order should be placed. If something wrong happens when
proocessing an individual schedule order, an CommerceException will be thrown and the other schedule
orders are processed without any impact.
In an error condition, the state of the scheduled order is changed to
PENDING_CUSTOMER_ACTION
.
Field Summary | |
---|---|
static java.lang.String |
CLASS_VERSION
Class version string |
protected static java.util.ResourceBundle |
sResourceBundle
Resource Bundle |
Fields inherited from class atg.service.scheduler.SchedulableService |
---|
mJobId |
Fields inherited from class atg.nucleus.GenericService |
---|
SERVICE_INFO_KEY |
Fields inherited from interface atg.nucleus.logging.TraceApplicationLogging |
---|
DEFAULT_LOG_TRACE_STATUS |
Fields inherited from interface atg.nucleus.logging.ApplicationLogging |
---|
DEFAULT_LOG_DEBUG_STATUS, DEFAULT_LOG_ERROR_STATUS, DEFAULT_LOG_INFO_STATUS, DEFAULT_LOG_WARNING_STATUS |
Constructor Summary | |
---|---|
ScheduledOrderService()
Constructs an empty ScheduledOrderService |
Method Summary | |
---|---|
protected java.sql.Timestamp |
calculateNextScheduledRun(MutableRepositoryItem pScheduledOrderItem)
Calculates the next scheduled run time for a scheduled order item |
void |
doScheduledTask(Scheduler pScheduler,
ScheduledJob pScheudledJob)
This method is a call-back method. |
atg.commerce.order.scheduled.ScheduledOrderThreadDispatcher |
getDispatcher()
Returns a dispatcher for multi-threaded processing. |
java.lang.String |
getItemDescriptorName()
Returns property ItemDescriptorName |
int |
getMaxThreads()
Returns the maximum number of threads to use for processing orders. |
protected long |
getNextScheduledRun(MutableRepositoryItem pItem,
long pLastRun)
This method calculates the next schedule run time for the Scheduled Order. |
OrderManager |
getOrderManager()
Returns property OrderManager |
MutableRepository |
getOrderRepository()
Returns property OrderRepository |
RqlStatement |
getPollQuery()
Returns property PollQuery. |
ScheduledOrderTools |
getScheduledOrderTools()
Returns property ScheduledOrderTools |
javax.transaction.TransactionManager |
getTransactionManager()
Returns property TransactionManager |
protected void |
placeScheduledOrder(MutableRepositoryItem pScheduledOrder)
This method places the Scheduled Order by first retrieving the template order for this Scheduled Order, then cloning it and repricing the cloned order. |
protected RepositoryItem[] |
pollForNewOrders()
This method polls the Schedule Order Repository based on the defined query and returns an array of found scheduled orders which should be run. |
protected void |
processDueScheduledOrder(RepositoryItem pItem)
This method processes each individual Scheduled Order and if sucessfully processing it, set the next Schedule time for the Scheduled Order. |
protected void |
processDueScheduledOrders()
This method finds the due Scheduled Orders and processes each one individually. |
protected void |
repriceScheduledOrder(Order pScheduledOrder,
Order pTemplateOrder,
RepositoryItem pProfile,
java.util.Locale pLocale)
This method reprices the Schedule Order |
protected void |
repriceScheduledOrder(Order pScheduledOrder,
RepositoryItem pProfile,
java.util.Locale pLocale)
Deprecated. |
void |
setItemDescriptorName(java.lang.String pItemDescriptorName)
Sets property ItemDescriptorName |
void |
setMaxThreads(int pMaxThreads)
Sets the maximum number of threads to use for processing orders. |
void |
setOrderManager(OrderManager pOrderManager)
Sets property OrderManager |
void |
setOrderRepository(MutableRepository pOrderRepository)
Sets property OrderRepository |
void |
setPollQuery(RqlStatement pPollQuery)
Sets property PollQuery |
void |
setScheduledOrderTools(ScheduledOrderTools pScheduledOrderTools)
Sets property ScheduledOrderTools |
Methods inherited from class atg.service.scheduler.SingletonSchedulableService |
---|
acquireLock, getClientLockManager, getLockName, getLockTimeOut, performScheduledTask, releaseLock, setClientLockManager, setLockName, setLockTimeOut |
Methods inherited from class atg.service.scheduler.SchedulableService |
---|
doStartService, doStopService, getJobDescription, getJobId, getJobName, getSchedule, getScheduler, getThreadMethod, isTransactional, setJobDescription, setJobName, setSchedule, setScheduler, setThreadMethod, setTransactional, startScheduledJob, stopScheduledJob |
Methods inherited from class atg.nucleus.logging.VariableArgumentApplicationLoggingImpl |
---|
vlogDebug, vlogDebug, vlogDebug, vlogDebug, vlogError, vlogError, vlogError, vlogError, vlogInfo, vlogInfo, vlogInfo, vlogInfo, vlogTrace, vlogTrace, vlogTrace, vlogTrace, vlogWarning, vlogWarning, vlogWarning, vlogWarning |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static java.lang.String CLASS_VERSION
protected static java.util.ResourceBundle sResourceBundle
Constructor Detail |
---|
public ScheduledOrderService()
Method Detail |
---|
public java.lang.String getItemDescriptorName()
public void setItemDescriptorName(java.lang.String pItemDescriptorName)
pItemDescriptorName
- the value to set for property ItemDescriptorNamepublic MutableRepository getOrderRepository()
public void setOrderRepository(MutableRepository pOrderRepository)
pOrderRepository
- the value to set for property OrderRepositorypublic void setOrderManager(OrderManager pOrderManager)
pOrderManager
- the value to set for property OrderManagerpublic OrderManager getOrderManager()
public void setScheduledOrderTools(ScheduledOrderTools pScheduledOrderTools)
pScheduledOrderTools
- the value to set for property ScheduledOrderToolspublic ScheduledOrderTools getScheduledOrderTools()
public RqlStatement getPollQuery()
public void setPollQuery(RqlStatement pPollQuery)
pPollQuery
- the value to set for property PollQuerypublic int getMaxThreads()
public void setMaxThreads(int pMaxThreads)
pMaxThreads
- the maximum number of threads to use for processing
orders. A value of 2 or more enables multi-threading.public atg.commerce.order.scheduled.ScheduledOrderThreadDispatcher getDispatcher()
public javax.transaction.TransactionManager getTransactionManager()
public void doScheduledTask(Scheduler pScheduler, ScheduledJob pScheudledJob)
doScheduledTask
in class SingletonSchedulableService
pScheduler
- the Scheduler which manages all the Scheduled jobspScheduledJob
- the job which will be runprotected RepositoryItem[] pollForNewOrders() throws RepositoryException
RepositoryException
- if an error occurs accessing the repositoryprotected void processDueScheduledOrders()
protected void repriceScheduledOrder(Order pScheduledOrder, RepositoryItem pProfile, java.util.Locale pLocale) throws CommerceException
pScheduledOrder
- the Scheduled Order to be repricedpProfile
- the Profile of the current userpLocale
- the locale of the current user
CommerceException
- thrown if any of the Commerce related error occurs
RepositoryException
- if an error is found when accessing the repositoryprotected void repriceScheduledOrder(Order pScheduledOrder, Order pTemplateOrder, RepositoryItem pProfile, java.util.Locale pLocale) throws CommerceException
pScheduledOrder
- the Scheduled Order to be repricedpTemplateOrder
- the Template Order from which the scheduled order was created.pProfile
- the Profile of the current userpLocale
- the locale of the current user
CommerceException
- thrown if any of the Commerce related error occurs
RepositoryException
- if an error is found when accessing the repositoryprotected void processDueScheduledOrder(RepositoryItem pItem)
pItem
- the RepositoryItem that identifies the Schedule Orderprotected java.sql.Timestamp calculateNextScheduledRun(MutableRepositoryItem pScheduledOrderItem) throws CommerceException
For CalendarSchedules the current time is given to the schedule object as the basis for determining the next run time.
For PeriodicSchedules, the current value of the scheduled order item's nextRunTime, which is effectively the last run time, is provided as the basis for determining the next run time.
pScheduledOrderItem
-
CommerceException
CalendarSchedule.getNextJobTime(long)
,
PeriodicSchedule.getNextJobTime(long)
protected void placeScheduledOrder(MutableRepositoryItem pScheduledOrder) throws CommerceException, RepositoryException, atg.multisite.SiteContextException
pScheduledOrder
- the Scheduled Order to be placed
CommerceException
- thrown if any of the Commerce related error occurs
RepositoryException
- if an error is found when accessing the repository
atg.multisite.SiteContextException
ScheduledOrderTools
protected long getNextScheduledRun(MutableRepositoryItem pItem, long pLastRun) throws CommerceException
pItem
- the Scheduled OrderpLastRun
- the last running time
CommerceException
- thrown if any of the Commerce related error occurs
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |