Schema Manager
Schema Manager は、JCR のメタデータスキーマとミックスインを定義・管理する管理者向けアプリです。プロパティの型や制約、計算項目を定義し、ミックスインによる継承や、JSON からの一括取り込みにも対応します。
管理者専用(adminOnly)/エディター(
application/vnd.webtop.metadata-schema+json)/singleton です。
開く
メニューから Schema Manager を開きます。
画面構成
- サイドバー(左) — スキーマとプロパティのツリー(絞り込み可)。ミックスインにはバッジが付きます
- エディター(右) — 選択したスキーマ/プロパティの編集フォーム
- ステータスバー — スキーマ数・ミックスイン数・プロパティ数、未保存件数、保存状態
主な操作
スキーマを作る
新規 → スキーマを追加で、キー(例: article)・ラベル・説明を入力します。展開してプロパティを追加し、Ctrl+S で保存します。
プロパティを定義する
各プロパティで、キー・型(必須)・ラベル・説明に加え、次を設定できます。
- 動作 — 計算項目(Calculated)、既定値(静的または計算式)
- 検証 — 必須、複数値
- 制約 — 文字数、パターン(正規表現)、最小/最大値、桁数、選択肢
- UI ヒント — 読み取り専用、エディタータイプ、表示書式 など
ミックスインを使う
共通プロパティをミックスインとして定義し、スキーマにアタッチして継承させます。スキーマ側で同じキーを定義すると上書き(シャドウ)されます。選択したプロパティをミックスインに抽出することもできます。
JSON から取り込む
プロパティをスキャンで JSON をドラッグし、取り込む項目・命名規則・接頭辞を調整して一括追加できます。
スクリプト(ECMAScript)
いくつかのフィールドは ECMAScript(JavaScript)で記述します。エディターはシンタックスハイライトに対応し、右上のボタンで最大化(全画面表示)できます。各スクリプトには共通のコンテキストオブジェクト ctx が渡されます。
ctx.formatDate/ctx.formatCurrencyのlocale/timeZoneは、ブラウザ上では 環境設定 > ローカライズ の値が既定値になります。サーバー上では JVM の既定値となるため、必要に応じて明示的に指定してください。
既定値(計算)
動作 > 既定値で「計算」を選ぶと、既定値を求めるスクリプトを記述できます。値を return してください。固定(静的)の文字列型では、UI ヒント > エディタータイプを JSON / XML / HTML にするとハイライトが切り替わります。
return ctx.item.name;
検証
動作 > 検証は、プロパティ値を検証するスクリプトです。次のいずれかを返します。
{ valid: true }{ valid: false, errors: [{ messageId, severity?, params?, ruleId?, fallbackMessage? }, ...] }
ctx で参照できる主なもの:
| メンバー | 説明 |
|---|---|
item |
対象ノードのスナップショット(item.name、item.path、item.mimeType など) |
propertyName |
対象プロパティ名 |
value / values / isArray |
入力値(単一/配列)と、配列かどうか |
get(name) / getString(name) / getNumber(name) / getValues(name) |
他プロパティの値を取得 |
formatCurrency(amount, currencyCodeOrOptions?) |
通貨整形(オプション: { currency?, locale? }) |
formatDate(date, optionsOrPattern?) |
日時整形(オプション: { pattern?, locale?, timeZone? }) |
const v = ctx.getString(ctx.propertyName);
if (v.length > 100) {
return {
valid: false,
errors: [{
messageId: "cms.validation.string.tooLong",
severity: "error",
ruleId: "maxLength",
params: { max: 100, actual: v.length },
fallbackMessage: "Too long (max 100)"
}]
};
}
return { valid: true };
表示形式
UI ヒント > 表示形式は、値の表示文字列を生成するスクリプトです。表示する文字列を return してください。
ctx で参照できる主なもの: value、values、item(item.name、item.path など)、get(name) / getString(name) / getNumber(name) / getValues(name)、formatCurrency(amount, currencyCodeOrOptions?)、formatDate(date, optionsOrPattern?)。
return ctx.value;
ヒント
- 削除は保存時に確定するソフト削除です。復元で取り消せます。
- キーの変更は、参照しているスキーマへ波及して更新されます。