イントロダクション¶
次のセクションで説明する XML スキーマの最新バージョンは、次の URL で入手できます :
マッシャブル・アプリケーション・コンポーネントの説明では、ルート要素の
http://wirecloud.conwet.fi.upm.es/ns/macdescription/1 名前空間を使用しています。ルート要素の名前は、コンポーネントの
種類によって異なり、 widget,operator または mashup です。一方、常に次の属性が必要です :
vendor: マッシャブル・アプリケーション・コンポーネントのベンダ/ディストリビュータの id。文字 "/" は使用できませんname: マッシャブル・アプリケーション・コンポーネントの名前。文字 "/" は使用できませんversion: マッシャブル・アプリケーション・コンポーネントの現在のバージョン。ドットで区切られた数字の 開始シーケンスを定義しなければなりません。さらに、ゼロは単独でしか使用できません(たとえば、0.1は有効ですが、03.2 は使用できません)。リリース番号に続いて、リリース前のタグを付けることができます。プレ・リリースのタグは、 a (アルファ)、b (ベータ) または rc (リリース候補) の文字のセリフです。その後に数字が続きます。プレ・リリースのタグ は、追加されるバージョンより古いバージョンとみなされます。したがって、リビジョン 2.4 はリビジョン 2.4rc1 よりも新しいもので、2.4b1 または 2.4a1 より新しいものです
これらのツリー・フィールド(vendor, name および version)は、マッシャブル・アプリケーション・コンポーネントを
一意に識別します。そのため、WireCloud コンポーネントの任意のコレクション(ウィジェット、マッシュアップ、オペレータなど)
にこのような識別子を繰り返すことはできません。
共通のメタデータ¶
details 要素¶

