Data Dictionary 構築ブロックアセットの理解

データディクショナリは、ビジネスボキャブラリを活用してビジネスドメイン内で使用されるデータ要素とその説明のカタログです。データディクショナリには、データ構造とその関連属性の説明を示すための、データモデル管理用のメタデータも含まれます。ビジネスユーザーは一般的に、XSD(xml スキーマ)、FML(アドビアプリケーションモデリング言語)、Java クラス、ActionScript クラスなどの、開発者が使用するようなメタデータ表現に関する知識を必要としません。しかし、通常はソリューションを構築するために、これらのデータ構造や属性の利用が必要となります。Data Dictionary 構築ブロックによって、メタデータとバックエンド統合に関する独自の表現が可能になります。バックエンドのシステム統合に関する知識のないビジネスユーザーでも、この構築ブロックを使用してモデルをソリューションレベルで作成し使用することができます。ビジネスユーザーは LiveCycle 内部で、データディクショナリを使用して条件を示したり、ソリューションのワークフロー内でデータを使用したりできます。

ツール

データディクショナリを使用するソリューションの開発では、通常、以下のツールを使用します。

  1. データディクショナリ。データディクショナリの参照、作成、編集および書き出しを可能にするユーザーインターフェイスです。管理ウィンドウ内のポータルの、アセットを管理ページからアクセスできます。

  2. データディクショナリエディター。このユーザーインターフェイスでは、この構築ブロックと共に提供されるデータディクショナリの作成と保守を行うことができます。

    • ドメイン固有 XSD スキーマの読み込みによるデータディクショナリの作成。

    • データディクショナリ要素(DDE)のデータディクショナリへの追加やデータディクショナリからの削除。

    • データディクショナリレベルでの属性の関連付け。

    • DDE レベルでの属性の関連付け。

    • 注釈付き FML へのデータディクショナリの書き出し。

    • 注釈付き FML の読み込みによるデータディクショナリの作成。

    • データディクショナリのサンプルデータ xml の作成。サンプル xml を使用すると、バックエンドのサポートを設定せずにデータディクショナリのインスタンス依存ユースケースをすばやく実行できます。

  3. Java 開発ツール

    • Java/Spring プロジェクトを作成するための IDE

    • ANT ビルドツール

  4. LiveCycle ツール

    • Adobe® LiveCycle® Designer

    • Adobe® Flash® Builder™

Data Dictionary 構築ブロックサービスに関するその他の情報については、以下のリソースを参照してください。

データディクショナリ

データディクショナリウィンドウを使用して、データディクショナリを作成および管理できます。このウィンドウ内では、「新規」または「編集」をクリックしてデータディクショナリエディターを起動することで、データディクショナリを作成したり既存のデータディクショナリを編集したりできます。

フルサイズのグラフィックを表示
データディクショナリウィンドウ

データディクショナリエディター

データディクショナリエディターは、データディクショナリおよび関連する要素の管理に使用されます。ミドルウェア開発者はデータディクショナリエディターを使用して、データディクショナリとその要素に関するメタデータプロパティの作成、変更、削除を実行できます。

フルサイズのグラフィックを表示
データディクショナリエディター

データディクショナリの作成時または更新時に、データディクショナリエディターは強制的に検証を行います。有効なスキーマのための DDE 作成ルールについて詳しくは、「データディクショナリ要素」を参照してください。

フルサイズのグラフィックを表示
データディクショナリ要素

データディクショナリエディターを使用すると、ビジネスプロセスの所有者はデータディクショナリを、有効な XML スキーマまたは FML モデルから読み込むことで作成できます。また、ビジネスプロセスの所有者はデータディクショナリエディターを使用して、データディクショナリを FML に書き出したり、サンプル xml データを生成したりできます。

