Drools supports two kinds of knowledge sessions for executing rules: stateful and stateless. The names might be a bit misleading at first, because both sessions maintain state. The difference is that a stateful session also maintains its state between session invocations (calls to the fireAllRules
method). This is useful when we need to call rules multiple times over a period of time while making iterative changes to its state.
Another use case is if we need to execute the same set of rules over the same facts that don't change very often over time. It would be a waste of computer resources to insert all facts over and over again. Instead, we should use a stateful session and tell it about the facts that have been changed since the last execution.
The disadvantages are that working with this session is more complex, because we have to take into account its state unlike in a stateless session, where a new state is formed with each session invocation. A stateful session...