The FWRegion Stereotype
This section defines the constraints applicable to the <<FWRegion>> stereotype. Each constraint is defined in a dedicated
subsection.
EntryPointConstraint
Description: The region has no entry points.
| OCL: |
|
self.subvertex->select(v|v.oclIsKindOf(Pseudostate))->
select(p|p.kind=PseudostateKind::entryPoint)->size()=0
|
| UML2 API: |
|
for (Iterator subvertices = object.getSubvertices().iterator(); subvertices.hasNext();) {
Vertex vertex = (Vertex)subvertices.next();
if (vertex instanceof Pseudostate){
Pseudostate pseudostate = (Pseudostate)vertex;
if (pseudostate.getKind().getValue() == PseudostateKind.ENTRY_POINT)
return false;
}
}
return true;
|
ExitPointConstraint
Description: The region has no exit points.
| OCL: |
|
self.subvertex->select(v|v.oclIsKindOf(Pseudostate))->
select(p|p.kind=PseudostateKind::exitPoint)->size()=0
|
| UML2 API: |
|
for (Iterator subvertices = object.getSubvertices().iterator();
subvertices.hasNext();) {
Vertex vertex = (Vertex)subvertices.next();
if (vertex instanceof Pseudostate){
Pseudostate pseudostate = (Pseudostate)vertex;
if (pseudostate.getKind().getValue() == PseudostateKind.EXIT_POINT)
return false;
}
}
return true;
|
ForkConstraint
Description: The region has no fork elements.
| OCL: |
|
self.subvertex->select(v|v.oclIsKindOf(Pseudostate))->
select(p|p.kind=PseudostateKind::fork)->size()=0
|
| UML2 API: |
|
for (Iterator subvertices = object.getSubvertices().iterator();
subvertices.hasNext();) {
Vertex vertex = (Vertex)subvertices.next();
if (vertex instanceof Pseudostate){
Pseudostate pseudostate = (Pseudostate)vertex;
if (pseudostate.getKind().getValue() == PseudostateKind.FORK)
return false;
}
}
return true;
|
JoinConstraint
Description: The region has no join elements.
| OCL: |
|
self.subvertex->select(v|v.oclIsKindOf(Pseudostate))->
select(p|p.kind=PseudostateKind::join)->size()=0
|
| UML2 API: |
|
for (Iterator subvertices = object.getSubvertices().iterator();
subvertices.hasNext();) {
Vertex vertex = (Vertex)subvertices.next();
if (vertex instanceof Pseudostate){
Pseudostate pseudostate = (Pseudostate)vertex;
if (pseudostate.getKind().getValue() == PseudostateKind.JOIN)
return false;
}
}
return true;
|
JunctionConstraint
Description: The region has no junction point.
| OCL: |
|
self.subvertex->select(v|v.oclIsKindOf(Pseudostate))->
select(p|p.kind=PseudostateKind::junction)->size()=0
|
| UML2 API: |
|
for (Iterator subvertices = object.getSubvertices().iterator(); subvertices.hasNext();) {
Vertex vertex = (Vertex)subvertices.next();
if (vertex instanceof Pseudostate){
Pseudostate pseudostate = (Pseudostate)vertex;
if (pseudostate.getKind().getValue() == PseudostateKind.JUNCTION)
return false;
}
}
return true;
|
SubmachineStateConstraint
Description: The region has no submachine state.
| OCL: |
|
self.subvertex->select(v|v.oclIsKindOf(State))->
select(p|p.isSubmachineState)->size()=0
|
| UML2 API: |
|
for (Iterator subvertices = object.getSubvertices().iterator();
subvertices.hasNext();) {
Vertex vertex = (Vertex)subvertices.next();
if (vertex instanceof State){
State state = (State)vertex;
if (state.isSubmachineState())
return false;
}
}
return true;
|
TerminateConstraint
Description: The region has no terminate.
| OCL: |
|
self.subvertex->select(v|v.oclIsKindOf(Pseudostate))->
select(p|p.kind=PseudostateKind::terminate)->size()=0
|
| UML2 API: |
|
for (Iterator subvertices = object.getSubvertices().iterator();
subvertices.hasNext();) {
Vertex vertex = (Vertex)subvertices.next();
if (vertex instanceof Pseudostate){
Pseudostate pseudostate = (Pseudostate)vertex;
if (pseudostate.getKind().getValue() == PseudostateKind.TERMINATE)
return false;
}
}
return true;
|