# Interface ScheduledApplication

public interface ScheduledApplication
It is allowed to schedule an application based on a specific event. ScheduledApplication service keeps the schedule information. When the specified event is fired a new instance must be launched. Note that launching operation may fail because e.g. the application is locked.

Each `ScheduledApplication` instance has an identifier which is unique within the scope of the application being scheduled.

`ScheduledApplication` instances are registered as services. The `APPLICATION_PID` service property contains the PID of the application being scheduled, the `SCHEDULE_ID` service property contains the schedule identifier.

Version:
  $Id: 5b4ce82435a4da91ff15fdf36e42fe511530aef8 $

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`APPLICATION_PID`
The property key for the identifier of the application being scheduled.
`static final String`
`DAY_OF_MONTH`
The name of the day of month attribute of a virtual timer event.
`static final String`
`DAY_OF_WEEK`
The name of the day of week attribute of a virtual timer event.
`static final String`
`HOUR_OF_DAY`
The name of the hour of day attribute of a virtual timer event.
`static final String`
`MINUTE`
The name of the minute attribute of a virtual timer event.
`static final String`
`MONTH`
The name of the month attribute of a virtual timer event.
`static final String`
`SCHEDULE_ID`
The property key for the schedule identifier.
`static final String`
`TIMER_TOPIC`
The topic name for the virtual timer topic.
`static final String`
`TRIGGERING_EVENT`
The key for the startup argument used to pass the event object that triggered the schedule to launch the application instance.
`static final String`
`YEAR`
The name of the year attribute of a virtual timer event.

## Method Summary

Modifier and Type
Method
Description
`ApplicationDescriptor`
`getApplicationDescriptor()`
Retrieves the ApplicationDescriptor which represents the application and necessary for launching.
`Map`
`getArguments()`
Queries the startup arguments specified when the application was scheduled.
`String`
`getEventFilter()`
Queries the event filter for the triggering event.
`String`
`getScheduleId()`
Returns the identifier of this schedule.
`String`
`getTopic()`
Queries the topic of the triggering event.
`boolean`
`isRecurring()`
Queries if the schedule is recurring.
`void`
`remove()`
Cancels this schedule of the application.

## Field Details

### APPLICATION_PID

static final String APPLICATION_PID
The property key for the identifier of the application being scheduled.

See Also:
  - Constant Field Values

### SCHEDULE_ID

static final String SCHEDULE_ID
The property key for the schedule identifier. The identifier is unique within the scope of the application being scheduled.

See Also:
  - Constant Field Values

### TRIGGERING_EVENT

static final String TRIGGERING_EVENT
The key for the startup argument used to pass the event object that triggered the schedule to launch the application instance. The event is passed in a `GuardedObject` protected by the corresponding `TopicPermission`.

See Also:
  - Constant Field Values

### TIMER_TOPIC

static final String TIMER_TOPIC
The topic name for the virtual timer topic. Time based schedules should be created using this topic.

See Also:
  - Constant Field Values

### YEAR

static final String YEAR
The name of the year attribute of a virtual timer event. The value is defined by `Calendar.YEAR`.

See Also:
  - Constant Field Values

### MONTH

static final String MONTH
The name of the month attribute of a virtual timer event. The value is defined by `Calendar.MONTH`.

See Also:
  - Constant Field Values

### DAY_OF_MONTH

static final String DAY_OF_MONTH
The name of the day of month attribute of a virtual timer event. The value is defined by `Calendar.DAY_OF_MONTH`.

See Also:
  - Constant Field Values

### DAY_OF_WEEK

static final String DAY_OF_WEEK
The name of the day of week attribute of a virtual timer event. The value is defined by `Calendar.DAY_OF_WEEK`.

See Also:
  - Constant Field Values

### HOUR_OF_DAY

static final String HOUR_OF_DAY
The name of the hour of day attribute of a virtual timer event. The value is defined by `Calendar.HOUR_OF_DAY`.

See Also:
  - Constant Field Values

### MINUTE

static final String MINUTE
The name of the minute attribute of a virtual timer event. The value is defined by `Calendar.MINUTE`.

See Also:
  - Constant Field Values

## Method Details

### getScheduleId

String getScheduleId()
Returns the identifier of this schedule. The identifier is unique within the scope of the application that the schedule is related to.

Returns:
  the identifier of this schedule

### getTopic

String getTopic()
Queries the topic of the triggering event. The topic may contain a trailing asterisk as wildcard.

Returns:
  the topic of the triggering event
Throws:
  `IllegalStateException` - if the scheduled application service is unregistered

### getEventFilter

String getEventFilter()
Queries the event filter for the triggering event.

Returns:
  the event filter for triggering event
Throws:
  `IllegalStateException` - if the scheduled application service is unregistered

### isRecurring

boolean isRecurring()
Queries if the schedule is recurring.

Returns:
  true if the schedule is recurring, otherwise returns false
Throws:
  `IllegalStateException` - if the scheduled application service is unregistered

### getApplicationDescriptor

ApplicationDescriptor getApplicationDescriptor()
Retrieves the ApplicationDescriptor which represents the application and necessary for launching.

Returns:
  the application descriptor that represents the scheduled application
Throws:
  `IllegalStateException` - if the scheduled application service is unregistered

### getArguments

Map getArguments()
Queries the startup arguments specified when the application was scheduled. The method returns a copy of the arguments, it is not possible to modify the arguments after scheduling.

Returns:
  the startup arguments of the scheduled application. It may be null if null argument was specified.
Throws:
  `IllegalStateException` - if the scheduled application service is unregistered

### remove

void remove()
Cancels this schedule of the application.

Throws:
  `SecurityException` - if the caller doesn't have "schedule" ApplicationAdminPermission for the scheduled application.
  `IllegalStateException` - if the scheduled application service is unregistered