ExternalEntity is an interface which should be implemented by all the
external entities. Promotion does not run in a vacuum, there is a set of external entities
that promotion depends on. These entities make up the external dependencies
for promotion. They are listed below:
- Store
- Order
- OrderItem
- Catalog Entry
- Customer
- Customer Profile
- Campaign
- Category
These entities are defined using interfaces. The entities are identified by a key object and abstract
factories are defined as the creation mechanism for these entities. Concrete
implementation for these abstract factories are configured as part of a
PromotionEngine.