目前,出现一个带有失败类名称的消息框:
是否可以覆盖 Alfresco 中的默认行为?我们可以使用表单服务来呈现不同的信息吗?
除了 zladuric 的回答,
您可以使用failureCallback方法来显示您想要的消息。但是由于使用了“开始工作流”、“任务编辑”、“任务详情”等工作流表单,所以很难在工作流表单的failureCallback 方法中搜索新的方法。
例如,在“ Start Workflow ”表单中,您可以添加我们自己的successCallBack
,并像这样在start-workflow.jsfailureCallBack
中编写onBeforeFormRuntimeInit事件处理程序。
onBeforeFormRuntimeInit: function StartWorkflow_onBeforeFormRuntimeInit(layer, args)
{
var startWorkflowForm = Dom.get(this.generateId + "-form");
Event.addListener(startWorkflowForm, "submit", this._submitInvoked, this);
args[1].runtime.setAJAXSubmit(true,
{
successCallback:
{
fn: this.onFormSubmitSuccess,
scope: this
},
failureCallback:
{
fn: this.onFormSubmitFailure,
scope: this
}
});
}
onFormSubmitSuccess: function StartWorkflow_onFormSubmitSuccess(response)
{
this.navigateForward(true);
// Show your success message or do something.
}
onFormSubmitFailure: function StartWorkflow_onFormSubmitFailure(response)
{
var msgTitle = this.msg(this.options.failureMessageKey);
var msgBody = this.msg(this.options.failureMessageKey);
// example of showing processing response message
// you can write your own logic
if (response.json && response.json.message)
{
if(response.json.message.indexOf("ConcurrencyFailureException") != -1)
{
msgTitle = this.msg("message.concurrencyFailure");
msgBody = this.msg("message.startedAgain");
}
else
msgBody = response.json.message;
}
Alfresco.util.PopupManager.displayPrompt(
{
title: msgTitle,
text: msgBody
});
}
由于Alfresco.component.StartWorkflow
(在 start-workflow.js 中)扩展Alfresco.component.ShareFormManager
(在 alfresco.js 中)。您可以覆盖 start-workflow.js 中的 onBeforeFormRuntimeInit 事件。我希望这对你有所帮助。
我现在不看代码,但这看起来像一个常规的 YUI 对话框。所以它被YUI解雇了。所以这个 YUI 是客户端,可能在 My-tasks dashlet 或我的任务页面中。
此外,错误消息看起来像是来自失败的后端消息/服务的 status.message。
您可能会找到该客户端 javascript 文件,找到启动任务的方法并查看它的failureCallback处理程序是什么。然后编辑该failureCallback方法并使其显示与response.status.message或其他任何内容不同的内容。也许像this.msg("message.my-custom-error-message"); 然后您可以自行定制。
修改 YUI 对话框脚本也可能会影响其他功能。如果我们自定义 start-workflow。js,它只会以启动工作流的形式实现。
因此,作为通用解决方案,以下是建议。
当 alfresco 渲染工作流表单时,它使用 activiti-transition.js 文件渲染转换按钮。基本上,这些按钮除了提交工作流表单之外什么都不做。
所以最好的方法是,自定义这个 activiti-transition.ftl 和 activiti-transition.js 文件,进行 ajax 调用并根据需要处理响应。
我刚刚查看了如何显示此前端错误的完整流程。