ミドルウェア開発者が複数のトップレベル要素を伴うスキーマを読み込もうとすると、データディクショナリエディターは 1 つのトップレベル要素を指定するよう求めます。開発者はデータディクショナリツリーの作成時に、利用するトップ要素を 1 つ選択します。データディクショナリは、まとまりのないデータのセットではなく、特定のコンテキスト向けのデータが凝集したインスタンスを表します。要素のフォレストを持つ XSD は、要素の複数のツリーを表します。各ツリーは関連のないデータセットです。データディクショナリは、このような 1 つのツリーに対して 1 つ作成されます。複数のトップレベルエンティティを伴う注釈付き FML は読み込むことができません。データディクショナリ/DDE の名前、参照名および要素タイプは、必要なパラメーターなので指定してください。親 DDE(複合)には、同じ名前の 2 つの子を含めることはできません。

データディクショナリエディターの検証

データディクショナリの作成時または更新時に、データディクショナリエディターは強制的に以下の検証を行います。

  • 複合タイプのみが、データディクショナリのトップレベル要素として使用できます。

  • 複合要素とコレクション要素はリーフレベルでは使用できません。プリミティブ(String、Date、Number、Boolean)要素のみがリーフレベルで使用できます。この検証では、子 DDE なしの複合要素やコレクション要素が存在しないことが確認されます。

  • データディクショナリの作成で XSD を読み込むときに、複数のトップレベル要素が検出されると、データディクショナリエディターはデータディクショナリを作成するために 1 つのトップレベル要素を指定するように求めます。

  • データディクショナリを作成するために汎用 FML/LiveCycle データモデルを読み込むとき、複数のエンティティが検出された場合は、データディクショナリの作成に使用するトップレベル要素の選択を求めるプロンプトがデータディクショナリエディター上に表示されます。

  • 複数のトップレベルエンティティを伴う注釈付き FML は読み込むことができません。

  • データディクショナリに必要なパラメーターは、名前のみです。

  • 親 DDE(複合)には、同じ名前の 2 つの子を指定できません。

  • DDE が必須のパラメーターではない場合のみ、計算済みとしてマークされていることを確認します。必須の要素は計算済みとして指定できず、計算済み要素は必須として指定できません。また、コレクション要素と複合要素は計算済み要素として指定できません。

  • DDE が計算済みではない場合のみ、必須としてマークされていることを確認します。また、(コレクション要素の唯一の子である)コレクションタイプを表す「collectionElement」ではないことを確認します。

  • 空のキーまたは重複するキーは、データディクショナリまたは DDE の extendedProperties では使用できません。

  • 拡張プロパティのキーまたは値の内部でコロン(:)や縦棒(|)の文字を使用しないでください。これらの禁止文字の使用について検証は行われません。

データディクショナリレベルでの検証
  • データディクショナリ名はヌルにできません。

  • データディクショナリ名には、英数字のみ使用する必要があります。

  • データディクショナリの子要素のリストは、ヌルまたは空にできません。

  • データディクショナリに複数のトップレベルデータディクショナリ要素を含めることはできません。

  • 複合タイプのみが、データディクショナリのトップレベル要素として使用できます。

データディクショナリ要素レベルでの検証
  • すべての DDE 名は、ヌルにできません。

  • すべての DDE の要素タイプを「not null/non null」にする必要があります。

  • すべての DDE 参照名は、ヌルにできません。

  • すべての DDE 参照名は、一意である必要があります。

  • すべての DDE 参照には、英数字およびアンダースコア「_」しか使用できません。

  • すべての DDE 表示名には、英数字およびアンダースコア「_」しか使用できません。

  • 複合要素とコレクション要素はリーフレベルでは使用できません。プリミティブ(String、Date、Number、Boolean)要素のみがリーフレベルで使用できます。この検証では、子 DDE なしの複合要素やコレクション要素が存在しないことが確認されます。

  • 親 DDE(複合)には、同じ名前の 2 つの子要素を指定できません。

  • ENUM サブタイプは、String および Number 要素にのみ使用します。

  • コレクション要素および複合要素は、計算済み要素として指定できません。

  • DDE は、計算済みかつ必須の要素として指定できません。

  • 計算済み DDE には有効な式を含める必要があります。

  • 計算済み DDE に XML バインディングは指定できません。

  • コレクション DDE のタイプを示す DDE は、計算済みまたは必須の要素として指定できません。

  • サブタイプが ENUM の DDE は、値セットをヌルまたは空にすることはできません。

  • コレクション DDE の XML バインディングで、属性へのマッピングはできません。

  • XML バインディング構文は、有効なものである必要があります(@ を 1 つだけ使用する、@ は属性名の前にのみ使用するなど)。

