有効期限プロセッサの開発
このトピックでは、既成の有効期限プロセッサクラスを拡張し、承認申請を期限切れとしてマークする方法について説明します。
ソリューション
既成の承認申請プロセッサを拡張するカスタムクラスを作成します。
カスタムクラスを登録する xconf エントリを作成します。
ソリューションエレメント
次のテーブルで、ソリューションエレメントについて説明します。
エレメント
タイプ
説明
expireRegulatorySubmission(RegulatorySubmission regulatorySubmission)
API
承認申請を期限切れとしてマークするために使用されます。
デフォルトの動作
expireRegulatorySubmission メソッドのデフォルトの動作では、承認申請が期限切れとしてマークされ、その申請の段階が期限切れに変更されてから、RegulatoryMasterServiceEvent AUTO_EXPIRED イベントが呼び出されます。さらに、作業コピーを使用できない場合、expireRegulatorySubmission メソッドは改訂可能な承認申請をチェックアウトしてからチェックインします。この方法では、チェックアウトされた改訂可能な承認申請は期限切れとしてマークされません。
カスタムクラスの作成
有効期限処理をカスタマイズするには、SimpleRegulatorySubmissionProcessor または適切な改訂可能なサブタイププロセッサを拡張する Java クラス (独自のプロセッサ) を作成してから、expireRegulatorySubmission メソッドをオーバーライドします。改訂可能なサブタイププロセッサには、AERSubmissionProcessorERSubmissionProcessorRPSSubmissionProcessorUDISubmissionProcessor などがあります。
オーバーライドされた expireRegulatorySubmission メソッドの例を以下に示します。
@Override
public RegulatorySubmission expireRegulatorySubmission(RegulatorySubmission submission)
throws WTException, IllegalArgumentException {
if (submission == null) {
throw new IllegalArgumentException(WTMessage.getLocalizedMessage(regmstrResource.class.getName(),
regmstrResource.NULL_REGULATORY_SUBMISSION_EXPIRATION));
}
if (submission instanceof RegSubmission2
&& (WorkInProgressHelper.isWorkingCopy((Workable) submission)
|| WorkInProgressHelper.isCheckedOut((Workable) submission))) {
throw new WTException(WTMessage.getLocalizedMessage(regmstrResource.class.getName(),
regmstrResource.CHECKED_OUT_NO_EXPIRATION));
}
if (!submission.isExpired()) {
try {
submission = new ConditionalAutoCheckoutRunner<>(submission) {
@Override
public RegulatorySubmission performBusinessProcess(RegulatorySubmission managedObject)
throws Exception {
managedObject.setExpired(true);
managedObject.setSubmissionStage(SubmissionStage.EXPIRED);
PersistenceHelper.manager.save(managedObject);
return managedObject;
}
}.invoke();
RegulatorySubmissionHelper.service
.dispatchRegulatorySubmissionEvent(RegulatoryMasterServiceEvent.AUTO_EXPIRED,
submission);
} catch (WTException e) {
throw e;
} catch (Exception e) {
throw new WTException(e);
}
}
return submission;
}
これは役に立ちましたか?