たとえば、StarSuite のプロキシ設定オプションを Configuration Manager で使用したいとします。
次のテンプレートは GUI の最初の実装を提供します。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE apt:template SYSTEM "policytemplate.dtd"> <apt:template> <category apt:name="StarSuite" apt:label="StarSuite"> <category apt:name="Internet" apt:label="インターネット"> <page apt:name="Proxy" apt:label="プロキシ"> <section apt:name="Settings" apt:label="設定"> <property apt:name="ProxyServer" apt:label="プロキシサーバー" apt:dataPath="org.openoffice.Inet/Settings/ooInetProxyType" oor:type="xs:int"> <visual apt:type="radioButtons"/> <constraints> <enumeration oor:value="0" apt:label="なし"/> <enumeration oor:value="2" apt:label="手動"/> </constraints> </property> <property apt:name="HTTPProxy" apt:label="Http プロキシ" apt:dataPath="org.openoffice.Inet/Settings/ooInetHTTPProxyName" oor:type="xs:string"/> <property apt:name="HTTPPort" apt:label="Http ポート" apt:dataPath="org.openoffice.Inet/Settings/ooInetHTTPProxyPort" oor:type="xs:int"/> <property apt:name="FTPProxy" apt:label="Ftp プロキシ" apt:dataPath="org.openoffice.Inet/Settings/ooInetFTPProxyName" oor:type="xs:string"/> <property apt:name="FTPPort" apt:label="Ftp ポート" apt:dataPath="org.openoffice.Inet/Settings/ooInetFTPProxyPort" oor:type="xs:int"/> <property apt:name="NoProxyFor" apt:label="プロキシなし" apt:dataPath="org.openoffice.Inet/Settings/ooInetNoProxy" oor:type="xs:string"/> </section> </page> </category> </category> </apt:template> |
以下は、新しいテンプレートを Configuration Manager に通知するために必要な手順です。
Configuration Manager をインストールしたマシンに root としてログインします。
/usr/share/webconsole/apoc/packages に HelloWorld/templates/StarSuite/Internet/Proxy というディレクトリを作成します。
先ほどリストにした XML テンプレートの内容で proxy.xml というファイルを作成します。ファイルを Proxy ディレクトリにコピーします。
ユーザー “noaccess” に Proxy ディレクトリへの読み取り/実行アクセス権を与えます。
ユーザー "noaccess" に proxy.xml ファイルへの読み取りアクセス権を与えます。
/usr/sbin/smreg add -a /usr/share/webconsole/apoc を実行します。
/usr/sbin/smcwebserver restart コマンドを使用して Web サーバーを再起動します。
Configuration Manager にログインすると、「StarSuite 7」という新しいトップレベルのカテゴリが表示されます。そのカテゴリを下に参照すると、作成したテンプレートで定義した「プロキシ」ページが表示されます。
テンプレートの最初の 2 行は XML の初期定義です。3 行目には apt:template というテンプレートのルート要素があり、これにテンプレートファイルで作成したポリシーの定義がすべて含まれています。
次の 4 行には、テンプレートの主要構成要素が含まれています。 apt:category の要素をネストして、設定ポリシーツリーのノードを作成します。設定ポリシーツリーは、Configuration Managerの GUI にポリシーの階層を視覚的に表します (「ツリー」を参照)。apt:name 属性を指定すると、属性を使用してその要素が一意に示されます。apt:label 属性は、表示されるテキストを GUI のカテゴリとして指定します。 apt:label 属性を指定しなければ、表示されるテキストは apt:name 属性によって定義されます。したがって、apt:label 要素は必ず指定してください。この要素はローカライズにも使用されます。詳細は、「ローカライズ」を参照してください。
すべての apt:category 要素には、1 つまたは複数の apt:category 要素または apt:page 要素が含まれている必要があります。 apt:page 要素は設定ポリシーツリーでリーフを表します。先ほど示した “プロキシ” ページはリーフの一例です。Configuration Manager ではページが単一の HTML ページとして表されるので、これを少なくとも 1 つの apt:section に分割する必要があります。apt:section 要素では、その子要素のすべてが見出し付きのテーブルで表されます。複数のセクションを使用すると、1 ページで設定をグループに分けることができます。
apt:section 要素には、設定オプションを表す apt:property 要素が含まれています。「Hello, world!」テンプレートには、ProxyServer、 HTTPProxy 、 HTTPPort、 FTPProxy、 FTPPort、 NoProxyFor の 6 つのプロパティがあり、各プロパティに apt:dataPath 属性が含まれています。これは必要な属性で、設定ツリーのデータの場所を指定します。設定ツリーは、設定リポジトリに保存されている設定オプションの階層を表します。詳細は、「ツリー」 を参照してください。
oor:type 属性は、設定リポジトリ内の設定オプションのデータ型を定義します。ProxyServer、 HTTPPort、および FTPPort は xs:int 型で、その他のプロパティは xs:string 型です。整数型と文字列型は、デフォルトでは編集フィールドとして表示されます。
visual 要素は、Configuration Managerにプロパティの表示方法を指示するために使用します。この要素を指定しなければ、プロパティ ProxyServer は、ラジオボタンのグループではなく編集フィールドを使って描画されます。
Configuration Manager の GUI は、ドロップダウンリストを使用する代わりに、整数値 2 候補をラジオボタンのグループとして表す点で、元の StarSuite
の GUI と異なります。2 つの値を視覚化するには、ドロップダウンリストよりもラジオボタンを使用した方が操作性が向上します。たとえば、値を変更するために必要なクリックが 1 回か 2 回かの違いがあります。
constraints 要素は enumeration サブ要素と併せて、描画するラジオボタンの数と、選択されるラジオボタンに応じてバックエンドに保存する整数値を指定するために使用します。apt:label 属性は、GUI に表示される各ラジオボタンの 文字列を指定します。