Class ALH
java.lang.Object
com.nomagic.magicdraw.simulation.utils.ALH
An Action Language Helper for using in scripts to access values of the runtime object.
- Since:
- SIM 1.0
-
Constructor Summary
ConstructorDescriptionALH()
Constructor.ALH
(SimulationSession session) Constructor.ALH
(SimulationSession session, List<NamedElement> trace) Constructor.ALH
(SimulationSession session, List<NamedElement> trace, fUML.Semantics.Classes.Kernel.Object_ context) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Find the matchedFeatureValue
from the specifiedobject
, and set thevalue
at the last position of the value list.void
addValueAt
(fUML.Semantics.Classes.Kernel.StructuredValue object, String featureName, Object value, Integer insertAt) Find the matchedFeatureValue
from the specifiedobject
, and set thevalue
at theinsertAt
position.callBehavior
(String name) Execute theBehavior
element that matches the specified name.callBehavior
(String name, List<?> arguments) Execute the CallBehaviorAction element that matches the specified name.callBehavior
(String name, List<?> arguments, boolean isSynchonous) Execute the CallBehaviorAction element that matches the specified name.callOperation
(fUML.Semantics.Classes.Kernel.Object_ object, String name) Execute the method of theOperation
element that matches the specified name.callOperation
(fUML.Semantics.Classes.Kernel.Object_ object, String name, List<?> arguments) Execute the method of theOperation
element that matches the specified name.callOperation
(fUML.Semantics.Classes.Kernel.Object_ object, String name, List<?> arguments, boolean isSynchonous) Execute the method of theOperation
element that matches the specified name.callOperation
(String name) Execute the method of theOperation
element that matches the specified name.callOperation
(String name, List<?> arguments) Execute the method of theOperation
element that matches the specified name.A convenience method for creating the list.createList
(Object object) A convenience method for creating the list with one added item in the list.fUML.Semantics.Classes.Kernel.Object_
createObject
(Class classifier) Create anObject_
with the given type (which must be aClass
) in theLocus
of the activeSimulationSession
.fUML.Semantics.Classes.Kernel.Object_
createObject
(String name) Create anObject_
with the givenname
(which must be name ofClass
) as its type.fUML.Semantics.CommonBehaviors.Communications.SignalInstance
createSignal
(Signal signal) Create the instance ofSignalInstance
.fUML.Semantics.CommonBehaviors.Communications.SignalInstance
createSignal
(String keyword) Create the instance ofSignalInstance
.Evaluate the string expression.Evaluate the string expression based on the specified scripting language.Get the calling element of the script evaluation.fUML.Semantics.Classes.Kernel.Object_
Get the context of ALH.double
Gets current time.double
getCurrentTime
(String timeUnit) Gets current time in forms of the specifiedtimeUnit
.getGlobalVariable
(String variableName) Gets global variable from the execution.fUML.Semantics.CommonBehaviors.Communications.SignalInstance
getLastSignal
(fUML.Semantics.Classes.Kernel.Object_ o) Get the last signal instance from the event pool.getState
(fUML.Semantics.Classes.Kernel.Object_ object) Get the currentState
from the specifiedobject
.getTagValue
(fUML.Semantics.Classes.Kernel.Object_ object, String tagName) Get tag value from classifier of Object, and structural feature that Object representedgetTagValue
(String tagName) Get tag value from classifier of context.Gets time unit of the running execution.Get Tokens values from the current context.Get the value ofFeatureValue
from theobject
that match the specifiedStructureFeature
name.boolean
Check whether the specified object is in the specified state name or not.boolean
Check whether the current runtime object is in the specified state name or not.isGlobalVariable
(String variableName) Checks whether or not the givenvariableName
is global variable.void
removeGlobalVariable
(String variableName) Removes global variable from the execution.void
removeValue
(fUML.Semantics.Classes.Kernel.StructuredValue object, String featureName, fUML.Semantics.Classes.Kernel.Value value) Find the matchedFeatureValue
from the specifiedobject
, remove the definedvalue
or the value atremoveAt
position.void
removeValueAt
(fUML.Semantics.Classes.Kernel.StructuredValue object, String featureName, Integer removeAt) Find the matchedFeatureValue
from the specifiedobject
, remove the definedvalue
or the value atremoveAt
position.void
sendSignal
(fUML.Semantics.CommonBehaviors.Communications.SignalInstance signal, fUML.Semantics.Classes.Kernel.Object_ target) Send the specifiedSignalInstance
to the specified targetObject_
.void
sendSignal
(fUML.Semantics.CommonBehaviors.Communications.SignalInstance signal, fUML.Semantics.Classes.Kernel.Object_ target, String portName) Send the specifiedSignalInstance
to the specified targetObject_
via the specified port name.void
sendSignal
(fUML.Semantics.CommonBehaviors.Communications.SignalInstance signal, String targetName) Send the specifiedSignalInstance
to the specifiedtargetName
.void
sendSignal
(String signalName, fUML.Semantics.Classes.Kernel.Object_ target) Create SignalInstance instance of the specifiedSignal
name, and send it to the targetObject_
.void
sendSignal
(String signalName, fUML.Semantics.Classes.Kernel.Object_ target, String portName) Create SignalInstance instance of the specifiedSignal
name, and send it to the targetObject_
via the specified port name.void
sendSignal
(String signalName, String targetName) Create SignalInstance instance of the specifiedSignal
name, and send it to the specifiedtargetName
.void
setGlobalVariable
(String variableName, Object value) Sets global variable for the execution.void
Find the matchedFeatureValue
from the specifiedobject
, and set thevalue
.void
Find the matchedFeatureValue
from thecontext
, and set thevalue
.boolean
wasInState
(fUML.Semantics.Classes.Kernel.Object_ object, String stateName) Check that the state matching with the name was already visited or not.boolean
wasInState
(String stateName) Check that the state matching with the name was already visited or not.
-
Constructor Details
-
ALH
public ALH()Constructor. -
ALH
Constructor.- Parameters:
session
- the running session
-
ALH
Constructor.- Parameters:
session
- the running sessiontrace
- trace
-
ALH
public ALH(@CheckForNull SimulationSession session, List<NamedElement> trace, fUML.Semantics.Classes.Kernel.Object_ context) Constructor.- Parameters:
session
- the running sessiontrace
- tracecontext
- the context
-
-
Method Details
-
getContext
@CheckForNull public fUML.Semantics.Classes.Kernel.Object_ getContext()Get the context of ALH.- Returns:
- context of ALH.
-
getValue
@CheckForNull public Object getValue(fUML.Semantics.Classes.Kernel.StructuredValue object, String featureName) Get the value ofFeatureValue
from theobject
that match the specifiedStructureFeature
name. It supports nested structural features.- Parameters:
object
- the specified instance ofStructuredValue
(or its subclasses)featureName
- the specified name, it will check with StructuralFeature name, nested structural features such as "part1.part2" are allowed.- Returns:
- the value of
FeatureValue
- Throws:
IllegalArgumentException
- ifobject
orfeatureName
is null.- See Also:
-
setValue
public void setValue(fUML.Semantics.Classes.Kernel.StructuredValue object, String featureName, Object value) Find the matchedFeatureValue
from the specifiedobject
, and set thevalue
. If not found, create the newFeatureValue
and add to the specifiedobject
. It supports nested structural features.If want to find
FeatureValue
fromAssociation
(Link
), usefUMLHelper.addFeatureValues(Locus locus, Value valueOwner, StructuralFeature feature, ValueList inputValues, int insertAt, boolean replaceAll)
- Parameters:
object
- the fUML runtime Object_ or SignalInstancefeatureName
- the name of structural feature, nested structural features such as "part1.part2" are allowed.value
- the value to be set. Can be Java value or fUML Value.- Throws:
IllegalArgumentException
- ifobject
orfeatureName
is null.- See Also:
-
setValue
Find the matchedFeatureValue
from thecontext
, and set thevalue
. If not found, create the newFeatureValue
and add to thecontext
. It supports nested structural features.If want to find
FeatureValue
fromAssociation
(Link
), usefUMLHelper.addFeatureValues(Locus locus, Value valueOwner, StructuralFeature feature, ValueList inputValues, int insertAt, boolean replaceAll)
- Parameters:
featureName
- the name of structural feature, nested structural features such as "part1.part2" are allowed.value
- the value to be set. Can be Java value or fUML Value.- Throws:
IllegalArgumentException
- ifobject
orfeatureName
is null.- See Also:
-
addValue
public void addValue(fUML.Semantics.Classes.Kernel.StructuredValue object, String featureName, Object value) Find the matchedFeatureValue
from the specifiedobject
, and set thevalue
at the last position of the value list.- Parameters:
object
- the fUML runtime Object_ or SignalInstancefeatureName
- the name of structural feature, nested structural features such as "part1.part2" are allowed.value
- the value to be set. Can be Java value or fUML Value.
-
addValueAt
public void addValueAt(fUML.Semantics.Classes.Kernel.StructuredValue object, String featureName, Object value, Integer insertAt) Find the matchedFeatureValue
from the specifiedobject
, and set thevalue
at theinsertAt
position.- Parameters:
object
- the fUML runtime Object_ or SignalInstancefeatureName
- the name of structural feature, nested structural features such as "part1.part2" are allowed.value
- the value to be set. Can be Java value or fUML Value.insertAt
- the inserted position. if it is not more than 0, the value will be added at the last position.
-
removeValue
public void removeValue(fUML.Semantics.Classes.Kernel.StructuredValue object, String featureName, fUML.Semantics.Classes.Kernel.Value value) Find the matchedFeatureValue
from the specifiedobject
, remove the definedvalue
or the value atremoveAt
position.- Parameters:
object
- the fUML runtime Object_ or SignalInstancefeatureName
- the name of structural feature, nested structural features such as "part1.part2" are allowed.value
- the fUML value to be removed.
-
removeValueAt
public void removeValueAt(fUML.Semantics.Classes.Kernel.StructuredValue object, String featureName, Integer removeAt) Find the matchedFeatureValue
from the specifiedobject
, remove the definedvalue
or the value atremoveAt
position.- Parameters:
object
- the fUML runtime Object_ or SignalInstancefeatureName
- the name of structural feature, nested structural features such as "part1.part2" are allowed.removeAt
- if the removeAt is defined. it will remove the value atremoveAt
position, ignoring thevalue
value
-
getState
Get the currentState
from the specifiedobject
. Ifobject
has more than one active states, return the first one.- Parameters:
object
- the instance ofObject_
(or its subclasses)- Returns:
- the current
State
from the specifiedobject
- Throws:
IllegalArgumentException
- ifobject
is null.
-
getTokenValue
Get Tokens values from the current context.- Returns:
- the instance of subclasses of the
Object
representing the token values of the current context
-
getLastSignal
public fUML.Semantics.CommonBehaviors.Communications.SignalInstance getLastSignal(fUML.Semantics.Classes.Kernel.Object_ o) Get the last signal instance from the event pool.- Parameters:
o
- the specified object- Returns:
- the last signal instance from the list
-
createObject
Create anObject_
with the given type (which must be aClass
) in theLocus
of the activeSimulationSession
.- Parameters:
classifier
- the instance ofClass
(or its subclasses)- Returns:
- the created
Object_
, or null ifclassifier
is not instance ofClass
-
createObject
Create anObject_
with the givenname
(which must be name ofClass
) as its type. Thename
is used to search fromcom.nomagic.uml2.ext.magicdraw.auxiliaryconstructs.mdmodels.Model
of the currentProject
.- Parameters:
name
- the specifiedClass
name- Returns:
- the created
Object_
- See Also:
-
createObject(Class)
SimulationModelHelper.findClassByName(Element, String)
-
callOperation
Execute the method of theOperation
element that matches the specified name.- Parameters:
name
- the specified name ofOperation
- Returns:
- the return value of the execution.
- See Also:
-
callOperation
Execute the method of theOperation
element that matches the specified name.- Parameters:
name
- the specified name ofOperation
arguments
- argument values- Returns:
- the return value of the execution.
- See Also:
-
callOperation
Execute the method of theOperation
element that matches the specified name.- Parameters:
object
- The target object to which the request is sentname
- the specified name ofOperation
- Returns:
- the return value of the execution.
- See Also:
-
callOperation
public Object callOperation(fUML.Semantics.Classes.Kernel.Object_ object, String name, List<?> arguments) Execute the method of theOperation
element that matches the specified name.- Parameters:
object
- The target object to which the request is sentname
- the specified name ofOperation
arguments
- argument values- Returns:
- the return value of the execution.
- See Also:
-
SimulationModelHelper.findOperationByName(Element, String)
fUMLHelper.callBehavior(StructuredValue, Behavior, List, SimulationSession, Boolean)
-
callOperation
public Object callOperation(fUML.Semantics.Classes.Kernel.Object_ object, String name, List<?> arguments, boolean isSynchonous) Execute the method of theOperation
element that matches the specified name.- Parameters:
object
- The target object to which the request is sentname
- the specified name ofOperation
arguments
- argument valuesisSynchonous
- true if call synchronously, false --> asynchronously- Returns:
- the return value of the execution.
- See Also:
-
SimulationModelHelper.findOperationByName(Element, String)
fUMLHelper.callBehavior(StructuredValue, Behavior, List, SimulationSession, Boolean)
-
callBehavior
Execute theBehavior
element that matches the specified name.- Parameters:
name
- the specified name ofBehavior
- Returns:
- the return value of the execution.
- See Also:
-
callBehavior
Execute the CallBehaviorAction element that matches the specified name.- Parameters:
name
- the specified name ofBehavior
arguments
- argument values- Returns:
- the return value of the execution.
- Throws:
IllegalArgumentException
- if cannot findBehavior
or size ofarguments
are not equal to in/inout parameters size.- See Also:
-
callBehavior
Execute the CallBehaviorAction element that matches the specified name.- Parameters:
name
- the specified name ofBehavior
arguments
- argument valuesisSynchonous
- true if call synchronously, false --> asynchronously- Returns:
- the return value of the execution.
- Throws:
IllegalArgumentException
- if cannot findBehavior
or size ofarguments
are not equal to in/inout parameters size.- See Also:
-
sendSignal
Create SignalInstance instance of the specifiedSignal
name, and send it to the targetObject_
. IfsignalName
contains "::", it will find the signal from the qualified name, the signal is found if its qualified name is ended withsignalName
.- Parameters:
signalName
- the specifiedSignal
nametarget
- the specified targetObject_
-
sendSignal
Create SignalInstance instance of the specifiedSignal
name, and send it to the specifiedtargetName
. IfsignalName
contains "::", it will find the signal from the qualified name, the signal is found if its qualified name is ended withsignalName
. IftargetName
is defined, there are two possible cases.- It will find target objects from all waiting objects that have their parts name matched with
targetName
- It will find target objects via connected port, which port name is matched with the specified
targetName
- Parameters:
signalName
- the specifiedSignal
nametargetName
- the specified target object name
- It will find target objects from all waiting objects that have their parts name matched with
-
sendSignal
public void sendSignal(String signalName, fUML.Semantics.Classes.Kernel.Object_ target, String portName) Create SignalInstance instance of the specifiedSignal
name, and send it to the targetObject_
via the specified port name. IfsignalName
contains "::", it will find the signal from the qualified name, the signal is found if its qualified name is ended withsignalName
.- Parameters:
signalName
- the specifiedSignal
nametarget
- the specified targetObject_
portName
- the specified port name
-
sendSignal
public void sendSignal(fUML.Semantics.CommonBehaviors.Communications.SignalInstance signal, fUML.Semantics.Classes.Kernel.Object_ target) Send the specifiedSignalInstance
to the specified targetObject_
.- Parameters:
signal
- the specifiedSignalInstance
target
- the specified targetObject_
-
sendSignal
public void sendSignal(fUML.Semantics.CommonBehaviors.Communications.SignalInstance signal, String targetName) Send the specifiedSignalInstance
to the specifiedtargetName
. IftargetName
is defined, there are two possible cases.- It will find target objects from all waiting objects that have their parts name matched with
targetName
- It will find target objects via connected port, which port name is matched with the specified
targetName
- Parameters:
signal
- the specifiedSignalInstance
targetName
- the specified target object name
- It will find target objects from all waiting objects that have their parts name matched with
-
sendSignal
public void sendSignal(fUML.Semantics.CommonBehaviors.Communications.SignalInstance signal, fUML.Semantics.Classes.Kernel.Object_ target, String portName) Send the specifiedSignalInstance
to the specified targetObject_
via the specified port name.- Parameters:
signal
- the specifiedSignalInstance
target
- the specified targetObject_
portName
- the specified port name
-
evaluate
Evaluate the string expression based on the specified scripting language.- Parameters:
language
- the specified scripting languageexpression
- the specified string expression- Returns:
- the evaluation result
-
evaluate
Evaluate the string expression.- Parameters:
expression
- the specified string expression- Returns:
- the evaluation result
-
createList
A convenience method for creating the list. The new emptyArrayList
is created and returned.- Returns:
- the new empty
ArrayList
-
createList
A convenience method for creating the list with one added item in the list. The new emptyArrayList
is created and being added the specified item.- Parameters:
object
- the specified item being added to the created list- Returns:
- the new empty
ArrayList
with the added item
-
inState
Check whether the current runtime object is in the specified state name or not.- Parameters:
stateName
- the specified state name- Returns:
- true if one of the active states matches with the specified state name
-
inState
Check whether the specified object is in the specified state name or not.- Parameters:
object
- the specified objectstateName
- the specified state name- Returns:
- true if one of the active states matches with the specified state name
-
wasInState
Check that the state matching with the name was already visited or not.- Parameters:
stateName
- the state name- Returns:
- true, if yes
-
wasInState
Check that the state matching with the name was already visited or not.- Parameters:
object
- the objectstateName
- the state name- Returns:
- true, if yes
-
createSignal
Create the instance ofSignalInstance
.- Parameters:
signal
- the specifiedSignal
- Returns:
- the created
SignalInstance
-
createSignal
@CheckForNull public fUML.Semantics.CommonBehaviors.Communications.SignalInstance createSignal(String keyword) Create the instance ofSignalInstance
.- Parameters:
keyword
- the keyword for findSignal
- Returns:
- the created
SignalInstance
-
getTimeUnit
Gets time unit of the running execution.- Returns:
- Time unit.
-
getCurrentTime
public double getCurrentTime()Gets current time.- Returns:
- Current time
-
getCurrentTime
Gets current time in forms of the specifiedtimeUnit
.- Parameters:
timeUnit
- the unit of time, that the current time should be converted to. Valid parameters: "nanosecond"/"ns", "microsecond"/"µs", "millisecond"/"ms", "second"/"s", "minute"/"min", "hour"/"h", "day"/"d", "week"/"w", "month"/"mo", "year"/"y"- Returns:
- Current time in the unit of specified
timeUnit
.
-
getGlobalVariable
Gets global variable from the execution.- Parameters:
variableName
- Variable name- Returns:
- global variable value. if the global variable does not exist, return null.
-
setGlobalVariable
Sets global variable for the execution.- Parameters:
variableName
- Variable namevalue
- Variable value
-
isGlobalVariable
Checks whether or not the givenvariableName
is global variable.- Parameters:
variableName
- Variable name- Returns:
- true, if the given
variableName
is global variable. Otherwise, false.
-
removeGlobalVariable
Removes global variable from the execution.- Parameters:
variableName
- Variable name
-
getCaller
Get the calling element of the script evaluation.- Returns:
- the calling element of the script evaluation
-
getTagValue
Get tag value from classifier of context.- Parameters:
tagName
- the tag name possible to be the dot notation.- Returns:
- the value of tagName as the primitive object.
- Throws:
Exception
- the exception
-
getTagValue
public Object getTagValue(@CheckForNull fUML.Semantics.Classes.Kernel.Object_ object, String tagName) throws Exception Get tag value from classifier of Object, and structural feature that Object represented- Parameters:
object
- the runtime objecttagName
- the tag name possible to be the dot notation.- Returns:
- the value of tagName as the primitive object.
- Throws:
Exception
- the exception
-