如何使自定义 Alfresco AMP 操作失败?
How to make custom Alfresco AMP action fail?
我已经为 Alfresco 存储库开发了自定义 AMP 操作。我想让 Alfresco 明白,如果不满足某些条件,操作就会失败,因此会在弹出窗口中显示失败消息。
我在 executeImpl
方法中写了以下内容,但如果不满足条件,操作不会失败。
@Override
protected void executeImpl(Action action, NodeRef actionedUponNodeRef) {
if (condition) {
// Do something
} else {
((ActionImpl) action).setExecutionEndDate(new Date());
((ActionImpl) action).setExecutionStatus(ActionStatus.Failed);
((ActionImpl) action).setExecutionFailureMessage("Action is failed");
throw new RuntimeException("Action is failed");
}
}
Alfresco认为动作执行成功。是的,我在 share-config-custom.xml
中定义了失败和成功消息。有什么方法可以管理这种情况下的操作吗?
您不应该(需要)自己设置 ActionImpl 的属性 class - 这些是留给 ActionService 处理的实现细节。
此外,您不应抛出基本的 RuntimeException。在许多情况下,Alfresco 不会以任何方式处理基本的 RuntimeException,而只是将其传播到调用链中。然后它取决于您调用的 HTTP / web 脚本 API,如果它实际上触发了要共享的 "failure" 消息。
要抛出的适当异常是 ActionServiceException(它是 RuntimeException 的 sub-class)。
要在共享中显示错误消息,您还需要配置文档库操作(我假设您正在使用)以包含 "failureMessage" 参数(对于静态消息,您可以在其中可以使用 I18n 消息键)或 "failure" 参数(对于必须在 XML 配置中提供回调函数的动态处理)。
我试过投掷 RuntimeException
、ActionServiceException
但我不知道为什么投掷 WebScriptException
有效。如果有人正在寻找答案,请在这里留下答案:
@Override
protected void executeImpl(Action action, NodeRef actionedUponNodeRef) {
if (condition) {
// Do something
} else {
throw new WebScriptException("Action is failed");
}
}
我已经为 Alfresco 存储库开发了自定义 AMP 操作。我想让 Alfresco 明白,如果不满足某些条件,操作就会失败,因此会在弹出窗口中显示失败消息。
我在 executeImpl
方法中写了以下内容,但如果不满足条件,操作不会失败。
@Override
protected void executeImpl(Action action, NodeRef actionedUponNodeRef) {
if (condition) {
// Do something
} else {
((ActionImpl) action).setExecutionEndDate(new Date());
((ActionImpl) action).setExecutionStatus(ActionStatus.Failed);
((ActionImpl) action).setExecutionFailureMessage("Action is failed");
throw new RuntimeException("Action is failed");
}
}
Alfresco认为动作执行成功。是的,我在 share-config-custom.xml
中定义了失败和成功消息。有什么方法可以管理这种情况下的操作吗?
您不应该(需要)自己设置 ActionImpl 的属性 class - 这些是留给 ActionService 处理的实现细节。
此外,您不应抛出基本的 RuntimeException。在许多情况下,Alfresco 不会以任何方式处理基本的 RuntimeException,而只是将其传播到调用链中。然后它取决于您调用的 HTTP / web 脚本 API,如果它实际上触发了要共享的 "failure" 消息。
要抛出的适当异常是 ActionServiceException(它是 RuntimeException 的 sub-class)。
要在共享中显示错误消息,您还需要配置文档库操作(我假设您正在使用)以包含 "failureMessage" 参数(对于静态消息,您可以在其中可以使用 I18n 消息键)或 "failure" 参数(对于必须在 XML 配置中提供回调函数的动态处理)。
我试过投掷 RuntimeException
、ActionServiceException
但我不知道为什么投掷 WebScriptException
有效。如果有人正在寻找答案,请在这里留下答案:
@Override
protected void executeImpl(Action action, NodeRef actionedUponNodeRef) {
if (condition) {
// Do something
} else {
throw new WebScriptException("Action is failed");
}
}