Sun Java ロゴ     前へ      目次      索引      次へ     

Sun ロゴ
Sun™ Identity Manager 8.0 ワークフロー、フォーム、およびビュー 

第 5 章
XML オブジェクト言語

XML オブジェクト言語は、ストリング、リスト、マップなどの一般的な Java オブジェクトを表現できる XML 要素の集合です。

この章の内容

関連する章


XML オブジェクト言語について

XML オブジェクトはフォームで頻繁に使用されますが、ワークフローと規則で使用することもできます。もっとも一般的な用途は、フォームの Select フィールドまたは MultiSelect フィールドで許可される値のリストの作成です。次に例を示します。

<Field name='global.state'>
    <Display class='Select'>
       <Property name='title' value='State'/>
       <Property name='allowedValues'>
         <List>
            <String>Alabama</String>
            <String>Alaska</String>
            <String>Arizona</String>
            <String>Arkansas</String>
            <String>California</String>
            <String>Washington</String>
            <String>Washington D.C.</String>
            <String>West Virginia</String>
            <String>Wisconsin</String>
            <String>Wyoming</String>
         </List>
       </Property>
    </Display>
</Field>

XML オブジェクト言語の要素は、XPRESS 言語の要素に似ていますが、値が静的な場合は、XML オブジェクト言語を使用するほうが効率的です。

この 2 つの言語の主な相違点は、XML オブジェクト言語では、オブジェクトの内容を、式を使用して計算できないことです。この制限があるために、システムはオブジェクトをより効率的に作成することができ、オブジェクトが大きい場合の処理が迅速になります。

XML オブジェクト言語を使用してリストを定義すると、リポジトリからフォームが読み込まれるときにリストが作成され、以後はそれが再利用されます。XPRESS でリストを定義した場合は、フォームを表示するたびに新しいリストが作成されます。


XML オブジェクト言語とそれに対応する XPRESS

次の表は、基本的な XML オブジェクトと、それに対応する XPRESS 式 (存在する場合) を示しています。

表 5-1 基本的な XML オブジェクトとそれに対応する XPRESS 式

XML オブジェクト言語

XPRESS 言語

<String>cat</String>

<s>cat</s>

<Integer>10</Integer>

<i>10</i>

<Boolean>true</Boolean>

<Boolean>false</Boolean

<i>1</i>

<i>0</i>

<null/>

<null/>

<Map>

   <MapEntry key='name' value='neko'/>

   <MapEntry key='ID' value='123'/>

</Map>

<map>

   <s>name</s>

   <s>neko</s>

   <s>ID</s>

   <i>123</i>

</map>

<List>

   <String>cat</String>

   <String>dog</String>

   <integer>673</Integer>

</List>

<list>

   <s>cat</s>

   <s>dog</s>

   <i>673</i>

</list> 

<Long>123456789</Long>

なし

<Date>20020911 09:15:00</Date>

なし

XML オブジェクト内で XPRESS ステートメントを使用することはできません。

XPRESS での XML オブジェクトの使用

式の記述が許可される場所であれば、XPRESS 内で XML オブジェクトを使用できます。次の例では、呼び出されたメソッドの引数としてマップが渡されます。

<invoke name='printTheMap'>
    <ref>mapPrinter</ref>
       <Map>
       </Map>
</invoke>

2.0 より前のリリースの XPRESS では、すべての XML オブジェクトを <o> 要素で囲む必要がありました。この制約は適用されなくなりましたが、XPRESS を含む古いファイルでは、このような設定をまだ見かけることがあります。

XPRESS の代わりに使用される XML オブジェクト言語

XML オブジェクト言語と XPRESS はどちらもフォーム内のリストを表現する方法を提供しますが、リストが長く、静的なデータを含んでいる場合は、XML オブジェクト構文を使用するほうが XPRESS より効率的です。リストはメモリ内に 1 回作成され、参照のたびにそれが再利用されます。一方、XPRESS のリスト構文は、参照のたびに評価され、毎回新しいリストが作成されます。

次の表に示される情報のリストを作成するときは、通常、XML オブジェクト言語が使用されます。

