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.formatCurrencylocale / timeZone は、ブラウザ上では 環境設定 > ローカライズ の値が既定値になります。サーバー上では JVM の既定値となるため、必要に応じて明示的に指定してください。

既定値(計算)

動作 > 既定値で「計算」を選ぶと、既定値を求めるスクリプトを記述できます。値を return してください。固定(静的)の文字列型では、UI ヒント > エディタータイプJSON / XML / HTML にするとハイライトが切り替わります。

return ctx.item.name;

検証

動作 > 検証は、プロパティ値を検証するスクリプトです。次のいずれかを返します。

  • { valid: true }
  • { valid: false, errors: [{ messageId, severity?, params?, ruleId?, fallbackMessage? }, ...] }

ctx で参照できる主なもの:

メンバー 説明
item 対象ノードのスナップショット(item.nameitem.pathitem.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 で参照できる主なもの: valuevaluesitemitem.nameitem.path など)、get(name) / getString(name) / getNumber(name) / getValues(name)formatCurrency(amount, currencyCodeOrOptions?)formatDate(date, optionsOrPattern?)

return ctx.value;

ヒント

  • 削除は保存時に確定するソフト削除です。復元で取り消せます。
  • キーの変更は、参照しているスキーマへ波及して更新されます。