キャンセルプロセッサの開発
このトピックでは、既成の申請プロセッサクラスを拡張し、postCancellation メソッドをタイプ固有の任意の処理によってオーバーライドする方法について説明します。
ソリューション
• 既成の承認申請プロセッサを拡張するカスタムクラスを作成します。
• カスタムクラスを登録する xconf エントリを作成します。
ソリューションエレメント
次のテーブルで、ソリューションエレメントについて説明します。
エレメント
|
タイプ
|
説明
|
postCancellation(RegulatorySubmission regulatorySubmission)
|
API
|
強制終了した承認申請をキャンセルします。
|
デフォルトの動作
postCancellation メソッドのデフォルトの動作では、承認申請の申請段階が「強制終了」に変更されます。承認申請に対して「終了日」が設定されていない場合、デフォルトの実装では、終了日が現在の日付に設定されます。
デフォルトの実装は、主にデモと説明を目的としています。ただし、これは多くの承認申請タイプに適した一般的なベストプラクティスです。要件に応じて、インプリメンターは提供されているドキュメンテーションと一致する申請固有のプロセッサを作成できます。
カスタムクラスの作成
キャンセル処理をカスタマイズするには、SimpleRegulatorySubmissionProcessor または適切な改訂可能なサブタイププロセッサを拡張する Java クラス (独自のプロセッサ) を作成してから、postCancellation メソッドをオーバーライドします。改訂可能なサブタイププロセッサには、AERSubmissionProcessor、ERSubmissionProcessor、RPSSubmissionProcessor、UDISubmissionProcessor などがあります。
オーバーライドされた postCancellation メソッドの例を次に示します。
@Override
public RegulatorySubmission postCancellation(RegulatorySubmission regulatorySubmission) throws Exception {
if (!VersionControlHelper.isLatestIteration(regulatorySubmission)) {
Object[] errorMessageObjects = new Object[1];
errorMessageObjects[0] = regulatorySubmission.getDisplayIdentifier();
throw new WTException(vcResource.class.getName(), vcResource.OBJECT_IS_NOT_LATEST, errorMessageObjects);
}
RegulatorySubmissionHelper.setSubmissionStage(regulatorySubmission, getCancellationStage());
// Update terminated date when it is null
if (regulatorySubmission.getTerminatedDate() == null) {
regulatorySubmission = new ConditionalAutoCheckoutRunner<>(regulatorySubmission) {
@Override
public RegulatorySubmission performBusinessProcess(RegulatorySubmission managedObject)
throws Exception {
managedObject.setTerminatedDate(new Timestamp(System.currentTimeMillis()));
return (RegulatorySubmission) PersistenceHelper.manager.save(managedObject);
}
}.invoke();
}
return regulatorySubmission;
}