Example of the ModelStateDescriptor.txt file
You can use the following format of a ModelStateDescriptor.txt file to create your own version of the file.
# Comments are lines starting with #
# State descriptor is the construct below. One descriptor per state.
# State descriptor is a construct delimited by State and EndState. Line breaks are meaningful
# State descriptor "body" is a sequence of properties, each on a separate line. SOme properties are mandatory, some others are optional.
# All properties have the format PropertyName: "PropertyValue"
# All property values must be in double quotes
# State ID is the property that cannot be changed for a given state. It is the property that is physically recorded into the package. Name can change.
# Id is a string
# State
# ID property is mandatory
# ID: "IW"
# Name property is mandatory
# Name: "In Work"
# Protected property is mandatory, must be "Y" or "N"
# MakeProtected: "N"
# CanEditVersion property is mandatory, must be "Y" or "N". Set to "N" to prevent the user from editing the version in this state.
# Package version can be manipulated by scripts (e.g. state entry scripts)
# CanEditVersion: "Y"
# Disabled property is optional (default not disabled). It is used when this state stops being part of the development process, but
# there are still packages in models having this state set. The effect is that this state can still be represented, and transitions from this state
# are allowed (with the usual rules), but all transitions *to* this state are forbidden
# Disabled: "N"
# Icon property is optional
# Icon: "E:\GitCoreWork\build\Shared Files\Resources\Ico\ellipse.ico"
# TransitionTo properties are optional. Transition property can appear zero or more times
# For a State without Transition properties, transitions to any other state are allowed
# TransitionTo: "IW"
# TransitionTo: "UR"
# TransitionTo: "REL"
# Entry Script. The EntryScript is optional. The entry script is identified with the partial scoped name starting at the specified package that must have a unique name
# (this package is usually a profile deployed along with the configuration file)
# Variables are passed to the script: TargetPackage (object), FromState (string), ToState (string) in a way user can write a single script, if he prefers
# The script is invoked passing the target package/model:
# (a) when "Validate" is selected on the GUI, it returns true or false to enable or disable the transition
# (b) when "Commit" is selected on the GUI, it performs any activity associated with the transition (returns false/or error -> transition aborted)
# EntryScript: "PackageStateProfile::Scripts::EntryScriptForNewBye"
# EndState
State
ID: "In Work"
Name: "In Work"
MakeProtected: "N"
CanEditVersion: "Y"
TransitionTo: "Under Review"
TransitionTo: "Released"
Disabled: "N"
EndState
State
ID: "Under Review"
Name: "Under Review"
MakeProtected: "Y"
CanEditVersion: "Y"
TransitionTo: "In Work"
TransitionTo: "Released"
Disabled: "N"
EndState
State
ID: "Released"
Name: "Released"
MakeProtected: "Y"
CanEditVersion: "Y"
TransitionTo: "Change Planning"
Disabled: "N"
EndState
State
ID: "Change Planning"
Name: "Change Planning"
MakeProtected: "N"
CanEditVersion: "Y"
TransitionTo: "In Work"
TransitionTo: "Under Review"
TransitionTo: "Released"
Disabled: "N"
EndState