高度なカスタマイズ > サービスおよびインフラストラクチャのカスタマイズ > インポートとエクスポートのフレームワーク > IX アプリケーションの作成方法 > インポートの動作
  
インポートの動作
jar ファイルの XML ファイルからオブジェクトをインポートするには、インポートアプリケーションで以下の手順を実行する必要があります。
1. インポートする jar ファイルを読み取り、jar ファイルに含まれている XML ファイルのリストを抽出するツールを作成します。実装例については、クラス IXBJarReader を参照してください。
2. Importer クラスのインスタンスに渡す文字列 ruleFileName を準備します。文字列 ruleFileName は、インポートアプリケーションの構造に応じて、IxbStreamer、ユーザー、Null 値を割り当てられた文字列、または別の場所から取得できます。
3. policyFile (Null でない場合) を処理し、インポートポリシーを含む XSL StreamSource を作成します。
4. アプリケーションインポートハンドラ appHandler を作成します。これは、インタフェース ApplicationImportHandler の実装または抽象クラス ApplicationImportHandlerTemplate の拡張のいずれかを行う任意のクラスのインスタンスです。
5. Importer クラスのインスタンス (importer) を作成します。
6. jar ファイルの XML ファイルのリストを取得します。
7. XML ファイルから IxbDocuments を作成します。
8. IxbDocument で、以下の手順を実行します。
アプリケーションに渡される操作名があり、policyFile が Null の場合は、その操作名を IxbDocument に適用します。policyFile が Null でない場合は、policyFile の操作名と操作情報を IxbDocument に適用します。
以下のインポート処理を呼び出して、それらを 1 つずつ importer に送ります。
importer.doImport(IxbDocument Doc);
importer.finalizeImport();
9. 必要に応じて、クリーンアップを実行します。
10. クライアントにログメッセージを送信します。
doImport(...), doImportImpl(...) メソッドおよび StandardIXBService の内部クラス ImportHandler は、1 つのインポートアプリケーションの例です。詳細については、インポートアプリケーションを参照してください。
10 とおりのいずれかの方法でバージョン化オブジェクトをインポートできます。インポート方法は、各インポートオブジェクトの IxbDocument fileXML に書き込まれた操作名と操作情報によって決まります。インポートアプリケーションを作成する開発者は、操作名とそれらの意味を理解して正しく適用する必要がありますが、オブジェクトハンドラは Actor クラスを考慮する必要はありません。使用可能なすべての操作名のリストは、<Windchill>\codebase\registry\ixb\handlers\actor.xml ファイルにあります。
すべての操作には、それぞれに異なる 3 つの重要なメソッド previewObjectcreateObject、および storeObject があります。IxbDocument fileXML に渡される操作名と操作情報に基づいて、ClassExporterImporterTemplate および ExpImpForVersionedObject クラスで適切なアクターが作成され、バージョン化オブジェクトのプレビュー、作成、および保存のためにそのアクターのメソッドが呼び出されます。
資料として、アクター名のリストを以下に示します。
1. PickExistingObject: XML ファイルのオブジェクトと同じ ufid または同じ (名前、番号、バージョン、作業版数) を持つオブジェクトがデータベースに存在するかどうかを調べます。このようなオブジェクトが存在する場合、アクターがそのオブジェクトを更新の候補だと判断すればフレームワークによってオブジェクトが更新され、そうでなければ何も実行されません。それ以外の場合は、XML ファイルのオブジェクトをインポートします。
2. NewIteration: データベースで次に使用できる作業版数として、XML ファイルのオブジェクトをインポートします。
例:XML ファイルのオブジェクトのバージョンまたは作業版数がデータベースにない場合、インポートされるオブジェクトは XML ファイルで指定されたバージョンまたは作業版数を取得します。データベースのオブジェクトの最新のバージョンまたは作業版数が B.2 の場合、インポートされるオブジェクトのバージョンまたは作業版数は B.3 になります。
3. NewVersion: データベースで次に使用できるバージョンとして、XML ファイルのオブジェクトをインポートします。
例:XML ファイルのオブジェクトのバージョンまたは作業版数がデータベースにない場合、インポートされるオブジェクトは XML ファイルで指定されたバージョンまたは作業版数を取得します。データベースのオブジェクトの最新のバージョンまたは作業版数が B.2 の場合、インポートされるオブジェクトのバージョンまたは作業版数は C.1 になります。
4. CheckOut: XML ファイルのオブジェクトのバージョンまたは作業版数を検索します (データベースにマスターオブジェクトが存在するかどうかを調べます)。XML ファイルのオブジェクトのバージョンがない場合は、エラーを生成します。それ以外の場合は、XML ファイルのオブジェクトと同じバージョン (作業版数は異なる可能性があります) を持つオブジェクトのインスタンスをデータベースで検索します。そのようなオブジェクトが存在する場合は、データベースのオブジェクトの最新の作業版数をチェックアウトし、XML ファイルの情報を使用して更新します。同意します。それ以外の場合は、エラーを生成します。チェックインされます。
5. ImportNonVersionedAttr: XML ファイルのオブジェクトと同じ ufid または同じ (名前、番号、バージョン、作業版数) を持つオブジェクトを検索します。そのようなオブジェクトが存在する場合は、XML ファイルの情報を使用してオブジェクトを更新します。それ以外の場合は、エラーを生成します。
6. UpdateInPlace: XML ファイルのオブジェクトと同じ ufid または同じ (名前、番号、バージョン、作業版数) を持つオブジェクトをデータベースで検索します。そのようなオブジェクトが存在し、チェックアウトされている場合は、XML ファイルの情報を使用してオブジェクトを更新します。それ以外の場合は、エラーを生成します。
7. UnlockAndIterate: XML ファイルのオブジェクトと同じ ufid または同じ (名前、番号、バージョン、作業版数) を持つオブジェクトをデータベースで検索します。そのようなオブジェクトが存在し、ロックされている場合は、ロックを解除して作業版数化し、XML ファイルの情報を使用してオブジェクトを更新します。それ以外の場合は、エラーを生成します。
8. CreateNewObject: インポートポリシーファイルに指定された新しい名前、番号、バージョン、作業版数を持つ新しいオブジェクトを作成します。その他の情報は、XML ファイルから抽出されます。この機能は、単独では使用できません。
* 
このオプションは、新規オブジェクト ID を指定するポリシーファイルなしでは使用できません。
ImportPolicy ファイルで指定する必要がある新しい情報のフォーマットは、以下のとおりです。
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<!--
The syntax of Import Policy is standard XSL syntax. The output of XSLT using
the XSL policy file must only have at most one element of the form:
<actionInfo>
<action>...</action>
</actionInfo>
The following is a sample of a well-formed xsl.In the cases, where there are no specific actions to be performed, nothing needs to be done, which is achieved by the following:
<xsl:template match="@* | node()" priority="-9">
</xsl:template>
-->
<xsl:template match="@* | node()" priority="-9">
</xsl:template>
<xsl:template match='WTPart'>
<actionInfo>
<action>PickExistingObject</action>
</actionInfo>
</xsl:template>
<xsl:template match='WTDocument'>
<actionInfo>
<action>PickExistingObject</action>
</actionInfo>
</xsl:template>
<xsl:template match='EPMDocument'>
<actionInfo>
<action>PickExistingObject</action>
</actionInfo>
</xsl:template>
</xsl:stylesheet>
* 
<actionInfo> が必ず存在する必要があります。
基準には、XML ファイル内のオブジェクトの任意の有効な属性を使用できます。
<xsl:choose> 間には、異なる基準と異なる操作名を持つ多くの <xsl: when test ....> が存在する場合があります。
操作パラメータを指定できるのは、CreateNewObject と SubstituteObject のみです。操作パラメータは <newName><newNumber><newVersion><newIteration> の 4 つのみで、これらすべてを指定する必要があります。
SubstituteObject: ImportPolicy ファイルで指定された名前、番号、バージョン、および作業版数を持つデータベース内のオブジェクトを XML ファイルのオブジェクトに置き換えます。そのようなオブジェクトが存在しない場合は、例外を生成します。この場合のタグおよびパラメータのフォーマットは、CreateNewObject の場合とまったく同じですが、<action>SubstituteObject になります。
Ignore:XML ファイルのオブジェクトをインポートしません。この操作には、アクターは必要ありません。