この章では、mvPathの使用方法について説明します。これには、完全なmvPath構文と多数の使用例を含みます。
いくつかのCLIコマンドは、mvPath式を使用してコンテナとプロパティを参照します。
mvPathはXPathに類似していますが、これはApplication Configuration Consoleのデータ階層をナビゲートするために特別に設計されたものです。Xpathに慣れていなくても、DOSやUNIXのコマンド・プロンプトでディレクトリとファイル名を入力したことがあれば、mvPathが直感的でわかりやすいと感じるしょう。
すべてのmvPath式はコンテキストを参照します。これは、通常はデータ階層内の現在の場所とみなされます。
mvPathは、コンテナやプロパティなどのApplication Configuration Console内のオブジェクトを参照するための式言語です。Application Configuration Consoleでは、変数と制約を指定するとき、コマンドライン・インタフェースを使用するとき、および独自のスクリプトを記述するときにmvPathを使用します。
構成データのmvPathビューは単純で、プロパティとメタデータ以外はすべてコンテナです。プロジェクト、環境、レイヤー、フォルダ、アセット、構成、ビュー、構成要素、これらはすべてコンテナです。コンテナとプロパティのどちらもメタデータを持つことができ、プロパティとメタデータは値を持つことができます。
コンテナの階層を上下に移動するにはmvPathを使用します。すべてのmvPath式は、コンテキストに関連して評価されます。これはデータ階層内のコンテナとしてのコンテキストです(コンテキストは常にコンテナです)。mvPath式のコンテキストは、通常は現在のコンテナです。ただし、式の先頭が/の場合は、コンテキストはデータのルートです。
mvPath式は、単語と記号からなる非常に短いリストから構成されます。
value()/list("^[a-zA-Z]*")は、"SIBusMember"を返します。
value()/list("[0-9]*$")は、"114678997643"を返します。
value()/list("M[a-z]*")は、"Member"を返します。
value()/slice("2:5")は、"CDE"を返します。
value()/slice("2:-2")は、"CDE"を返します。
value()/slice("2:")は、"CDEFG"を返します。
value()/slice(":5")は、"ABCDE"を返します。
value()/slice("-3:")は、"EFG"を返します。
mvcontainer.ContainerDefinitions
で定義されている定数で表される文字列です。実際の文字列を取得するには、CLIコンソール・ビューで次のように入力します。import mvcontainer
mvcontainer.ContainerDefinitions.<CONSTANT>
<CONSTANT>
はcontainerDefinitions定数で、たとえば次のようになります。mvcontainer.ContainerDefinitions.PROJECT
ASSET = http://mvalent.com/2003/container#asset
ASSET_RESOURCE_VIEW = http://mvalent.com/2003/container#asset_resource_view
AUTHPACK_FOLDER = http://mvalent.com/2003/container#authpack_folder
CONFIGURATION = http://mvalent.com/2003/container#configuration
CONFIGURATION_VIEW = http://mvalent.com/2003/container#configuration_view
CUSTOM_VIEW = http://mvalent.com/2003/container#custom_view
CUSTOM_VIEW_FOLDER = http://mvalent.com/2003/container#custom_view_folder
ELEMENT_TREE = http://mvalent.com/2003/container#element_tree
ENVIRONMENT = http://mvalent.com/2003/container#environment
FILE_FOLDER = http://mvalent.com/2003/container#file_folder
FILE_TEMPLATE = http://mvalent.com/2003/container#file_template
FOLDER = http://mvalent.com/2003/container#folder
HOST_FOLDER = http://mvalent.com/2003/container#host_folder
LAYER = http://mvalent.com/2003/container#layer
MV_CONFIG_ASSET = http://mvalent.com/2003/container#mv_config_asset
PROJECT = http://mvalent.com/2003/container#project
RESOURCESPEC_FOLDER = http://mvalent.com/2003/container#resourcespec_folder
mvcontainer.Type
で定義された定数で表される文字列です。実際の文字列を取得するには、CLIコンソール・ビューで次のように入力します。regex(".*.xml")
<CONSTANT>
はmvcontainer.Type
で、たとえば次のようになります。:mvcontainer.Type.ORGANIZATION.uri()
ASSET = http://mvalent.com/2003/container#asset
ASSET_VIEW = http://mvalent.com/2003/container#asset_view
AUTHPACK_FOLDER = http://mvalent.com/2003/container#authpack_folder
CONFIGURATION = http://mvalent.com/2003/container#configuration
CONFIGURATION_VIEW = http://mvalent.com/2003/container#configuration_view
ELEMENT_TREE = http://mvalent.com/2003/container#element_tree
FILE_TEMPLATE = http://mvalent.com/2003/container#file_template
HOST_FOLDER = http://mvalent.com/2003/container#host_folder
MV_CONFIG = http://mvalent.com/2003/container#mv_config
ORGANIZATION = http://mvalent.com/2003/container#organization
RESOURCESPEC_FOLDER = http://mvalent.com/2003/container#resourcespec_folder
import mvcontainer
mvcontainer.Type.<CONSTANT>.uri()
次の例では、このクライアント・ナビゲータ・ビューの図に示すように、単純なデータ階層を使用します。
ここに表示されているもの以外に、config1.xmlとpropertyAはどちらもメタデータを持ちます。すべての例のコンテキストはFolder1で、これがProject1でハイライトされています。
次のように、コンテナを場所で参照します。
Asset1のすべての子コンテナを返します。この例では、Resource Viewを返します。
現在のコンテナとその子コンテナすべてを返します。
Layer1、つまり現在のコンテナの親を返します。
Environment1(および兄弟関係がある場合はそれも)を返します。
次のように、コンテナを名前で参照します。
現在のコンテナであるFolder1の下にあるAsset1を返します。
Asset1の下にあるconfig1.xmlを返します。
config1.xmlのPrimary ViewにあるElement1を返します。これはAsset1のResource Viewの下にあります。ビューと要素のどちらも階層内のコンテナであることに注意してください。構成内の要素やプロパティにアクセスするには、ビューを指定する必要があります。
システム全体からconfig1.xmlという名前のコンテナをすべて返します。
Asset1の子であるが、構成または構成下ではないPrimary Viewという名前のコンテナをすべて返します。例では一致するものはないため、何も返されません。
Project1という名前のルート・プロジェクトを返します。
システム全体からPrimary Viewという名前のコンテナをすべて返します。
Primary Viewという名前の現在のコンテナの子すべてに加えて、コンテナの名前がPrimary Viewであればそのコンテナ自体も返します。
親コンテナを返します。
Asset2を返します。
Layer1を返しますが、Layer1の下位ではLayer1という名前の他のコンテナを探しません。
次のように、コンテナをコンテナの中身で参照します。
Asset1がそのResource View内にconfig1.xmlという名前の子コンテナを持つ場合は、Asset1を返します。
config1.xmlがAsset1のResource Viewの子であり、かつCustomViewという名前の子コンテナを持つ場合は、config1.xmlを返します。
Asset1がそのResource View内にconfig1.xmlという名前の子コンテナを持ち、そのconfig1.xmlがCustomViewという名前の子コンテナを持つ場合は、Asset1を返します。
Asset1がResource View内にconfig1.xmlという名前の子コンテナを持ち、そのconfig1.xmlがmetadata1という名前のメタデータを持つ場合は、Asset1を返します。
metadata1という名前のメタデータを持つ場合は、config1.xmlを返します。
値がvalue1のmetadata1という名前のメタデータを持つ場合は、config1.xmlを返します。
config1.xmlがAsset1の子で、Primary Viewという名前の子コンテナを持ち、それにpropertyAという名前のプロパティを含む場合は、config1.xmlを返します。
Asset1のResource Viewの子であり、Primary Viewという名前の子コンテナを持ち、それにpropertyAという名前のプロパティを含むコンテナをすべて返します。
Asset1のResource Viewの子であり、Primary Viewという名前の子コンテナを持ち、値がvalueAのpropertyAという名前のプロパティを含むコンテナをすべて返します。
config1.xmlとconfig2.xmlの両方を返します。これらはどちらもワイルドカード・パスと一致し、どちらもPrimary Viewという名前のコンテナを含みます。
コンテナElement1を返します。これは値がvalueAのpropertyAを含みます。これはプロパティではなく、コンテナ(この場合は要素)を返すことに注意してください。
コンテナElement1を返します。これは値がvalueAのpropertyAと値がvalueBのpropertyBを含みます。
次のように、コンテナをタイプで参照します。
コンテナ・タイプorganizationを持つAsset1の子コンテナを返します。
次のように、コンテナを定義で参照します。
Asset1の子で、定義D1を持つコンテナをすべて返します。
次のように、コンテナを名前で参照します。
現在のコンテナの下にあるAsset1の名前を返します。
Asset1の直下にあるすべてのコンテナの名前を返します。
次のように、コンテナのタイプを参照します。
Asset1のコンテナ・タイプを返します。
次のように、コンテナのIDを参照します。
Asset1のIDを返します。
次のように、プロパティを場所で参照します。
config1.xmlのPrimary ViewのElement1にあるすべてのプロパティを返します。
config1.xmlのPrimary Viewにあるすべてのプロパティを返します。
次のように、プロパティを名前で参照します。
構成のElement1にあるpropertyAを返します。ビューは階層内のコンテナとみなされるため、要素やプロパティに到達するためにmvPathに含める必要があることに注意してください。つまり、プロパティはビューに含まれる要素(これはコンテナです)に含まれます。
Asset1の下位にあるpropertyAという名前のすべてのプロパティを返します。例のデータでは、この名前のプロパティは他にないため、前の例と同じプロパティが返されます。
次のように、プロパティを値で参照します。
値がvalueAのElement1にあるすべてのプロパティを返します。
次のように、プロパティを名前と値で参照します。
Asset1の子である、値がvalueAで名前がpropertyAのすべてのプロパティを返します。
次のように、プロパティをメタデータ名で参照します。
Element1にあるpropertyAがmetadataAという名前のメタデータを持つ場合は、propertyAを返します。
Asset1の子で、metadataAという名前のメタデータを持つすべてのプロパティを返します。
次のように、プロパティをメタデータ名と値で参照します。
Asset1の子で、値がvalueAのmetadataAという名前のメタデータを持つすべてのプロパティを返します。
次のように、プロパティを定義で参照します。
Element1内にある定義portを持つプロパティをすべて返します。
次のように、プロパティを同じ要素内の別のプロパティで参照します。
Element1が値がvalueBのpropertyBを含む場合は、Element1内にあるpropertyAを返します。
次のように、プロパティの名前を参照します。
propertyAの名前を返します。
Element1内にあるすべてのプロパティの名前を返します。
次のように、プロパティの値を返します。
Element1内にあるpropertyAの値を返します。
次のように、プロパティの定義を参照します。
propertyAという名前のプロパティのプロパティ定義を返します。(プロパティはプロパティ・ディクショナリ内の定義にリンクされています。)
次のように、プロパティのIDを参照します。
propertyAのIDを返します。
次のように、メタデータを場所で参照します。
config1.xmlコンテナのすべてのコンテナ・メタデータを返します。
propertyAという名前のプロパティのすべてのプロパティ・メタデータを返します。
次のように、メタデータを名前で参照します。
構成のElement1にあるpropertyAのmetadataAを返します。
config1.xmlコンテナのmetadata1を返します。
次のように、メタデータを値で参照します。
config1.xmlコンテナ内にある、値がvalue1のすべてのメタデータを返します。
次のように、メタデータを名前と値で参照します。
Asset1の子で、値がvalue1のmetadata1という名前のすべてのメタデータを返します。
次のように、メタデータ名を参照します。
propertyA上のmetadataAの名前を返します。
config1.xml内にあるすべてのメタデータの名前を返します。
次のように、メタデータ値を参照します。
Element1内にあるpropertyA上のmetadataAの値を返します。
config1.xml内にあるmetadata1の値を返します。
次のように、メタデータIDを参照します。
metadataAのIDを返します。
構文:
[objectPath]operator("objectName")
説明:
objectPath
は、objectName
へのオプションのパスです。パスはルートを参照します。つまり、/F1/F2/F3/…のように、/から開始します。
operator
は、次のいずれかです。
authpack host resourcespec
objectName
は、解決するオブジェクトのオプションの名前です。名前を指定しないと、指定したコンテキストに対して、ターゲット・タイプのすべてのオブジェクトが返されます。
次のように、コネクタを名前で参照します。
グローバルなネームスペースからpassportという名前の認証パックを返します。
次のように、コネクタを名前と場所で参照します。
フォルダ階層/F1/F2/F3/の下にあるxmlConfigという名前のリソース仕様を返します。
次のように、ターゲット・タイプのすべてのコネクタを参照します。
グローバルなネームスペースにあるすべてのホストを返します。
フォルダ階層/F1/F2/F3/の下にあるすべてのホストを返します。