The LAMS Learning Design processing engine needs to contact an Activity Tool (1) to create the authoring data for the Tool at authoring time, (2) to create user session data for the Tool when a user starts using the Activity and to provide user data if it is requested (e.g. User Profile), or (3) to access the user or group data from the Tool when a monitor wants to see the progress or to perform "teacher" functions on the Tool. These interactions between the system and Tools are implemented as Tool Interfaces (or Tool Contract) in LAMS Tools.
Sometimes it is desired to use ready-made non-LAMS Tools or external services for LAMS, e.g. stand-alone Chat server, e-Science Tools, or LMS Tools, by either installing them on LAMS or accessing via their external service or communication interface. Such Tools external interfaces vary, e.g. it could be either authenticated HTTP, REST, SOAP-based Web Services, XMPP (Jabber Chat protocol, eXtensible Messaging and Presence Protocol), etc.
To use either local or external Tools or Services that do not implement the LAMS Tool Interfaces, developers may use a Design Pattern, either of:
- Decorator: modifies behavior, without modifying an existing interface (i.e. The Tool Interface already exists but behaves differently than what is desired)
- Adapter: modifies interface without modifying behavior (i.e. Behaviour is there but the interface is different, therefore, interface must be Adapted)
- Wrapper: provides interface, services and behavior to an implementation that lacks any of these (i.e. Interface, service or bahaviour is non-existent)
although in practice the terms Decorator, Adapter, and Wrapper are often used interchangeably as though they were synonyms. (Refer to Design Pattern - Adapters and Wrappers)
E.g. LAMS Chat Tool (Chat and IM) is such a Tool. Using Moodle Tools (installed on Moodle and used from LAMS) is another example.