マッシャブル・アプリケーション・コンポーネントの説明には、それを使用して取得する情報、コンポーネントの開発者に関する
情報などの一般的な情報を提供する必要があります。この一般的な情報は、すべて details 要素を通じて提供されます。
この要素には、次のいずれかの要素を含めることができます :
title: マッシュアップ・アプリケーション・コンポーネントのユーザ・インターフェースで使用される名前。たとえば、 マッシャブル・アプリケーション・コンポーネントをリストするときに使用されます。このフィールドは変換可能なため、 このフィールドはマッシャブル・アプリケーション・コンポーネントを一意に識別するために使用されません。 このフィールドは、ワークスペースに追加されたウィジェットのデフォルトのタイトルとしても使用されます-
authors: コンマ区切りの開発者のリスト。例 :Álvaro Arranz, Aitor Maganメール や URL を提供することもできます :
Barney Rubble <b@rubble.com> (http://barnyrubble.tumblr.com/) -
contributors: コントリビュータのカンマ区切りリスト。authorsフィールドと同じフォーマットです email: サポートを受けるための電子メールアドレス。これらのフィールドは、コンポーネントに問題が発生した人に 役立つため、少なくともこのフィールドまたは、イシュー・トラッカー を指定することをお勧めしますlicense: マッシャブル・アプリケーション・コンポーネントに関連付けられているライセンスの名前licenseurl: 完全なライセンス・ドキュメントを指し示す、絶対または記述ファイル相対のURLdescription: マッシャブル・アプリケーション・コンポーネントの簡単な説明longdescription: マッシャブル・アプリケーション・コンポーネントを記述するマークダウンファイルへの相対パスchangelog: 各バージョンのマッシャブル・アプリケーション・コンポーネントに対する変更を詳述する マークダウン・ファイルへの相対パスimage: カタログのマッシャブル・アプリケーション・コンポーネントのイメージの絶対または記述ファイル相対のURL (170 x 80 ピクセル)smartphone: スマートフォンで使用する画像。(59 x 60 ピクセル)doc: マッシャブル・アプリケーション・コンポーネントのドキュメントを含むマークダウン・ファイルへの相対パス。 下位互換性のため、このフィールドは、Webページを指すコンポーネントのドキュメントへの絶対URLもサポートしていますissuetracker: コンポーネントのイシュー・トラッカーへの絶対 URL。これらのフィールドは、コンポーネントに問題が 発生した人に役立つため、少なくともこのフィールドまたはemailメールフィールドを指定することをお勧めします
requirements 要素¶

requirements 要素は、コンポーネントが依存する機能を宣言するために使用されます。現在、これらの機能は、特定の機能に
アクセスするために必要な API の WireCloud による注入に関連付けられています。たとえば、ウィジェットは WireCloud に
NGSI API を注入する必要がある NGSI 機能に依存します。Application Mashup GE の将来のリリースでは、この要素は他の種類の
依存関係 (例えば別のマッシャブル・アプリケーション・コンポーネント) を追加するためのサポートを提供しますが、
今のところこの要素は feature サブ要素のみを受け入れます。
feature 要素¶
name: アプリケーション・マッシュアップ・コンポーネントが必要とする機能の名前
プラットフォーム・コンポーネントの対話要素¶
プラットフォームとコンポーネントとのやりとりを保証するために、テンプレートは環境に接続してさまざまなプラットフォーム・ オプションを設定するためにコンポーネントが使用する一連の要素も定義します。同様に、初期ウィジェット・サイズなどの いくつかの他のインタフェース要素も定義します。それらはすべてプラットフォームによって管理され、永続性を保証します。
これらすべての要素を見てみましょう :
preferences 要素¶
最初のプラットフォーム関連の要素は、preferences です :

これは、プラットフォームのインターフェースを通じて変更される可能性のあるユーザの設定を定義します。この要素は、1つ、多くの、または全くない preference サブ要素で構成されています。これは、実際のユーザ設定を定義します。それには次の属性が必要です :
type : プリファレンス・データ型 :text(文字列),numberおよびboolean,password,list`name: ソースコードで参照される設定の名前label: ユーザ・インターフェイスでプリファレンスが表示されるテキストdescription: プリファレンスを説明するテキストdefault: プリファレンスのデフォルト値readonly: このプリファレンスを変更できるかどうかを示しますvalue: 初期値。指定しない場合、デフォルト値が初期値として使用されますsecure: この属性の値がtrueの場合、この設定の値へのアクセスは許可されません。この設定の値は、アプリケーション・マッシュアップのクロスドメイン・プロキシを介して使用できます。デフォルト :false
type 属性が list に設定されている場合は、さまざまな選択肢が option 要素を用いて定義されています。これには次の属性があります :
- `label : 選択リストに表示されるテキスト
- `value : オプションが選択されたときに使用される値
persistentvariables 要素¶
次の XML 要素は persistentvariables 要素です。その主な目的は、実行中にウィジェット/オペレータの状態を格納する変数の
セットを定義して、将来の実行ために使用できるようにすることです。その構造を下の図に示します :

この要素は、次の属性を必要とする variable 要素のリストで構成されています :
name: プロパティ名type: プロパティのデータ型 : ここでは、唯一のtext(文字列)データ型が意味をなしますlabel: ユーザ・インターフェイスに表示されるテキストdescription: 説明文secure: この属性の値が true の場合、この永続変数の値へのアクセスは許可されません。この変数の値は、 アプリケーション・マッシュアップのクロスドメイン・プロキシを通じて使用可能になります。デフォルト : falsemultiuser: この永続的な値は、ダッシュボードへのアクセス権を持つユーザごとに独自の値を格納します
wiring 要素¶
これはおそらく最も重要な要素の1つです。ウィジェット/オペレータが他のウィジェット/オペレータと相互通信するために必要な 入力と出力の両方を定義します。Application Mashup GE の実装では、ワイヤーリングのメカニズムとその内部データフローを 管理および制御するために、この情報を考慮する必要があります。
下の図は wiring 要素を示しています :

この要素は、inputendpoint と outputendpoint 要素 の任意の数が含まれていてもかまいません。
ウィジェットおよびオペレータは、出力エンドポイントを通じてデータやイベントを送信することがあります。これを行うには、
outputendpoint 要素を使用してエンドポイントを宣言する必要があります。これらの要素には、次の属性があります :
name: 出力エンドポイント名type: 出力エンドポイントのデータ型 : ここでは、唯一のtext(文字列)データ型が意味をなしますlabel: ユーザインターフェイスに表示されるテキストdescription: 出力を記述するテキストfriendcode: 出力エンドポイントタグとして使用される、スペースで区切られた1つ以上のキーワード。これは、 プラットフォームが配線プロセスの提案をするのに役立ちます
一方、ウィジェットおよびオペレータは、入力エンドポイントを介して非同期データを受け取ることができます。これらの
エンドポイントは、他のウィジェット/オペレータからのデータやイベントを受信するためにウィジェットおよびオペレータに
よって使用されることを意図しています。このinputendpoint 要素は次の属性をサポートしています :
name: エンドポイント名を入力しますtype: 入力エンドポイントのデータ型 : ここでは、唯一のtext(文字列)データ型が意味をなしますlabel: ユーザ・インターフェイスに表示されるテキストactionlabel: イベントがこの入力エンドポイントに送信された場合に何が起こるかを説明する短いテキスト。ウィジェット は、このテキストをボタン、選択ボックスなどで使用できます。エンドユーザは何をすべきかを選択できます。ウィジェットは 関連するターゲット・エンドポイントにイベントを送信しますdescription: 入力を記述するテキストfriendcode: 入力エンドポイント・タグとして使用される1つ以上のスペース区切りキーワード。これは、プラットフォーム がワイヤーリング・プロセスで提案を行うのに役立ちます
特定のウィジェットのメタデータ¶
下の図は、widget 要素の後に続く構造を示しています。したがって、widget のディスクリプションに続く構造は :

contents 要素¶
ウィジェットの説明は、ウィジェットの実際のソースコードにリンクする必要があります。これはcontents 要素を通して
行われます。

contents 要素は次の属性をサポートしています :
src: ウィジェットのコードの絶対または説明ファイル相対 URLcontenttype: リンクされたリソースのコンテンツタイプ : 推奨される値は :text/htmlとapplication/xml+xhtml。 これは省略可能な属性で、デフォルトではtext/htmlです。Application Mashup GE のすべての実装は、 HTML ファイル(text/html`)、SVG や Flash などのオプションをサポートする必要がありますcharset: ソースファイルで使用される文字セット。これは省略可能な属性で、デフォルトはutf-8ですcacheable: リンクされたコードをプラットフォームによってキャッシュすることができるかどうかを設定。 可能な値はtrueと false。これは省略可能な属性で、デフォルトはtrue` ですuseplatformstyle: HTML 要素を表示するには、プラットフォームスタイルを使用します。省略可能な属性で、 デフォルトはfalseです
これらの属性に加えて、contents 要素は、条件が満たされている (scope 属性によって制御されている) 場合、メインの
contents 要素に提供されるものの代わりに使用される (altcontents サブ要素を介した) 追加のソースファイルのリストを
提供することを可能にします。
rendering 要素¶
rendering 要素は、ユーザのワークスペースに展開された後のウィジェットのデフォルトの幅と高さを指定します。

rendering 要素は次の属性をサポートしています :
width: レイアウト列としてのウィジェットの初期幅。Wirecloud v0.8.0 より、ピクセル単位 (例 : 200px) や パーセンテージ単位 (例 : 30%) も使用できます。以前のバージョンの WireCloud をサポートする必要がない場合は、 ピクセル単位またはパーセンテージ単位を使用することをお勧めしますheight: レイアウト行としてのウィジェットの初期高さ。Wirecloud v0.8.0 より、ピクセル単位 (例 : 200px) や パーセンテージ単位 (例 : 30%) も使用できます。以前のバージョンの WireCloud をサポートする必要がない場合は、 ピクセル単位またはパーセンテージ単位を使用することをお勧めします
特定のオペレータ・メタデータ¶
下の図は、operator 要素の後に続く構造を示しています。したがって、'operator' ディスクリプションに続く構造は :

scripts 要素¶
ウィジェットでは、一般に、HTML ファイルを使用してコードのエントリ・ポイントを定義しますが、オペレータは
ユーザ・インターフェイスを提供しないため、使用する javascript ファイルのリストを直接宣言する必要があります。
このスクリプトリストは、1つ以上の scripts サブ要素で構成される scripts 要素を使用して宣言されます。
scripts 要素は次の属性をサポートします :
src: JavaScriptファイルの description-file-relative URL
特定のマッシュアップ・メタデータ¶
下の図は、mashup 要素の後に続く構造を示しています。したがって、mashup の ディスクリプション に続く構造は :

structure 要素¶
structure 要素は、マッシュアップの構造を説明する担当しています。下の図は、それがどのように見えるかを示しています :

preferencevalue 要素は、最終的なワークスペースの設定の初期値の変更を可能にします。
tab 要素は、マッシュアップを構築するタブのそれぞれを記述するために使用されています。これはマッシュアップの視覚的な
部分を記述するための重要な要素です。
wiring 要素は、マッシュアップのワイヤーリング/パイピングの構成を説明するために使用されます。この要素は、
マッシュアップで使用されるオペレータを記述するためにも使用されます。この要素は、ディスクリプションのルートで
使用されている wiring 要素と同じ名前ですが、この要素の構造は異なります。
tab 要素¶

structure 要素には、Application Mashup GE ダッシュボードのタブを表す少なくとも1つの tab 要素が含まれている必要が
あります。それは以下の属性を持っています :
name: タブの名前id: タブの識別。この id はディスクリプションの内部にあります
tab 要素にはresource、マッシュアップで使用されるウィジェット・インスタンスを表す任意の数の要素を含めることができます。
これには次の属性があります :
vendor: ウィジェットのベンダーname: ウィジェットの名前version: ウィジェットのバージョンtitle: ダッシュボードに表示される名前readonly: ウィジェットがダッシュボードから削除できるかどうかを示しますid: ウィジェットの識別。この id はマッシュアップのディスクリプションの内部にあります
preferencevalues と variablevalues 要素は、初期値の変更とぷリファレンスの振る舞いを永続的な変数にそれぞれ許可
します。各プリファレンス/永続変数のパラメータ化は、それらの要素とその属性の1つによって制御されます :
name: パラメータ設定するプリファレンス/永続変数の名前value: プリファレンス/永続変数の初期値。指定されていない場合は、ウィジェットの説明から取得した初期設定の値が 使用されますreadonly: プリファレンス/永続変数を変更できるかどうかを示しますhidden: ユーザが Application Mashup GE のユーザ・インターフェース上のこのプリファレンス/永続変数の値を見ること ができるかどうかを示します
この position 要素は、ウィジェットの位置をダッシュボードに記述します。これには次の属性があります :
x: ウィジェットのX座標y: ウィジェットのY座標z: ウィジェットのZ座標
rendering 要素は、ウィジェット表現のいくつかの特徴を説明しています。これには次の属性があります :
width: ダッシュボードのウィジェット幅minimized: ウィジェットがダッシュボードで最小化されるかどうかを定義するブール属性layout: ダッシュボードのウィジェットレイアウトheight: ダッシュボードのウィジェットの高さ`fulldragboard: ウィジェットがすべてのダッシュボードを使用しているかどうかを示すブール属性
マッシュアップの wiring 構造の要素¶
この要素は、マッシュアップ内のウィジェットとオペレータが出力エンドポイントと入力エンドポイントを使用してどのように 接続されているかを記述します。

