Opher had a great post last week Event Processing Thinking: On Decision Agents in which he described decision agents and compared them to event processing agents.
An Event Processing Agent may be a Decision Agent, or provider of input or trigger to other decision agents.I completely agree with Opher on this. Decision Agents are simply event processing agents that make business decisions. This means that:
A decision agent may be Event Processing Agent, but also can consist of several other types of agents.
- The logic in decision agents is business logic, not technical logic
- The way a decision agent functions is defined by business users, not technical ones
- The behavior of a decision agent changes when the business changes not when the system changes
- The analytics used in a decision agent predict useful things about the business not just about the system
Of course the business rules and analytics used in decision services and decision agents can be the same, and should be managed as the corporate assets they are, but the deployment infrastructure, invocation mechanisms etc will be different. Decisions, and the services/agents that make them, should be externalized and managed not just lumped in with everything else.
I blogged about this before and Paul Vincent over at the CEP blog also had an interesting post on this topic.














It would be nice if the behavior decision agent could change only when the business changes and not in response to changes in the system.
This is a good goal, but is not true for most decision agents in the wild today. Most decision agents still mix knowledge about the business with logic about the system and thus are are sensitive to changes in either.