表 5-2 情報リストでの XML の用途

情報リストの種類

使用される場所

マシン名

フォーム

ビジネスサイト

フォーム

承認者名

ワークフロー

XML オブジェクト言語と XPRESS でのリストの表現

XML オブジェクト言語と XPRESS は、どちらもフォーム内のリストを表現する方法を提供します。

XPRESS によるリストの表現

XPRESS でリストを表現するときは、<list> 要素を使用します。<list> 要素には、任意の XPRESS 式を含めることができます。


計算される要素を含むリストで使用できるのは、<list> XPRESS 要素のみです。<list> 要素を使用すると、その要素が含まれるフォームの実行速度が低下する場合があります。リストに大量の要素が含まれる場合を除き、このパフォーマンス低下に気が付くことはほとんどありません。フォームでの <list> の使用は許容範囲内であり、よく使用されます。


次の例では、XPRESS リストで文字列定数 <s> を使用していますが、<invoke> 要素または <concat> 要素を使用して、リスト要素を動的に作成することもできます。

<list>
   <s>cat</s>
   <s>dog</s>
</list> 

XML オブジェクト言語によるリストの表現

XML オブジェクト言語でリストを表現するときは、<List> 要素を使用します。<List> 要素に含めることができるのは、その他の XML オブジェクトのみです。次の例の <List> 要素の内容は、<String> 要素です。

<List>
   <String>cat</String>      
   <String>dog</String>    
</List>

両タイプの構文を使用したフォームの例

次のフォームには、XML オブジェクト構文と XPRESS の両方によって定義されたリストを含むフィールドが組み込まれています。

<Form>

    <Field name='department'>
      <Display class='Select'>
        <Property name='allowedValues'>
          <List>
           <String>Engineering</String>
           <String>Marketing</String>
           <String>Sales</String>
          </List>
        </Property>
      </Display>
    </Field>

 

    <Field name='department2'>
      <Display class='Select'>
        <Property name='allowedValues'>
          <expression>
            <list>
              <s>Engineering</s>
              <s>Marketing</s>
              <s>Sales</s>
            </list>
          </expression>
        </Property>
      </Display>
    </Field>

</Form>

department フィールドの allowedValues リストは、<List> を使用して作成される静的なリストとして定義されています。このフォームを何回使用する場合でも、作成されるリストは 1 つのみです。反対に、department2 フィールドの allowedValues リストは、<list> 式を使用して定義されています。このフォームを使用するたびに、新しいリストが作成されます。

XML オブジェクト構文と XPRESS によるマップオブジェクトの定義

XML オブジェクト構文と XPRESS のどちらを使用しても、マップオブジェクトを動的に作成できます。XPRESS の <map> 要素の使用は、XML オブジェクト言語の <Map> 要素と <MapEntry> 要素の使用に似ています。これらの要素の違いは、<map> の内容を式を使用して計算できることです。一方、<Map> 要素を使用して定義できるのは、静的なマップのみです。


マップは、<invoke> 式を使用して呼び出すメソッドの引数として使用される場合があります。たとえば、FormUtil クラスの一部のメソッドは、引数としてマップを必要とします。


XPRESS によるマップの表現

XPRESS の <map> 要素の内容は、名前と値のペアの式です。偶数番号の式はマップキーを定義し、奇数番号の式はマップ値を定義します。キー式の評価が NULL となる場合は、そのエントリは無視されます。

XPRESS の <map> 要素を使用することで、java.util.HashMap オブジェクトを動的に作成することができます。

<map>
   <s>name</s>
   <s>Jeff</s>
   <s>phone</s>
   <s>338-1818</s>
</map>

XML オブジェクト構文によるマップオブジェクトの定義

XML オブジェクト構文を使用して、マップオブジェクトを次のように定義できます。

<Map>
   <MapEntry key='name' value='Jeff'/>
   <MapEntry key='phone' value='338-1818'/>
</Map>



前へ      目次      索引      次へ     


Part No: 820-5454.   Copyright 2008 Sun Microsystems, Inc. All rights reserved.