レンダリングするテーブルの特定と設定
以降のステップでは、「変更適用オブジェクト」テーブルと「成熟度の履歴」テーブルを追加する方法について説明します。
1. タスクの詳細ページにレンダリングする PBO 関連テーブルを特定します。これは OOTB テーブルまたは独自にカスタマイズしたテーブルのいずれでも構いません。
◦ テーブルのコンポーネント ID とそのタイプベースの情報を特定します。
▪ そのコンポーネントで使用されているコンポーネント ID と
componentConfigBuilder を調べるには、
情報ページのコンポーネントのカスタマイズのデバッグセクションを参照してください。
▪ ビルダーが TypeBased アノテーションを使用して定義されているかどうかを調べるには、そのコンポーネントのビルダーの Javadoc を参照してください。このコンポーネントのコンポーネント ID が changemanagement.affecteddatatable、ビルダーが TypeBased として設定されているものとします。
2. 上記で特定したテーブルをワークアイテムタスクの操作モデル内に設定します。
設定可能なワークフローページに表示するコンポーネント (「影響を受けるデータ」テーブルなど) のカスタム操作ファイルで新規操作を定義します。コンポーネント名は workflowTask.pbo である必要があり、コンポーネント ID を pboCompId として urlParams に渡す必要があり、useTypeBased には前のステップで調べた値を指定する必要があります。
例:
<action name="TestAffectedData"
resourceBundle="wt.workflow.worklist.worklistResource" >
<component name="workflowTask.pbo"
urlParams="pboCompId=changemanagement.
affecteddatatable&useTypeBased=true"/>
<includeFilter name="configurableTypeBaseFilter"/>
</action>
◦ includeFilter タグはフィルタメカニズムを提供します。このフィルタフレームワークは includeFilter タグが使用されているテーブルコンポーネント/操作に適用されます。
◦ TaskFormTemplate UI では、テーブル操作はタスクフォームテンプレートで選択されている PBO クラスに基づいて表示されます。
◦ コードではソフトタイプが常にサポートされています。ただし、(true としてサポートされている) ハードタイプのフィルタを適用し、UI を介して任意のソフトタイプインスタンスがその独自のタイプとして提供されているが、これが存在しない場合、そのスーパークラスがないかチェックされます。
◦ ワークアイテムの情報ページにあるカスタムタブで、カスタムメニューに表示される操作はそのワークアイテムの PBO タイプに基づいてフィルタされます。
3. 前のステップで作成した新規操作 (TestAffectedData) 用の操作バリデータを作成します。PBO オブジェクトタイプに基づいてコンポーネントをフィルタするフレームワークによって、OOTB 抽象バリデータ (WorkFlowTaskPBOComponentValidator クラス) とオーバーライドメソッド (isComponentValidFor) が提供されます。新規操作の操作バリデータは、特定のコンポーネントで PBO オブジェクトタイプが有効かどうかを定義する isComponentValidFor をオーバーライドする必要があります。
package com.ptc.windchill.enterprise. workitem.validators;
import com.ptc.core.ui.validation.DefaultUIComponentValidator;
import com.ptc.core.ui.validation.UIValidationCriteria;
import com.ptc.core.ui.validation.UIValidationKey;
import com.ptc.core.ui.validation.UIValidationResult;
import com.ptc.core.ui.validation.UIValidationResultSet;
import com.ptc.core.ui.validation.UIValidationStatus;
import com.ptc.netmarkets.util.beans.NmCommandBean;
import com.ptc.core.meta.common.TypeIdentifier;
import com.ptc.windchill.enterprise.history.validators.
LifecycleHistoryNavValidator;
public class TestAffectedDataValidator extends
WorkFlowTaskPBOComponentValidator {
@Override
protected boolean isComponentValidFor(UIValidationKey validationKey,
UIValidationCriteria validationCriteria, WTReference pboRef) {
if (pboRef != null && pboRef.getObject() instanceof
LifeCycleManaged))
return true;
return false;
}
}
4. 適切な .properties ファイルでバリデータを設定します。次のサンプルコードは PboMaturityHistory についての例の続きです。これらの操作を Workitem-service-properties.xconf ファイルに追加します。
...
<Option cardinality="singleton" requestor="java.lang.Object"
serviceClass="com.ptc.windchill.enterprise.workitem.validators.
WorkflowTaskPboMaturityHistoryValidator"
selector="PboMaturityHistory"/> [Option cardinality="singleton"
requestor="java.lang.Object" serviceClass="com.ptc.windchill.enterprise.workitem.
validators.TestAffectedDataValidator" selector="TestAffectedData"/>
◦ これらすべての操作は、ファイル Netmarkets-actionmodels.xml に追加されるモデル workitem third nav configurable の一部である必要があります。
...
<model name="workitem third nav">
<action name="attributes" type="workitem"/>
<action name="routingStatus" type="workitem"/>
<action name="notebook" type="workitem"/>
<action name="discussions" type="workitem"/>
<action name="setupParticipant" type="workitem"/>
<action name="adhocActivities" type="workitem"/>
<action name="workflowTaskPboAttributes" type="object"/>
<action name="saveComplete" type="workitem"/>
<action name="workflowTaskPboAction" type="workitem"/>
<action name="PboMaturityHistory" type="history"/>
<action name="TestAffectedData" type="change"/>
</model>
◦ 上記の操作はすべて、コンフィギュレーションファイル (ConfigurableWorkflowTask-typeBasedActionFiler.properties.xconf) で定義されているスーパーセットで検証されます。
タスクの詳細ページに表示される操作がスーパーセットに存在する必要があります。存在しない場合、タスクフォームテンプレートは読み込まれず、タスクフォームテンプレート UI から設定することはできません。
コンフィギュレーションファイルで、次のパターンでエントリを作成する必要があります。
<Property name="actionType.actionName.configurablePbo.supportedTypes/ nonSupportedTypes” overridable="true" default="object Type<comma separated fully qualified class names will be acceptable>"/>
ワークアイテム操作にはフィルタが適用されません。これはワークアイテムに関連付けられている PBO タイプに適用されます。