vlingo/schemata

Your Published Language, Managed.

Our schema registry provides the means for Bounded Contexts, a la services and applications, built using other components, to publish standard types, or schemas, that are made available to client services that consume these types with data. The published standard types in the registry are arranged in an organizational, services, and type hierarchy.

Organization: There may be one or many top-level organizations. An organization is the owner of all schemas under its hierarchy.

Unit: There may be one or many units under an organization. A unit is representative of some kind of business unit, division, or department. A unit’s name is flexible and may include dot-notation to create uniqueness in a large organization.

Context: A logical application or (micro)service within which schemas are to be defined and for which the schemas are published for potential consumers. You may think of a Context as the name of the Bounded Context, and it may even be appropriate to name it the top-level namespace used by the Context:

com.saasovation.agilepm

Category: A type division within a Context. Supported categories are: Command, Data, Document, Envelope, and Event.

Schema: The name and description of a given categorized schema. Each schema has at least one version and may have several.

SchemaVersion: Every schema has at least one version, and may have several. A Schema Version holds the specification of a particular version of the schema, and also holds a description, a semantic version number, and a status. The description is a textual/prose description of the purpose of the version. The specification is a simple DSL that defines the structure and attributes of the given version of the schema. The following is an example schema version specification under the Event category:

event PriceChanged {
  version eventVersion
  timestamp occurredOn
string productId
  BigSale:Marketing:Pricing:Data:Price newPrice
}

The above specification is dependent on the following schema version specification under the Data category:

data Price {
  double amount
  string currency
}

Combined, these two schemas define a single schema of a Domain Event named PriceChanged that is published by:

BigSale:Marketing:Pricing

Additional tooling generates the schema definition in source code for the programming language of the dependent consumer.