基本的なカスタマイズ > ユーザーインタフェースのカスタマイズ > ウィザードの作成 > ウィザード処理 > ソリューション > 手順 - ウィザード処理コードの作成 > 1 つのターゲットオブジェクトが含まれたウィザード > プロセッサクラスの作成
  
プロセッサクラスの作成
本製品には、オブジェクト作成を処理し、ウィザードを編集するための以下の 3 つのプロセッサが付属しています。
com.ptc.core.components.forms.CreateObjectFormProcessor
com.ptc.core.components.forms.DefaultEditFormProcessor
com.ptc.core.components.forms.EditWorkableFormProcessor
これらのプロセッサはそのまま使用するか、または目的に合わせて拡張できます。
オブジェクト作成やウィザード編集を目的とする以外のウィザードの場合は、独自の ObjectFormProcessor を作成する必要があります。ObjectFormProcessors では、DefaultObjectFormProcessor クラスを拡張してください。
フォーム処理ロジックは、必要に応じて、このプロセッサの preProcess()doOperation()postProcess()、および postTransactionProcess() メソッドに配置してください。メソッドでは、DefaultObjectFormProcessor の対応するスーパーメソッドを呼び出してください。これによって、ObjectFormProcessorDelegates の呼び出しが処理されます。これらのメソッドには、ウィザードから収集されたすべてのフォームデータを格納する 1 つの ObjectBean が渡されます。フォームデータには、そのオブジェクトの getter メソッドを使用してアクセスできます。次に示す getter メソッドが一般的に使用されます。
public Map<String,List<String>> getChangedComboBox()
public Map<String,String> getChangedRadio()
public Map<String,String> getChangedText()
public Map<String,String> getChangedTextArea()
public Map<String,List<String>> getChecked()
public Map<String,List<String>> getUnChecked()
public List getRemovedItemsByName(String paramName)
public List getAddedItemsByName(String paramName)
public String getTextParameter(String key)
public String[] getTextParameterValues String key)
詳細については、Javadoc を参照してください。
ObjectBean の "object" 属性は、ターゲットオブジェクトのインスタンスを表します。下流のメソッドで使用できるように、必要に応じて、いずれかのプロセッサメソッド (preProcess() など) によって object 属性を設定してください。その他の情報は、プロセッサインスタンス変数を使用してメソッド間で受け渡しできます。
これらのメソッドに渡された NmCommandBean オブジェクトには、ウィザードが起動したページに関する情報や、ウィザードが起動したときに親ページで選択されたオブジェクトに関する情報が含まれています。また、すべての HTML フォームデータも含まれていますが、そのデータにアクセスする場合は、NmCommandBean ではなく ObjectBean に対してメソッドを使用してください。NmCommandBean の詳細については、Javadoc を参照してください。
preProcess()doOperation()postProcess()、および postTransactionProcess() メソッドの結果は、com.ptc.core.component.FormResult オブジェクトを使用して DefaultFormProcessorControllerに返します。結果が返される前に、これらの各メソッドによって FormResult.setStatus() が呼び出され、処理ステータスが返されます。次の 3 つのオプションを使用できます。
FormProcessingStatus.SUCCESS - エラーなしでメソッドが実行された場合
FormProcessingStatus.FAILURE - メソッドの実行で致命的なエラーが発生した場合。FormProcessingStatus.NON_FATAL_ERROR - メソッドは正常に実行されたが、ユーザーに対する報告が必要な 1 つまたは複数の問題が発生した場合。
DefaultFormProcessorController は、返された FormResult をその continueExecuting() メソッドに渡し、次の処理段階に進むか、中断するかを決定します。デフォルトでは、ステータスが FormProcessingStatus.FAILURE となった場合にのみ処理が中断されます。処理が中断するか、すべての処理が正常に完了した場合、コントローラは、ObjectFormProcessorsetResultNextAction() メソッドを呼び出して、ブラウザに返されたレスポンスページを作成するために必要な情報を FormResult に設定します。
このメソッドは、以下の情報を提供します。
フィードバックメッセージをユーザーに表示するかどうか (該当する場合)。
feedbackMessages および exceptions 変数から決定されます。
フィードバックメッセージは、ウィンドウ操作または指定された JavaScript を実行する前に表示されます (該当する場合)。
例外メッセージはステータスが FormProcessingStatus.FAILURE または FormProcessingStatus.NON_FATAL_ERROR の場合にのみ表示されます。
FormResult クラスと FormProcessingStatus クラスの詳細については、Javadoc を参照してください。
また、ObjectFormProcessor クラスの preProcess()doOperation()postProcess()、および postTransactionProcess() メソッドを使用して例外をスローすることもできます。その場合、ActionController に制御が戻り、FormResult の変数が以下のように設定されます。
status - FormProcessingStatus.FAILURE
exceptions - スローされた例外
これにより、レスポンスページでアラートウィンドウに例外メッセージが表示され、ウィザードウィンドウが閉じます。