データディクショナリエディター定義パネル

データディクショナリエディター定義パネルは DDE を作成するためのユーザーインターフェイスで、ツリー形式で表示されます。データディクショナリの構造パネルには、DDE のリストが表示されます。フィールドおよび変数リストパネルには、選択した DDE に関連するプロパティのリストが表示されます。また、要素を右クリックして、データ要素を入力できます。

Data Dictionary サービス

Data Dictionary 構築ブロックサービスは、OSGi サービスとして公開されます。次に、Data Dictionary 構築ブロックで提供されるサービスのリストを示します。

名前

説明

DataDictonaryRegistryService

データディクショナリに対する作成、取得、更新、削除の各操作(CRUD 操作)を実行します。

DataDictionaryUtilService

以下を実行するデータディクショナリのユーティリティ関数を提供します。

  • XSD を読み込み、データディクショナリを作成します。

  • データディクショナリを注釈付き FML として読み込みまたは書き出します。

  • 汎用 FML(LiveCycle データモデル)を読み込み、データディクショナリを作成します。

  • XSD/FML からのデータディクショナリオブジェクトを作成します。その後データディクショナリオブジェクトは、DataDictionaryRegistryService 内の API を使用して永続化できます。

  • サンプル xml データを作成します。

  • DDI を XML にシリアル化します。

  • XML/Java オブジェクトから DDI を作成します。

デフォルトエンドポイント

Data Dictionary 構築ブロックサービスは、デフォルトでは Flex リモーティングおよび Spring HTTP 経由で公開されます。

Expression evaluator サービス(EXM)上での Data Dictionary 構築ブロックの依存関係

Expression evaluator(EXM)サービスは、構築ブロックとして公開されます。Data Dictionary 構築ブロックは EXM に依存しており、これはプラグ可能なコンポーネントです。Expression evaluator は JSP EL の評価をサポートしています。Expression evaluator サービスは、データディクショナリ用の計算済み DDE の評価に使用されます。EXM を使用した、Data Dictionary 構築ブロックがサポートする DDE 評価機能について、以下にポイントを挙げます。

  1. データディクショナリエディターのユーザーインターフェイスを使用して、DDE を計算済みとしてマークし、それに対応する JSP EL 式を指定できます。

  2. DDE の計算式には他の DDE の値を使用できます。例えば、「fullName」の名前を持つ DDE には、「${firstName}$ {lastName}」という式を指定できます。この式は、氏名を姓と名を連結した文字列として評価します。

    注意: 「firstName」および「lastName」は、各 DDE の参照名です。
  3. Data Dictionary 構築ブロックは、計算式の入れ子構造をサポートしていません。式のオペランドに他の計算式を指定できません。計算済み DDE の評価は、DDI の作成時にサーバー側で実行されます。

  4. 計算済み DDE は必須ではないものとして作成されます。つまり、DDI 内にヌル値が許可されます。

Data Dictionary ランタイムワークフロー

Data Dictionary ランタイムは、1 つのデータディクショナリに相当するデータディクショナリインスタンス(DDI)を返す処理を行います。Data Dictionary ランタイムは、入力 XML データからの DDI の作成のみをサポートします。ソリューションには初期化用の入力 XML データファイルがあり、このファイルを使用してさまざまなプロセスが開始します。例として、関連するすべての詳細を含む入力 XML ファイルによって、レター生成プロセスがトリガーされる状況が挙げられます。入力 XML データは、データディクショナリの作成元となった XSD のスキーマに従う必要があります。

データディクショナリが手動で作成された場合、デフォルトの XSD スキーマは存在しません。データディクショナリが XSD スキーマから作成され、その読み込み内容が修正された場合、その構造は最初の XSD スキーマと異なるものになる可能性があります。このようなエラーを防ぐため、Data Dictionary 構築ブロックでは、データディクショナリに相当するサンプル XML を生成するツールを備えています。入力 XML データがサンプル XML と一貫した形式で処理システムに入力されることが、このシステムによって保証されます。Data Dictionary ランタイムは、特定のデータディクショナリ参照に基づいた入力 XML から DDI を作成します。その後 DDI を使用して、アプリケーション内で値を設定できます。データディクショナリインスタンスの書き戻しは、このシステムではサポートされていません。ただし、データディクショナリインスタンスはシリアライズ可能であり、ワークフロー内で自由に渡すことができます。

