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.