アーキテクチャ概要
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 API —
javax.jcr.Sessionでコンテンツの読み書き・検索。トランザクションはコミット時にのみ EventAdmin イベントを発行 - スクリプト / GSP — ワークスペースごとの Groovy エンジンで実行。セッションを
javax.jcr.Sessionに適応して JCR へ直接アクセス可能 - deploy() —
Session.deploy()がワークスペース起動時に 1 回実行され、etc/jcr/deploy/のコンテンツ反映とetc/jcr/provisioning/*.ymlのプロビジョニングを冪等に適用
関連
- 独自アプリ: 「独自アプリの作り方」
- データモデル: 「JCR データモデル・Schema」
- 拡張と連携: 「OSGi 拡張・BPM/EIP 連携」