エンドツーエンドのフロー定義

エンドツーエンドのデータディクショナリ定義について、以下の図に示します。この図は、関係する役割、使用ツール、メタデータ保存先および実行時のアクセスからなる統合プロセスを示しています。

フルサイズのグラフィックを表示
データディクショナリ定義
  1. ビジネスプロセスの所有者は、データディクショナリエディターを使用してデータディクショナリを手動で作成できます。データディクショナリエディターを使用したデータディクショナリの作成については、データディクショナリの作成を参照してください。

  2. また、ビジネスプロセスの所有者は、データディクショナリエディターを使用して、スキーマを読み込んでデータディクショナリを作成することもできます。

  3. データディクショナリの保存時に、データディクショナリのメタデータ定義は、コンテンツリポジトリなどのバックエンドに保存されます。

  4. ビジネスプロセスの所有者は、データディクショナリエディターを使用して、注釈付き FML モデルの形式でデータディクショナリを書き出すことができます。書き出したこの注釈付きモデルを読み込むことで、データディクショナリを作成できます。

  5. 開発者はドメイン XSD を使用して、データディクショナリと、アプリケーション向けのフォームなどのアーティファクトの両方を作成できます。XSD の読み込みや、それによる関連フォームの作成には、Designer を使用できます。

  6. ソリューション開発者は、アプリケーションが必要とするフォームや、対応する Java クラス、Flex コンポーネントなどのアーティファクトの観点からソリューションを作成します。

  7. ソリューション開発者は、それらをアセンブルし、デプロイ可能な 1 つのアーカイブにします。その後、ソリューションがデプロイされます。ソリューションは、データディクショナリエディターによって公開されるサンプルデータディクショナリの XML 生成機能を使用してテストできます。

  8. デプロイされた顧客ソリューションは、Data Dictionary メタデータと Data Dictionary ランタイムの両方にアクセスして、フローを最後まで進めます。例えば、ドキュメントコンポーザーアプリケーションはレターデータディクショナリにアクセスして、必要なフィールドをレンダリングします。

  9. Data Dictionary ランタイムは Data Dictionary メタデータにアクセスして、データディクショナリインスタンス(DDI)を作成します。Data Dictionary ランタイムについて詳しくは、Data Dictionary ランタイムワークフローを参照してください。

  10. Data Dictionary ランタイムは従来のバックエンドシステムとは直接統合できません。

データディクショナリ要素の XML スキーマへのマッピング

Data Dictionary 構築ブロックでは、XML スキーマからデータディクショナリを作成できます。Data Dictionary ユーザーインターフェイスから直接作成することもできます。データディクショナリ内のすべてのデータディクショナリ要素(DDE)には XML バインディングフィールドがあり、DDE のバインディングを XML スキーマの要素に格納できます。各 DDE のバインディングは、親 DDE に対する相対パスにします。

Data Dictionary 構築ブロックの実装の詳細を示すサンプルモデルおよびコードサンプルについて、以下に示します。

単純な(プリミティブ)要素のマッピング

プリミティブ DDE とは、本来アトミックなフィールドまたは属性を表します。複合タイプ(複合 DDE)または繰り返し要素(コレクション DDE)以外で定義されたプリミティブ DDE は、XML スキーマ内のどの場所にも格納できます。プリミティブ DDE に対応するデータの場所は、その親 DDE のマッピングには依存しません。プリミティブ DDE は、XML バインディングフィールドのマッピング情報を使用して値を特定します。マッピングは次のいずれかに解釈されます。

  • 属性

  • 要素

  • テキストコンテキスト

  • なし(無視されたDDE)

単純なスキーマの例を以下に示します。

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
  <xs:element name='age' type='integer'/> 
  <xs:element name='price' type='decimal'/> 