wiring 要素は、任意の数のoperator 要素を含むことができます。operator 要素はワイヤーリングに使用される
オペレータを定義します。これには次の属性があります :
id: オペレータの識別。この id はマッシュアップのディスクリプションの内部にありますvendor: オペレータのベンダーname: オペレータ名version: オペレータのバージョン
vendor, name, version フィールドは、イントロダクションに定義されているのと同じパターンに
従います。
wiring 要素は、任意の数のconnection 要素を含むことができます。これらの要素は、どの出力エンドポイントがどの
入力エンドポイントに接続されているかを示します。connection 要素は、source 要素及び target 要素で構成されています。
source 要素は、接続の出力エンドポイントを定義します。それには次の属性があります。
type: 出力エンドポイントを持つ要素の型。この属性は、widgetまたはoperatorを持つことができますid: 出力エンドポイントを持つ要素の id。この id は、要素がウィジェットの場合はresource要素に定義されている id と同じですが、要素がオペレータの場合はoperator要素に定義されている id と同じですendpoint: 出力エンドポイントの名前。この名前は、outputenpoint要素で定義されたものと同じです
この target 要素は、接続の入力エンドポイントを定義します。これには次の属性があります :
type: 入力エンドポイントを持つ要素の型。この属性の可能な値はwidgetまたはoperatorですid: 入力エンドポイントを持つ要素の id。この id は、要素がウィジェットの場合はresource要素に定義されている id と同じですが、要素がオペレータの場合はoperator要素に定義されている id と同じですendpoint: 入力エンドポイントの名前。この名前はinputenpoint要素で定義されたものと同じです