アーキテクチャ概要

MintJams CMS は、OSGi(Apache Felix) 上に構築された、JCR ベースの運用プラットフォームです。サーバー(OSGi バンドル)と、ブラウザの仮想デスクトップ(Webtop クライアント)に分かれます。

ランタイムスタック

  • Apache Felix / OSGi — モジュール化されたサーバーランタイム
  • JCR リポジトリ(JSR 283) — コンテンツストア。ワークスペースごとに独立し、既定は埋め込み H2、クラスターでは外部データソース
  • SAML 2.0 SP / IdP — シングルサインオン。system ワークスペースがグローバルなアイデンティティストア(/home/users|groups|roles)。CMS_PUBLIC_BASE_URL を起点にゼロ設定で起動
  • Camunda BPM 7 — BPMN 2.0 のプロセスエンジン(ワークスペースごと)
  • Apache Camel 4 — EIP 統合エンジン(ワークスペースごと)
  • Apache Groovy / GSP — サーバーサイドのスクリプト(Groovy Server Pages)
  • Apache Tika / Lucene — 文書解析と全文検索(日本語の形態素解析に対応)
  • GraphQL API — すべてのデータアクセスと購読(subscriptions)の入口
  • Webtop クライアント — ブラウザの仮想デスクトップと標準アプリ

サーバーとクライアント

区分 置き場所 技術
サーバー(バンドル) bundles/ Java / OSGi
クライアント(Webtop) webtop/ TypeScript / Rollup

サーバーは Apache Felix 上で動き、Webtop は JCR コンテンツとして配信されます。サーバーが発行したイベントを、Webtop が GraphQL 購読で受け取ります。

バンドル一覧(抜粋)

バンドル 役割
org.mintjams.jcr JCR(JSR-283)リポジトリ実装
org.mintjams.rt.jcr JCR ランタイム(ワークスペース・セッション・索引連携)
org.mintjams.cms CMS セキュリティ、SAML SP/IdP 実装
org.mintjams.rt.cms ランタイム CMS(ワークスペース管理、GraphQL、プロビジョニング、Camel/Camunda、EventAdmin ブリッジ、Groovy)
org.mintjams.idp / org.mintjams.saml2 SAML 2.0 IdP / SP
org.mintjams.searchindex / org.mintjams.rt.searchindex 全文検索(Lucene)
org.apache.camel / org.camunda.bpm EIP / BPM エンジン
org.apache.groovy / org.apache.tika スクリプト / 文書解析

開発者が押さえる概念

  • ワークスペース — デプロイと分離の単位。独自の DB・索引・スキーマ・エンジンを持ち、system のアイデンティティを共有
  • セッションと JCR APIjavax.jcr.Session でコンテンツの読み書き・検索。トランザクションはコミット時にのみ EventAdmin イベントを発行
  • スクリプト / GSP — ワークスペースごとの Groovy エンジンで実行。セッションを javax.jcr.Session に適応して JCR へ直接アクセス可能
  • deploy()Session.deploy() がワークスペース起動時に 1 回実行され、etc/jcr/deploy/ のコンテンツ反映と etc/jcr/provisioning/*.yml のプロビジョニングを冪等に適用

関連