</xs:schema>

データディクショナリ要素

デフォルトの XML バインディング

age

/age

price

/price

複合要素のマッピング

複合要素ではバインディングがサポートされていません。バインディングが提供されても無視されます。プリミティブ型の構成要素であるすべての子 DDE のバインディングは、絶対パスである必要があります。複合 DDE の子要素に対して絶対マッピングが使用できるので、XPath バインディングの観点で柔軟性が高くなります。複合 DDE を XML スキーマの複合タイプ要素にマッピングすると、その子要素のバインディングの範囲が制限されます。

以下の例は、メモ(note)のスキーマを示しています。

<xs:element name="note"> 
    <xs:complexType> 
        <xs:sequence> 
            <xs:element name="to" type="xs:string"/> 
            <xs:element name="from" type="xs:string"/> 
            <xs:element name="heading" type="xs:string"/> 
            <xs:element name="body" type="xs:string"/> 
        </xs:sequence> 
    </xs:complexType> 
</xs:element> 

データディクショナリ要素

デフォルトの XML バインディング

note

空(ヌル)

to

/note/to

from

/note/from

heading

/note/heading

body

/note/body

コレクション要素のマッピング

コレクション要素が別のコレクション要素にマッピングできるのは、別のコレクション要素のカーディナリティが 1 より大きい場合のみです。コレクション DDE の子 DDE には、その親の XML バインディングに対する相対(ローカル)XML バインディングが含まれます。コレクション要素の子 DDE は親と同じカーディナリティを持つ必要があるので、カーディナリティの制約を守るために相対バインディングを必須とし、子 DDE に繰り返さない XML スキーマ要素が指定されないようにします。以下の例では、「TokenID」のカーディナリティが、その親コレクション DDE. の「Tokens」と同じである必要があります。

コレクション DDE を XML スキーマ要素にマッピングする場合:
  • コレクション要素に対応する DDE のバインディングは、絶対 XPath である必要があります。

  • コレクション要素のタイプを表す DDE には、バインディングを指定しません。バインディングを指定しても無視されます。

  • コレクション要素のすべての子 DDE のバインディングは、親コレクション要素の相対パスである必要があります。

以下の XML スキーマは、名前が Tokens で maxOccurs 属性が「unbounded」の要素を宣言しています。つまり、Tokens はコレクション要素です。

<?xml version="1.0" encoding="utf-8"?> 
<Root> 
  <Tokens> 
    <TokenID>string</TokenID> 
    <TokenText> 
      <TextHeading>string</TextHeading> 
      <TextBody>string</TextBody> 
    </TokenText> 
  </Tokens> 
  <Tokens> 
    <TokenID>string</TokenID> 
    <TokenText> 
      <TextHeading>string</TextHeading> 
      <TextBody>string</TextBody> 
    </TokenText> 
  </Tokens> 
  <Tokens> 
    <TokenID>string</TokenID> 
    <TokenText> 
      <TextHeading>string</TextHeading> 
      <TextBody>string</TextBody> 
    </TokenText> 
  </Tokens> 
</Root> 
このサンプルに関連付けられる Token.xsd は次のようになります。
<xs:element name="Root"> 
  <xs:complexType> 
    <xs:sequence> 
      <xs:element name="Tokens" type="TokenType" maxOccurs="unbounded"/> 
    </xs:sequence> 
  </xs:complexType> 
</xs:element> 
  
<xs:complexType name="TokenType"> 
  <xs:sequence> 
    <xs:element name="TokenID" type="xs:string"/> 
    <xs:element name="TokenText"> 
      <xs:complexType> 
        <xs:sequence> 
          <xs:element name="TextHeading" type="xs:string"/> 
          <xs:element name="TextBody" type="xs:string"/> 
        </xs:sequence> 
      </xs:complexType> 
    </xs:element> 
  </xs:sequence> 
</xs:complexType>

データディクショナリ要素

デフォルトの XML バインディング

Root

空(ヌル)

Tokens

/Root/Tokens

Composite

空(ヌル)

TokenID

TokenID

TokenText

空(ヌル)

TokenHeading

TokenText/TextHeading

TokenBody

