高度なカスタマイズ > Info*Engine ユーザーガイド > Info*Engine のタスク > Info*Engine グループの XML 出力について
  
Info*Engine グループの XML 出力について
Info*Engine は、すべての生成されたグループを、シリアル化可能な Java オブジェクトとして保持します。これらのオブジェクトは、カスタム Java アプリケーション、JSP ページ、およびタスクによって、簡単に操作できます。グループを表示するようにリクエストがあると、Info*Engine は、そのグループが含まれている XML ドキュメントを生成します。
デフォルトでは、Info*Engine によって生成された XML ドキュメントには、以下のものが含まれています。
ドキュメントの最初にあるドキュメント宣言。
Info*Engine によって生成されたすべての XML ドキュメントのドキュメントルートである wc:COLLECTION 要素。
出力グループを生成する Webject の CLASS パラメータによって指定されたルートグループ要素。たとえば、CLASS パラメータが Employees に設定されると、そのルートグループ要素の開始タグには <Employees> が含まれます。要素名のほかに、そのグループ要素の開始タグには常に NAME 属性が含まれます。NAME 属性の値は、そのグループを作成した Webject の GROUP_OUT パラメータに指定されたグループ名から由来します。
1 つのグループ内の Info*Engine オブジェクト (行) を識別する wc:INSTANCE 要素。各 Info*Engine オブジェクトには、wc:INSTANCE 要素のサブ要素としてコード化された属性が含まれています。
これらの部品については、後続の各セクションで詳細に説明します。Info*Engine の XML 出力の例については、Group Webjectの XML タスクの例を参照してください。
さらに、Info*Engine では、グループ、要素、または属性データの一部であるメタデータが含まれた XML 出力も生成できます。
ドキュメントの宣言
XML ドキュメントは、使用されている XML のバージョンと、この XML ドキュメントの文字コードを指定する XML 宣言から開始する必要があります。W3C によって定義され、Windchill で使用されている XML の現在のバージョンは 1.0 です。さらに、Info*Engine は文字コードとして UTF8 をサポートしています。したがって、Info*Engine によって生成されるすべての XML は、以下の XML 宣言で開始されます。
<?xml version="1.0" encoding="UTF-8" ?>
XML ネームスペースとは、URI 参照 [RFC2396] によって識別され、XML ドキュメント内で要素タイプおよび属性名として使用される名前の集合です。ネームスペースを使用すると、XML 著作者は用語を一意に指定して、名前の干渉を避けることができます。Info*Engine によって、ネームスペース http://www.ptc.com/infoengine/1.0 が定義され、ネームスペースのプリフィックス wc: が Info*Engine によって定義されたすべての要素および属性に関連付けられます。
<wc:COLLECTION xmlns:wc="http://www.ptc.com/infoengine/1.0">
ドキュメントエンティティはドキュメントルートとも呼ばれ、エンティティツリーのルートおよび XML プロセッサの開始点として機能します。Info*Engine は、wc:COLLECTION 要素を、Info*Engine によって生成されたすべての XML ドキュメントのドキュメントルートとして定義します。
Info*Engine グループ
Info*Engine グループを操作するときに使用するシリアル化可能オブジェクトには、グループの作成時に指定した Webject CLASS パラメータおよび GROUP_OUT パラメータの値が保存されています。CLASS パラメータの値は、グループデータのルート要素の要素名を定義するときに使用され、GROUP_OUT パラメータの値は、この要素の NAME 属性として使用されます。たとえば、CLASS パラメータが DemoGrp に設定され、GROUP_OUT パラメータが salesGrp に設定された場合、Info*Engine は以下の XML ドキュメント要素を生成します。
<?xml version="1.0" encoding="UTF-8" ?>
<wc:COLLECTION xmlns:wc="http://www.ptc.com/infoengine/1.0">
<DemoGrp NAME="salesGrp" TYPE="Object" STATUS="0">
</DemoGrp>
</wc:COLLECTION>
Webject CLASS パラメータが未定義であるかまたは省略されている場合、Info*Engine は Unknown-Class-Name を要素名として使用します。CLASS パラメータを省略しても、技術的にはエラーにはなりませんが、タスクパラメータには常に CLASS パラメータが含まれている必要があります。CLASS パラメータを省略すると、XML ドキュメントがあいまいになります。たとえば、以下の XML 要素は、employees グループと名前のないグループの 2 つの情報グループを定義します。この例では、名前のないグループが表すデータの内容を理解することは困難です。
<wc:COLLECTION xmlns:wc="http://www.ptc.com/infoengine/1.0">
<Employees NAME="group1" TYPE="Object" STATUS="0"/>
</Employees>
<Unknown-Class-Name NAME="group2" TYPE="Object" STATUS="0"/>
</Unknown-Class-Name>
</wc:COLLECTION>
このグループ要素には、ほかにも TYPE と STATUS の 2 つの属性が含まれています。TYPE 属性は、グループのタイプを示します。データグループについては、この値は常に Object です。STATUS 属性は、このグループの生成の完了ステータスを示します。ステータスがゼロ (0) の場合は、エラーが発生しなかったことを示します。ゼロ以外の値は、データが何らかのエラーのために不完全であることを示します。グループのステータス値をチェックする必要はありませんが、STATUS 属性は下位互換性を保つために残っています。Info*Engine では現在、Webject が要求されたグループを生成できない場合に常に例外が発生します。
Info*Engine オブジェクト
Info*Engine グループには、1 つまたは複数のオブジェクトを含むことができます。XML ドキュメントでは、各オブジェクトは、<wc:INSTANCE> 開始タグと </wc:INSTANCE> 終了タグによって識別されます。オブジェクトには、何個でも属性を含めることができ、各属性にはデータを含めることができます。各 Info*Engine 属性は、wc:INSTANCE 要素内に現れる XML サブ要素に対応しています。
たとえば、以下の XML ドキュメントは、<EMP> タグと </EMP> タグで区切られ、1 つのオブジェクトが含まれている 1 つの Info*Engine グループを表していると仮定します。オブジェクトは、<wc:INSTANCE> タグと </wc:INSTANCE> タグで区切られています。
<wc:COLLECTION xmlns:wc="http://www.ptc.com/infoengine/1.0">
<EMP NAME="empGrp" TYPE="Object" STATUS="0">
<wc:INSTANCE>
<EMPNO>7934</EMPNO>
<ENAME>MILLER</ENAME>
<JOB>CLERK</JOB>
<MGR>7782</MGR>
<HIREDATE>1982-01-23 00:00:00.0</HIREDATE>
<SAL>1300</SAL>
<COMM/>
<DEPTNO>10</DEPTNO>
</wc:INSTANCE>
</EMP>
</wc:COLLECTION">
この例では、Info*Engine の属性にサブ要素タグがあり、オブジェクトに以下の属性があると判断できます。
EMPNO
ENAME
JOB
MGR
HIREDATE
SAL
COMM
DEPTNO
XML 出力内のメタデータ
メタデータとは、グループ、要素、または属性に含まれている通常のアプリケーションデータに関する情報です。たとえば、メタデータにより、データタイプ情報などの有効な情報を提供できます。さらに、グループ内の要素間の関係や、要素内の属性間の関係についての情報も指定できます。
Windchill と連動するソフトウェアは、メタデータを生成できます。たとえば、Windchill の属性タイプ情報は、メタデータとして保存されます。このメタデータは、作成される Info*Engine グループとともに自動的に渡されます。さらに、メタデータは Set-Metadata Webject を使用して設定することもできます。
デフォルトでは、Display-XML Webject によって XML 出力が生成されるときは、メタデータは含まれません。メタデータを XML 出力に含めるには、この Webject で FULL モードを使用します。
メタデータが含まれる XML 出力では、メタデータは <wc:Meta> 開始タグと </wc:Meta> 終了タグの間にネストされます。