Please note : This help page is for an older version of Enteprise Archtiect. The latest help can be found here.

Recording and Mapping State Changes

This topic discusses how to set constraints against each State in the State Machine under a Class, to define the change in state to be recorded.

Topics

Topic

Detail

See also

Example

The State Properties dialog shown below is for the State called Parliament; the Constraints tab is open to show how the State is linked to the Class CXTrain.

A State can be defined by a single constraint or by many; in the example below the State Parliament has two constraints:
 

StateConstraintsTurquoise
 

The values of constraints can only be compared for elemental, enum and string types

The CXTrain Class has a member called Location of type int, and a member called Departing.Name of type CString; what this constraint means is that this State is evaluated to true when:

an instance of the CXTrain Class exists and
its member variable Location has the value 0 and
the member variable Departing.Name has the value Parliament

 

Reporting a State Machine

Operators in Constraints

There are two types of operators you can use on constraints to define a State:

Logical operators AND and OR can be used to combine constraints
Equivalence operators {= and !=} can be used to define the conditions of a constraint

 

All the constraints for a State are subject to an AND operation unless otherwise specified; you can use the OR operation on them instead, so you could rewrite the constraints in the above example as:

Location=0 OR
 

Location=1 AND
 

Departing.Name!=Central
 

Below are some examples of using the equivalence operators:

Departing.Name!=Central AND
 

Location!=1

 

 

Notes

Quotes around strings are optional; the comparison for strings is always case-sensitive in determining the truth of a constraint

Learn more