TokenText/TextBody

サンプル

Data Dictionary 構築ブロックの実装の詳細を示すコードサンプルについて、以下に示します。

データディクショナリに読み込み可能なサンプルスキーマ

以下の例は、ある企業のスキーマを示しています。

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema xmlns="DCT" targetNamespace="DCT" xmlns:xs="http://www.w3.org/2001/XMLSchema" 
  elementFormDefault="qualified" attributeFormDefault="unqualified"> 
  <xs:element name="Company"> 
    <xs:complexType> 
      <xs:sequence> 
        <xs:element name="Name" type="xs:string"/> 
        <xs:element name="Type" type="xs:anySimpleType"/> 
        <xs:element name="HeadOfficeAddress" type="Address"/> 
        <xs:element name="SalesOfficeAddress" type="Address" minOccurs="0"/> 
        <xs:element name="HeadCount" type="xs:integer"/> 
        <xs:element name="CEO" type="Employee"/> 
        <xs:element name="Workers" type="Employee" maxOccurs="unbounded"/> 
      </xs:sequence> 
    </xs:complexType> 
  </xs:element> 
  <xs:complexType name="Employee"> 
    <xs:complexContent> 
      <xs:extension  base="Person"> 
        <xs:sequence> 
          <xs:element name="CurrAddress" type="Address"/> 
          <xs:element name="DOJ" type="xs:date"/> 
          <xs:element name="Phone" type="xs:integer"/> 
        </xs:sequence> 
      </xs:extension> 
    </xs:complexContent> 
  </xs:complexType> 
  <xs:complexType name="Person"> 
    <xs:sequence> 
      <xs:element name="PersonName" type="Name"/> 
      <xs:element name="DOB" type="xs:dateTime"/> 
    </xs:sequence> 
  </xs:complexType> 
  <xs:complexType name="Name"> 
    <xs:sequence> 
      <xs:element name="FirstName" type="xs:string"/> 
      <xs:element name="MiddleName" type="xs:string"/> 
      <xs:element name="LastName" type="xs:string"/> 
    </xs:sequence> 
  </xs:complexType> 
  <xs:complexType name="Address"> 
    <xs:sequence> 
      <xs:element name="Street" type="xs:string"/> 
      <xs:element name="City" type="xs:string"/> 
      <xs:element name="State" type="xs:string"/> 
      <xs:element name="Zip" type="xs:string"/> 
    </xs:sequence> 
  </xs:complexType> 
</xs:schema>

サンプルデータモデル

以下のコード例は、Company データディクショナリを FML に書き出したものです。データディクショナリの注釈では DDS 注釈を使用しています。また、この例には、General と XmlBinding という 2 つの注釈グループが含まれています。description と xpath は、これらの 2 つの注釈グループの一部として取り込まれる、それぞれに対応する注釈です。

