高度なカスタマイズ > ビジネスロジックのカスタマイズ > Windchill Visualization Services のカスタマイズ > カスタムパブリッシング > ソリューション > 手順 - 一般的パブリッシングのカスタマイズ > すべてのパブリッシングのフィルタ
  
すべてのパブリッシングのフィルタ
手順 - チェックインベースのパブリッシングのカスタマイズで説明した EPMDocuments および WTDocuments 専用のフィルタのほかに、Windchill Visualization Services には、パブリッシング可能なものすべて (EPM および WTDocuments を含む) を呼び出す一般的なフックがあります。すべての製品表現対象のフィルタをサポートするほかに、このフックには変換済みデータのパブリッシングも含まれます。
カスタムクラスで、次の署名でメソッドを定義できます。
public static Boolean filterMethod(Persistable p, Boolean
publishFromDB)
filterMethod の代わりに任意の名前を使用できます。カスタムメソッドを含むクラスが Windchill codebase (ext.wvs.MyFilterMethods) でアクセス可能である必要があります。このメソッドには publishFromDB パラメータが含まれます。この Boolean は、Windchill 内に保存されているデータ、つまり EPMDocument または WTDocument オブジェクトのコンテンツに対してパブリッシングが開始された場合は、Boolean.TRUE となります。Windchill に保存されていないデータ、つまりファイルシステムから変換されたローカルデータまたはクリップボードのデータの場合、値は Boolean.FALSE となります。必要に応じて、publishFromDB の値を使用して、カスタムコードで 2 つのケースのみを処理することもできます。
次に、クラスおよびメソッドを wvs.properties.xconf に追加します。下記のプロパティのデフォルトは空です。これを更新して、クラスとメソッドを "class/method" の形式で含めます。
<Property default="ext.wvs.MyFilterMethods/filterMethod"
name="publish.service.filterpublishmethod"/>
変更した後、xconfmanager を使用して、変更を wvs.properties に反映させます。
通常のパブリッシングが行われるたびに、このメソッドが呼び出されるようになります。メソッドが Boolean.TRUE を返すと、永続可能オブジェクトのパブリッシングを試みます。メソッドが Boolean.FALSE を返すと、パブリッシングは試みません。
以下に、永続可能オブジェクトが LifeCycleManaged で、LifeCyle の最終フェーズにある場合は、コンテンツのパブリッシングをフィルタで除外する方法の簡単な例を示します。
public static Boolean filterMethod(Persistable p, Boolean publishFromDB) {
if (!publishFromDB) return Boolean.TRUE;
if (!(p instanceof LifeCycleManaged)) return Boolean.TRUE;
try {
if (LifeCycleHelper.service.isInFinalPhase((LifeCycleManaged)p)) {
return Boolean.FALSE;
}
} catch (WTException wte) {
wte.printStackTrace();
}
return Boolean.TRUE;
}
* 
上記の例では、パブリッシングを要求されたデータが Windchill DB のものでない場合には、true を返すと 2 行目に記述されています。たとえば、誰かがローカルディスクからアップロードした WTPart のデータをパブリッシングしようとした場合には、それをフィルタで除外することは適切でないので、単に Boolean.TRUE を返します。