如何使自定义Alfresco AMP操作失败?

问题描述 投票:2回答:2

我为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中定义了失败和成功消息。有没有办法在这种情况下管理行动?

java action alfresco alfresco-module-package
2个回答
4
投票

您不应该(需要)自己设置ActionImpl类的属性 - 这些是ActionService要处理的实现细节。

此外,您不应该抛出基本的RuntimeException。在许多情况下,Alfresco不会以任何方式处理基本的RuntimeException,只是将其传播到调用链中。然后它依赖于您调用的HTTP / Web脚本API,如果它实际上触发了“失败”消息以进行共享。

抛出的相应异常是ActionServiceException(它是RuntimeException的子类)。

要在Share中显示错误消息,您还需要配置文档库操作(我假设您正在使用)以包含“failureMessage”参数(对于可以使用I18n消息密钥的静态消息)或“失败”参数(对于必须在XML配置中提供回调函数的动态处理)。


1
投票

我试过扔qazxsw poi,qazxsw poi但我不知道为什么扔RuntimeException作品。如果有人正在寻找答案,请留下答案:

ActionServiceException
© www.soinside.com 2019 - 2024. All rights reserved.