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

  1. already situated in a high-level process, or
  2. 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

Method Summary
 void addDataAttribute(HighLevelDataAttribute att)
          Adds a new data attribute to this activity.
 java.lang.Object clone()
          Clones the highlevelactivity object.
 boolean equals(java.lang.Object obj)
          Determines when two highLevelActivities are the same.
 java.util.List<HighLevelDataAttribute> getDataAttributes()
          Retrieves the list of data attributes available for this activity.
 Distribution getExecutionTime()
          Retrieves the distribution of the execution time for this activity.
 int getFrequencyDependency()
          Sets the frequency dependency specified for this activity.
 HighLevelGroup getGroup()
          Retrieves the group for this activity.
 java.lang.String getName()
          Retrieves the name of the activity
 Distribution getSojournTime()
          Retrieves the distribution of the sojourn time for this activity.
 Distribution getWaitingTime()
          Retrieves the distribution of the waiting time for this activity.
 int hashCode()
          Retrieves the hashcode for the object.
 java.lang.Object partialClone()
          Partially clones the object.
 void removeAllDataAttributes()
          Removes all data attributes from this activity.
 boolean removeDataAttribute(HighLevelDataAttribute att)
          Removes the given data attribute from this activity.
 boolean removeGroup(HighLevelGroup group)
          Removes the given group from this activity.
 void setExecutionTime(Distribution dist)
          Provides a distribution of the execution time for this activity.
 void setFrequencyDependency(int freq)
          Adds a frequency dependency to this activity.
 void setGroup(HighLevelGroup group)
          Defines a group for this activity.
 void setName(java.lang.String name)
          Sets the name of the activity
 void setParentProcess(HighLevelProcess process)
          Sets the parent process of the highlevelactivity.
 void setSojournTime(Distribution dist)
          Provides a distribution of the sojourn time for this activity.
 void setWaitingTime(Distribution dist)
          Provides a distribution of the waiting time for this activity.
 java.lang.String toString()
          Returns the name of the highlevelactivity
 

Method Detail

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

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

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

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

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

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

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

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

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:

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:

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