我为Alfresco repo开发了一个自定义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类的属性 - 这些是ActionService要处理的实现细节。
此外,您不应该抛出基本的RuntimeException。在许多情况下,Alfresco不会以任何方式处理基本的RuntimeException,只是将其传播到调用链中。然后它依赖于您调用的HTTP / Web脚本API,如果它实际上触发了“失败”消息以进行共享。
抛出的相应异常是ActionServiceException(它是RuntimeException的子类)。
要在Share中显示错误消息,您还需要配置文档库操作(我假设您正在使用)以包含“failureMessage”参数(对于可以使用I18n消息密钥的静态消息)或“失败”参数(对于必须在XML配置中提供回调函数的动态处理)。
我试过扔qazxsw poi,qazxsw poi但我不知道为什么扔RuntimeException
作品。如果有人正在寻找答案,请留下答案:
ActionServiceException