A machine is a device which accepts some inputs, possibly produces some output,
and has some memory sorting information on the overall results of all previous
The condition of the machine at a particular instance is called a state of the
machine. New input changes the state, may be to another state, and may be to
the same state. The effect of a new input depends on the present state the
machine is in.
If the total number of possible states is finite, the machine is called finite
state machine, eg. a computer.
Event Execution Summary
- Check the event's guard condition. Stop here if FALSE.
- Update state in machine
State Flow is a submodule that provides a base implementation of the State Machine class. It provides a base workflow as a base plugin.
Custom plugins should use State Flow as a model when:
- Adding new states
- Adding new events
State Flow provides the following optional integration with other modules:
- Rules: Hook a condition into a event transition
- Views: Exposes defined states, revision information, and timestamps
- Extend State Flow by hook_state_flow_machine_type_alter() instead of variable_set
- Bulk revision editing
- Workflow scheduling. Requires Date_Popup.
- Easily implement conditions to allow workflow to be ignored
Currently in unstable development as a collaborative effort with Workbench Moderation. State Flow will be come State Flow Node. An entity agnostic State Flow Entity will be created. State Flow Node will be dependent on State Flow Entity.
Join us in IRC at #drupal-statemachine
This module was also made with PHPStorm, an awesome IDE from Jetbrains that provides licenses supporting open source projects and Navicat, an equally awesome database management GUI.