A message file (extension .sfmxsd) is a collection of messages. A service flow typically uses at least three message files: an input message file, an output message file, and a variable message file (see How messages are used in flows).
A message is a container for declared variables. Typically the declared variables are related to each other in some way (for example, an input message contains the input parameters for an invoked flow) but they need not be. The declared variables can be simple variables (string, integer, float, and so on) or variables having complex data structures, including arrays.
All the components of a message, at whatever level of nesting, are collectively called message elements.
Besides messages, a message file also contains types and groups. Every simple or complex variable defined in a message is associated with a data type that defines its structure. Each variable can have a unique type of its own or there can be multiple variables all having the same data type.
A group is a complex data structure that can be used as part of the definition of a complex variable.
For more information about the components of a message file see Message model objects.