Workflow 自定义或更改工作流对话框在Alfresco出错时发出的默认消息框
目前,出现一个messagebox,其中包含失败的类名:Workflow 自定义或更改工作流对话框在Alfresco出错时发出的默认消息框,workflow,alfresco,alfresco-share,Workflow,Alfresco,Alfresco Share,目前,出现一个messagebox,其中包含失败的类名: 是否可以覆盖Alfresco中的默认行为?我们可以使用表单服务来显示不同的消息吗?我现在不看代码,但这看起来像一个常规的YUI对话框。所以它是由YUI发射的。所以这个YUI是客户端,可能在我的任务dashlet或我的任务页面中 此外,错误消息看起来像是来自失败后端消息/服务的status.message 您可能会找到该客户端javascript文件,找到启动任务的方法,并查看其“failureCallback”处理程序是什么。然后编辑f
是否可以覆盖Alfresco中的默认行为?我们可以使用表单服务来显示不同的消息吗?我现在不看代码,但这看起来像一个常规的YUI对话框。所以它是由YUI发射的。所以这个YUI是客户端,可能在我的任务dashlet或我的任务页面中 此外,错误消息看起来像是来自失败后端消息/服务的status.message
您可能会找到该客户端javascript文件,找到启动任务的方法,并查看其“failureCallback”处理程序是什么。然后编辑failureCallback方法,使其显示与response.status.message或其他内容不同的内容。可能类似于this.msg(“message.my自定义错误消息”)然后您可以自己定制。除了zladuric答案之外 您可以使用failureCallback方法显示所需的消息。 但由于表单引擎使用了“启动工作流”、“任务编辑”、“任务详细信息”等工作流表单,因此很难在工作流表单的failureCallback方法中搜索新的工作流表单 例如,在“启动工作流”表单中,您可以通过在启动工作流.js中编写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对话框脚本也可能会影响其他功能。
如果我们自定义启动工作流。js,它只会在启动工作流表单中实现
因此,作为通用解决方案,以下是建议
当alfresco呈现工作流表单时,它使用activiti-transition.js文件呈现转换按钮。基本上,这些按钮除了提交工作流表单之外,什么也不做
因此,最好的方法是定制这个activiti-transition.ftl和activiti-transition.js文件,以进行ajax调用并根据需要处理响应
我刚刚了解了如何显示前端错误的完整流程
谢谢你提供的有用的见解:-)谢谢,你给了我提示。再给我一个建议。您可能会发现哪个后端脚本发出此错误消息。(可能是工作流Web脚本之一)。然后编辑脚本以捕获错误并返回一些有意义的状态消息。你不必那样触摸前端。你可以选择自己的方式,这取决于你对什么更满意。