org.processmining.framework.models.hlprocess
Interface HighLevelActivity
- All Superinterfaces:
- java.lang.Cloneable
- All Known Implementing Classes:
- HLActivity, HLTransition
public interface HighLevelActivity
- extends java.lang.Cloneable
Defines the data operations that are available for a high-level activity.
Such a high-level activity may be both
- already situated in a high-level process, or
- represent an activitiy independant of a concrete high-level process
(for example, if the data to be provided is only obtained from analyzing a log,
without having a process model at hand). In the latter case the high-level activity
must be manually associated to a step in a given high-level process if required.
Note that the interface specifies the maximum set of high-level information
that can be provided for a process. However, some of these data represent a
different view on the same thing, that is, they are in conflict with each other.
This means that, although all the available information can be provided, eventually
only a subset of it might be used (for example, based on the user's choice).
Note that a log event needs to be defined for the HighLevelActivity because otherwise
the High level activities can not be distinguished from each other.
- Author:
- arozinat, rmans
- See Also:
HighLevelProcess
setName
void setName(java.lang.String name)
- Sets the name of the activity
- Parameters:
name
- String the name
getName
java.lang.String getName()
- Retrieves the name of the activity
- Returns:
- String the name of the activity
setExecutionTime
void setExecutionTime(Distribution dist)
- Provides a distribution of the execution time for this activity.
The execution time is defined as the time from the starting an activity until
its completion.
Conflict: Note that there is a semantic conflict between
- execution time / waiting time vs. sojourn time
- Parameters:
dist
- the distribution of the execution time- See Also:
setWaitingTime(Distribution)
,
setSojournTime(Distribution)
,
HighLevelProcess#setTimeUnit()
getExecutionTime
Distribution getExecutionTime()
- Retrieves the distribution of the execution time for this activity.
The execution time is defined as the time from the starting an activity until
its completion.
Conflict: Note that there is a semantic conflict between
- execution time / waiting time vs. sojourn time
- Returns:
- the distribution of the execution time. In the case that no execution time
has been set a default distribution has to be returned.
- See Also:
getWaitingTime()
,
getSojournTime()
,
HighLevelProcess.getTimeUnit()
setWaitingTime
void setWaitingTime(Distribution dist)
- Provides a distribution of the waiting time for this activity.
The waiting time is defined as the time from the point where an activity is
enabled (that is, ready to be started) until its actual start.
Conflict: Note that there is a semantic conflict between
- execution time / waiting time vs. sojourn time
- waiting time / sojourn time vs. explicit resource management. This latter
conflict is due to the fact that waiting times typically emerge from the
unavailability of resources.
- Parameters:
dist
- the distribution of the waiting time- See Also:
setExecutionTime(Distribution)
,
setSojournTime(Distribution)
,
HighLevelProcess#setTimeUnit()
getWaitingTime
Distribution getWaitingTime()
- Retrieves the distribution of the waiting time for this activity.
The waiting time is defined as the time from the point where an activity is
enabled (that is, ready to be started) until its actual start.
Conflict: Note that there is a semantic conflict between
- execution time / waiting time vs. sojourn time
- waiting time / sojourn time vs. explicit resource management. This latter
conflict is due to the fact that waiting times typically emerge from the
unavailability of resources.
- Returns:
- the distribution of the waiting time. In the case that no waiting time
has been set a default distribution has to be returned.
- See Also:
getExecutionTime()
,
getSojournTime()
,
HighLevelProcess.getTimeUnit()
setSojournTime
void setSojournTime(Distribution dist)
- Provides a distribution of the sojourn time for this activity.
The sojourn time is defined as the waiting time + the execution time.
Conflict: Note that there is a semantic conflict between
- execution time / waiting time vs. sojourn time
- waiting time / sojourn time vs. explicit resource management. This latter
conflict is due to the fact that waiting times typically emerge from the
unavailability of resources.
- Parameters:
dist
- the distribution of the sojourn time- See Also:
setExecutionTime(Distribution)
,
setWaitingTime(Distribution)
,
HighLevelProcess#setTimeUnit()
getSojournTime
Distribution getSojournTime()
- Retrieves the distribution of the sojourn time for this activity.
The sojourn time is defined as the waiting time + the execution time.
Conflict: Note that there is a semantic conflict between
- execution time / waiting time vs. sojourn time
- waiting time / sojourn time vs. explicit resource management. This latter
conflict is due to the fact that waiting times typically emerge from the
unavailability of resources.
- Returns:
- the distribution of the sojourn time. In the case that no sojourn time
has been set a default distribution has to be returned.
- See Also:
getExecutionTime()
,
getWaitingTime()
,
HighLevelProcess.getTimeUnit()
setFrequencyDependency
void setFrequencyDependency(int freq)
- Adds a frequency dependency to this activity.
This relates to the (relative) frequency of chosing this activity if it is
involved into an alternative split.
Conflict: Note further that there is a semantic conflict between
- data dependency vs. probability dependency vs. frequency dependency.
- Parameters:
freq
- the frequency dependency to be added- See Also:
HighLevelProcess#addDataDependency(DataDependency)
,
HighLevelProcess#addProbabilityDependency(ProbabilityDependency)
getFrequencyDependency
int getFrequencyDependency()
- Sets the frequency dependency specified for this activity.
This relates to the (relative) frequency of chosing this activity if it is
involved into an alternative split.
Conflict: Note further that there is a semantic conflict between
- data dependency vs. probability dependency vs. frequency dependency.
- Returns:
- the frequency dependency specified
for this activity. If no frequency dependency has been set a default value
needs to be returned.
- See Also:
HighLevelProcess.getDataDependencies()
,
HighLevelProcess.getProbabilityDependencies()
addDataAttribute
void addDataAttribute(HighLevelDataAttribute att)
- Adds a new data attribute to this activity.
Note that if this data attribute had already been added to this process before,
it will not be added again.
- Parameters:
att
- the attributed to be added
removeAllDataAttributes
void removeAllDataAttributes()
- Removes all data attributes from this activity.
removeDataAttribute
boolean removeDataAttribute(HighLevelDataAttribute att)
- Removes the given data attribute from this activity.
- Parameters:
att
- the attribute to be removed
- Returns:
true
if the data attribute was found and removed,
false
otherwise
getDataAttributes
java.util.List<HighLevelDataAttribute> getDataAttributes()
- Retrieves the list of data attributes available for this activity.
Note that this list should be consistent with (i.e., a sub set of) the data attributes
available at the process level (if there is an enclosing process for this activity).
- Returns:
- the list of HighLevelDataAttribute objects representing the attributes
provided by this activity. If no data attributes have been set an empty list
needs to be returned
setGroup
void setGroup(HighLevelGroup group)
- Defines a group for this activity.
Note that if no group is set, every resource can execute this activity.
Note further that we assume that every activity is executed by only one resource.
- Parameters:
group
- the group of resources that may execute this activity
getGroup
HighLevelGroup getGroup()
- Retrieves the group for this activity.
Note that if no group is set, every resource can execute this activity.
Note further that we assume that every activity is executed by only one resource.
- Returns:
- the group of resources that may execute this activity if available.
Null
otherwise
removeGroup
boolean removeGroup(HighLevelGroup group)
- Removes the given group from this activity.
- Parameters:
group
- HighLevelGroup the group to be removed
- Returns:
- boolean
true
if the group was found and removed,
false
otherwise.
equals
boolean equals(java.lang.Object obj)
- Determines when two highLevelActivities are the same. Two highLevelActivities are
the same when the following items are the same for the two highLevelActivities:
- both are an instance of a HighLevelActivity
- the name
- the execution time
- the waiting time
- the sojourn time
- the frequency dependency
- the group
- the Set of data attributes
- Overrides:
equals
in class java.lang.Object
- Parameters:
obj
- Object
- Returns:
- boolean
hashCode
int hashCode()
- Retrieves the hashcode for the object. The hashcode value for a HighLevelActivity object
is calculated according to the recipe of Josha Bloch in Effective Java
(Addison-Wesley 2001). For this recipe the following items have to be considered:
- the name
- the execution time
- the waiting time
- the sojourn time
- the frequency dependency
- the group
- the Set of data attributes
- Overrides:
hashCode
in class java.lang.Object
- Returns:
- int the hashcode value for the HighLevelActivity object.
clone
java.lang.Object clone()
- Clones the highlevelactivity object. This should be a deep copy instead of a shallow copy.
- Returns:
- Object the cloned highlevelactivity object.
partialClone
java.lang.Object partialClone()
- Partially clones the object. All the timing information needs to be cloned and the
frequency dependency needs to be cloned. However, the group that is attached to this object
may not be cloned and for the data attributes only a new EMPY list may be created.
- Returns:
- Object the partially cloned object
toString
java.lang.String toString()
- Returns the name of the highlevelactivity
- Overrides:
toString
in class java.lang.Object
- Returns:
- String the name of the highlevelactivity
setParentProcess
void setParentProcess(HighLevelProcess process)
- Sets the parent process of the highlevelactivity.
- Parameters:
process
- HighLevelProcess the parent process