开发取消处理器
本主题介绍如何扩展预设提交处理器类,以及如何使用任何类型特定的处理方法来改写 postCancellation 方法。
解决方案
• 创建一个自定义类来扩展预设监管提交处理器。
• 创建一个 xconf 条目来注册自定义类。
解决方案元素
下一张表格介绍解决方案元素:
元素
|
类型
|
说明
|
postCancellation(RegulatorySubmission regulatorySubmission)
|
API
|
用于取消已终止的监管提交。
|
默认行为
postCancellation 方法的默认行为是将监管提交的提交阶段更改为“已终止”。如果没有为监管提交设置“终止日期”,则默认实施会将日期设置为当前日期。
默认实施主要用于演示和教学目的。但该实施确实代表了一种典型的最佳做法,可能适用于多种监管提交类型。实施者可根据需求创建与所提供的文档相匹配的提交特定处理器。
创建自定义类
要自定义取消处理方法,请首先创建一个 Java 类 (您的处理器) 来扩展 SimpleRegulatorySubmissionProcessor 或相应的可修订子类型处理器,然后改写 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;
}