Workspaces

A workspace is a fully isolated content store for a functional domain (e.g. system, web, commerce). Each has its own database, blob (binary) storage, full-text search index, metadata schemas, BPMN process engine and EIP integration engine.

Most day-to-day operations are available from the Workspace Manager app. This page explains the configuration and behavior behind it.

The system workspace

system is a special workspace — the repository's identity store. It is referenced by every workspace and cannot be deleted.

  • /home/users, /home/groups, /home/roles (read by SSO/SAML and every workspace's principal resolution)
  • user profiles, avatars, preferences and wallpapers (personalization follows the user)
  • the default workspace for unqualified sign-ins (overridable)

Configuration

Default workspace

# <repository>/etc/repository.yml
defaultWorkspace: web

You can also use the framework property org.mintjams.jcr.workspace.default.

Naming rules

Lowercase letters, digits, hyphens and underscores; must start with a letter; max 64 characters. Names appear in URLs and as directory names.

Enabling engines

The BPM and EIP engines are enabled by default and can be toggled per workspace.

# <workspace>/etc/bpm/bpm.yml
enabled: true
# <workspace>/etc/eip/eip.yml
enabled: false

Lifecycle

Creation

Creation runs as a background job through creatingstarting. After schema creation, default nodes and the search index, provisioning and content deployment run. If service startup fails, the workspace enters the FAILED state with the reason in stateMessage.

If you provide <repository>/etc/workspace-template/, its contents are copied verbatim into each new workspace (in a cluster this must include an etc/jcr/jcr.yml pointing at the shared database).

States

State Meaning
ONLINE CMS services running; ready for use
STARTING the JCR workspace is open, but services are still coming up
FAILED service startup failed; needs intervention (reason in stateMessage)

Each engine reports enabled (the config switch) and running (the actual state) separately.

Deletion

Deletion runs through stoppingdeleting, stopping services fully before removing the directory. The system workspace and the workspace your session is bound to cannot be deleted.

In a cluster, deletion leaves the shared database and shared blob storage in place — remove them manually. Before recreating a workspace of the same name, always empty the database (leftover old tables resurrect old content).

Cautions

  • The search index is generated at workspace startup. If you need Japanese morphological analysis, include etc/search/ in your template (otherwise it falls back to Lucene's StandardAnalyzer).
  • For creating/deleting in a cluster and handling shared storage, see "Clustering".