## Contract

## Definition

A contract is the declaration of a datum required for the execution of an activity, i.e. a factory component or task.

## Motivation

A contract is a visible piece of information required to execute an activity. The set of contracts of an activity encapsulates internal information and represents the dependencies with other activities.

## Structure

Contract properties:

- It has a mode: Input / Output / Input-Output
- It is mandatory or optional
- It is is a key/value association
- A value has a type that can be simple (e.g., a string value), complex (e.g., a list) or a reference (e.g., a domain model reference)
- It can have a default value