In contrast, the mental model of a software engine is a mechanical engine, which one can start and stop, and which may run idle for periods of time. Examples of software engines include relational database engines, workflow engines, inference engines and search engines. A common characteristic of software engines is metadata that provides models of the real data that the engine processes. Software modules pass data to the engine, and the engine uses its metadata models to transform the data into a different state.