Each event received by BPM Events is assumed to be dated (that is, has a time stamp). BPM Events also has an internal notion of date for various rule operations (scheduling, comparison with current date, timing of events generated by BPM Events, etcetera). The date assumed by BPM Events is the coordinated universal time (UTC). UTC is normally supported by the Java Virtual Machine, but this depends in turn on the host environment.
Almost all operating systems assume that 1 day = 24 × 60 × 60 = 86400 seconds. In UTC, however, about once every year or two an extra second is added, called a "leap second." The leap second is always added as the last second of the day, and always on December 31 or June 30. Most computer clocks are not accurate enough to reflect the leap second distinction.
Because the notion of time is critical to the processing and correlation of events, BPM Events provides a rich set of time constructs and time operators. The basic principle of time management is that time is a discrete concept. Because the maximum precision, in BPM Events is the second, the time dimension is viewed as an infinite, denumerable sequence of seconds. View a time interval as a finite number of contiguous seconds. With this in mind, we then define the following constructs as part of BPM Events rule language.