package org.sakaiproject.api.app.scheduler;
import org.sakaiproject.time.api.Time;
public interface ScheduledInvocationManager {
/**
* Creates a new delayed invocation and returns the unique id of the created invocation
*
* @param time the date and time the method will be invoked
* @param componentId the unique name of a bean in the bean factory which implements
* command pattern DelayedInvocationCommand
* @param opaqueContext the key which the tool can use to uniquely identify some
* entity when invoked; i.e. the context
* @return unique id of a delayed invocation
*/
public String createDelayedInvocation(Time time, String componentId, String opaqueContext);
/**
* Remove a future scheduled invocation by its unique id
*
* @param uuid unique id of a delayed invocation
*/
public void deleteDelayedInvocation(String uuid);
/**
* Remove future scheduled invocations by the component and/or context,
* can specify both items, just a component or just a context, or even leave both
* as empty strings to remove all future invocations
*
* @param componentId the unique name of a bean in the bean factory which implements
* command pattern DelayedInvocationCommand, may be empty string to match any component
* @param opaqueContext the key which the tool can use to uniquely identify some
* entity when invoked; i.e. the context, may be empty string to match any context
*/
public void deleteDelayedInvocation(String componentId, String opaqueContext);
/**
* Find future scheduled invocations by the component and/or context,
* can specify both items, just a component or just a context, or even leave both
* as empty strings to find all future invocations
*
* @param componentId the unique name of a bean in the bean factory which implements
* command pattern DelayedInvocationCommand, may be empty string to match any component
* @param opaqueContext the key which the tool can use to uniquely identify some
* entity when invoked; i.e. the context, may be empty string to match any context
* @return an array of {@link DelayedInvocation} objects representing all scheduled
* invocations which match the inputs
*/
public DelayedInvocation[] findDelayedInvocations(String componentId, String opaqueContext);
}