The Kodexa platform is made up of several types of component, however all these components share some common attributes.
Components are owned by Organizations
A component is owned by an organization, and only one organization. However, a component can be “public” allowing it to be used by other Organizations.
A Component can be identified through a Reference
All components are identified using their reference (or ref). This is made up of the slug for the organization, the component’s slug and then the version. For example:
Types of Component
There are several types of component:
Stores Stores are a general capability to hold documents, data, code or models
Taxonomies Taxonomies are how we represent data structures in Kodexa
Project Templates These capture the metadata to allow you to create and make public new project templates for the UI
Assistant Definitions The definition of an assistant, these can then be created as an instance of an assistant in a project
Actions The most basic unit of functionality in a pipeline
Pipelines Re-useable pipeline definitions that can be used
Components vs Entities
Components are a way to capture the metadata about a component, however a component typically has one or more entities that actually hold data or links to content (like documents).
So while a component is something that has a reference and can be deployed an entity has an ID as is typically managed by a type of component or as part of the organization or platform.
We differentiate between the two because we want to be able to show that a component is usually part of how we might configure an organization in the platform for a use-case while the entities are usually associated with the projects, data or documents being worked on.
classDiagram
Entity <|-- Project
Entity <|-- Assistant
Entity <|-- Exception
Entity <|-- DataObject
Entity <|-- DataAttribute
Entity <|-- Training
Component <|-- Store
Component <|-- ProjectTemplate
Component <|-- AssistantDefinition
Component <|-- Pipeline
Component <|-- Action
Component <|-- ExtensionPack