<model xmlns="http://ns.adobe.com/Fiber/1.0"> 
  <annotation name="DDS"> 
    <item name="name">Company</item> 
    <item name="displayName">Company</item> 
    <item name="version">1.0</item> 
    <item name="type">NONSYSTEM</item> 
    <item name="extended_k1">v1</item> 
    <item name="extended_k2">v2</item> 
  </annotation> 
  <annotation name="General"> 
    <item name="description"/> 
  </annotation> 
  <entity name="Company"> 
    <annotation name="DDS"> 
      <item name="setAsTopLevelWithName">Company</item> 
      <item name="displayName">Company</item> 
      <item name="extended_k3">v3</item> 
      <item name="extended_k4">v4</item> 
    </annotation> 
    <annotation name="General"> 
      <item name="description"/> 
    </annotation> 
    <annotation name="XMLBinding"> 
      <item name="xpath">/Company</item> 
    </annotation> 
    <annotation name="LiveCycleES"> 
      <item name="generate_type">true</item> 
    </annotation> 
    <property name="Name" required="true" type="string"> 
      <annotation name="DDS"> 
        <item name="displayName">Name</item> 
      </annotation> 
      <annotation name="General"> 
        <item name="description"/> 
      </annotation> 
      <annotation name="XMLBinding"> 
        <item name="xpath">/Name</item> 
      </annotation> 
    </property> 
    <property name="Type" required="true" type="string"> 
      <annotation name="DDS"> 
        <item name="displayName">Type</item> 
      </annotation> 
      <annotation name="General"> 
        <item name="description"/> 
      </annotation> 
      <annotation name="XMLBinding"> 
        <item name="xpath">/Type</item> 
      </annotation> 
    </property> 
    <property cardinality="one-to-one" name="HeadOfficeAddress" required="true" type="Address"> 
      <annotation name="DDS"> 
        <item name="displayName">HeadOfficeAddress</item> 
      </annotation> 
      <annotation name="General"> 
        <item name="description"/> 
      </annotation> 
      <annotation name="XMLBinding"> 
        <item name="xpath">/HeadOfficeAddress</item> 
      </annotation> 
    </property> 
    <property cardinality="one-to-one" name="SalesOfficeAddress" required="false" type="Address"> 
      <annotation name="DDS"> 
        <item name="displayName">SalesOfficeAddress</item> 
      </annotation> 
      <annotation name="General"> 
        <item name="description"/> 
      </annotation> 
      <annotation name="XMLBinding"> 
        <item name="xpath">/SalesOfficeAddress</item> 
      </annotation> 
    </property> 
    <property name="HeadCount" required="true" type="double"> 
      <annotation name="DDS"> 
        <item name="displayName">HeadCount</item> 
      </annotation> 
      <annotation name="General"> 
        <item name="description"/> 
      </annotation> 
      <annotation name="XMLBinding"> 
        <item name="xpath">/HeadCount</item> 
      </annotation> 
    </property> 
    <property cardinality="one-to-one" name="CEO" required="true" type="Employee"> 
      <annotation name="DDS"> 
        <item name="displayName">CEO</item> 
      </annotation> 
      <annotation name="General"> 
        <item name="description"/> 
      </annotation> 
      <annotation name="XMLBinding"> 
        <item name="xpath">/CEO</item> 
      </annotation> 
    </property> 
    <property cardinality="one-to-many" name="Workers" required="true" type="Employee[]"> 
      <annotation name="DDS"> 
        <item name="displayName">Workers</item> 
      </annotation> 
      <annotation name="General"> 
        <item name="description"/> 
      </annotation> 
      <annotation name="XMLBinding"> 
        <item name="xpath">/Workers</item> 
      </annotation> 
    </property> 
  </entity> 
  <entity name="Address"> 
    <annotation name="LiveCycleES"> 
      <item name="generate_type">true</item> 
    </annotation> 
    <property name="Street" required="true" type="string"> 
      <annotation name="DDS"> 
        <item name="displayName">Street</item> 
      </annotation> 
      <annotation name="General"> 
        <item name="description"/> 
      </annotation> 
      <annotation name="XMLBinding"> 
        <item name="xpath">/Street</item> 
      </annotation> 
    </property> 
    <property name="City" required="true" type="string"> 
      <annotation name="DDS"> 
        <item name="displayName">City</item> 
      </annotation> 
      <annotation name="General"> 
        <item name="description"/> 
      </annotation> 
      <annotation name="XMLBinding"> 
        <item name="xpath">/City</item> 
      </annotation> 
    </property> 
    <property name="State" required="true" type="string"> 
      <annotation name="DDS"> 
        <item name="displayName">State</item> 
      </annotation> 
      <annotation name="General"> 
        <item name="description"/> 
      </annotation> 
      <annotation name="XMLBinding"> 
        <item name="xpath">/State</item> 
      </annotation> 
    </property> 
    <property name="Zip" required="true" type="string"> 
      <annotation name="DDS"> 
        <item name="displayName">Zip</item> 
      </annotation> 
      <annotation name="General"> 
        <item name="description"/> 
      </annotation> 
      <annotation name="XMLBinding"> 
        <item name="xpath">/Zip</item> 
      </annotation> 
    </property> 
  </entity> 
  <entity name="Employee"> 
    <annotation name="LiveCycleES"> 
      <item name="generate_type">true</item> 
    </annotation> 
    <property cardinality="one-to-one" name="PersonName" required="true" type="Name"> 
      <annotation name="DDS"> 
        <item name="displayName">PersonName</item> 
      </annotation> 
      <annotation name="General"> 
        <item name="description"/> 
      </annotation> 
      <annotation name="XMLBinding"> 
        <item name="xpath">/PersonName</item> 
      </annotation> 
    </property> 
    <property name="DOB" required="true" type="string"> 
      <annotation name="DDS"> 
        <item name="displayName">DOB</item> 
      </annotation> 
      <annotation name="General"> 
        <item name="description"/> 
      </annotation> 
      <annotation name="XMLBinding"> 
        <item name="xpath">/DOB</item> 
      </annotation> 
    </property> 
    <property cardinality="one-to-one" name="CurrAddress" required="true" type="Address"> 
      <annotation name="DDS"> 
        <item name="displayName">CurrAddress</item> 
      </annotation> 
      <annotation name="General"> 
        <item name="description"/> 
      </annotation> 
      <annotation name="XMLBinding"> 
        <item name="xpath">/CurrAddress</item> 
      </annotation> 
    </property> 
    <property name="DOJ" required="true" type="date"> 
      <annotation name="DDS"> 
        <item name="displayName">DOJ</item> 
      </annotation> 
      <annotation name="General"> 
        <item name="description"/> 
      </annotation> 
      <annotation name="XMLBinding"> 
        <item name="xpath">/DOJ</item> 
      </annotation> 
    </property> 
    <property name="Phone" required="true" type="double"> 
      <annotation name="DDS"> 
        <item name="displayName">Phone</item> 
      </annotation> 
      <annotation name="General"> 
        <item name="description"/> 
      </annotation> 
      <annotation name="XMLBinding"> 
        <item name="xpath">/Phone</item> 
      </annotation> 
    </property> 
  </entity> 
  <entity name="Name"> 
    <annotation name="LiveCycleES"> 
      <item name="generate_type">true</item> 
    </annotation> 
    <property name="FirstName" required="true" type="string"> 
      <annotation name="DDS"> 
        <item name="displayName">FirstName</item> 
      </annotation> 
      <annotation name="General"> 
        <item name="description"/> 
      </annotation> 
      <annotation name="XMLBinding"> 
        <item name="xpath">/FirstName</item> 
      </annotation> 
    </property> 
    <property name="MiddleName" required="true" type="string"> 
      <annotation name="DDS"> 
        <item name="displayName">MiddleName</item> 
      </annotation> 
      <annotation name="General"> 
        <item name="description"/> 
      </annotation> 
      <annotation name="XMLBinding"> 
        <item name="xpath">/MiddleName</item> 
      </annotation> 
    </property> 
    <property name="LastName" required="true" type="string"> 
      <annotation name="DDS"> 
        <item name="displayName">LastName</item> 
      </annotation> 
      <annotation name="General"> 
        <item name="description"/> 
      </annotation> 
      <annotation name="XMLBinding"> 
        <item name="xpath">/LastName</item> 
      </annotation> 
    </property> 
  </entity> 
</model>

Flex クライアント経由のデータディクショナリの開始

このサンプルを使用するには、adobe-dct-flex-services.swc を Flex プロジェクトのクラスパスに追加します。

データディクショナリサービスのシングルトンのインスタンスを取得します。

 DataDictionaryUtilServiceImpl ddUtilService = DataDictionaryUtilServiceImpl.getInstance();

データディクショナリの Util Service を開始し、データディクショナリ ID をパラメーターとして渡して、データディクショナリを注釈付き FML として書き出します。

/** 
 *  Exporting Data Dictionary 
 */ 
private function exportAsFML(event:*):void 
{ 
  var ddId:String = //The id of an existing data dictionary. 
  ddUtilService.exportDataDictionaryAsFML(ddId, handleSuccess, handleFault); 
} 
/* Success Handler */ 
private function handleSuccess(event:DCTServiceEvent):void 
{ 
   var ddFML:String = event.data as String;         
} 
/* Fault Handler */ 
private function handleFaultevent:FaultEvent):void 
{ 
   trace("Error exporting DataDictionary"+ (event.message as ErrorMessage).faultCode );                  
}