Tags: explanation, administrator, state-machine

State Machine#

Note

This page has been migrated from the old documentation, and has not yet been fully revised. There might be inconsistencies or errors when using with current LinkAhead versions.

Prerequisites#

In order to use the state machine functionality you have to set the corresponding server setting: EXT_ENTITY_STATE=ENABLED.

Also, a few RecordTypes and Properties are required. You can use the script setup_state_model.py to create those, or you may have a look at it to see what is needed (setup_state_data_model function).

Defining the State Machine#

Now you can create your own state machine. You can define States and Transitions and bundle it all to a StateModel. The above-mentioned setup_state_model.py script defines a publication cycle with the state “Unpublished”, “UnderReview” and “Published”. Again, the setup_state_model.py script provides orientation on how this can be setup (setup_model_publication_cycle function).

Note, that you can provide ACL to the state definition which will be applied to an entity once the state is reached. This is for example useful to change the visibility depending on a state change.

If you assign a state to a RecordType, this state will be the initial state of Records that have that parent. For example by executing:

rt = db.RecordType("Article").retrieve()
rt.state = db.State(name="UnPublished", model="Publish Life-cycle")
rt.update()