Anatomy of a Service

Resources

A Service declares Resources which are persisted into a database.

Basic REST methods are provided for all Resources:

Resources are versioned. An attempt to PUT a stale Resource will fail.

Local and remote Resources offer an identical API to the programmer. Under the hood local Resources are persisted directly and remote Resources are käpisteld via REST. (warning) Should all Resources be treated as Remote, and should we delegate talking to the database to the Nexus?

Core

Involvement – Connects a Person to an Entity. Further information about the nature of the Involvement is managed by an Involvement Service.

Involvement Service – Manages the lifespan of an Involvement and provides more information about it.

Entity – An Event or an Organization. Pending better word. Core characteristic is that it may enlist People through Involvements.

Event – An Event takes place in time and possibly place. An Event may enlist People through Involvements.

External Service – A Service that is outside the scope of the System but uses some functionality or information provided by it through the API.

Organization – In old Kompassi terms, think of it as an Event without start or end dates. Can enlist People through Involvements as if it was an Event. Eg. Tracon ry might manage their membership roster as an Organization, with each member being a Person with an Involvement to the Organization.

Person (pl. People) – A natural person, a human being. May or may not be a User.

User – A Person who holds an user account to the System. External Services are not Users even though they may by some tools be modelled as such.

Example

Gary Gopher is working as a security guard in Exemplacon and is a member of the Exemplacon Association. He also gives two lectures in the event: one about GNS and the other about immersion.