将反馈发送给用户,以便在Grails中进行长时间运行?

时间:2012-04-04 14:04:09

标签: grails

我的Grails应用程序中有一个长时间运行的操作。我的第一个解决方案就是在控制器中执行操作,让用户等到操作完成。这不是一个可接受的解决方案,我想向用户显示操作的进度。进展只是文字。行动可能需要10秒到大约30分钟。

如何为长时间运行的操作显示用户的进度?

4 个答案:

答案 0 :(得分:3)

首先,您可能需要尝试Executor plugin,以便在后台运行该作业。这很有效。

然后我想你有两个选择。让浏览器通过Ajax轮询服务器以进行更新(正如Tim指出JProgress插件会为你做这样的事情)或者获得更多优势并考虑使用HTML5 WebWorkers来实现一种服务器推送方法。 WebWorkers不在

答案 1 :(得分:1)

您需要具有字段percentageComplete的任务或作业域类。控制器将创建并保存任务或作业,然后生成一个新线程来执行它。也许将执行代码放在服务中。

在完成任务时,将由您的执行代码更新Task或Job的percentageComplete字段。然后,您可以轮询作业(通过ajax)以查看作业的进展情况。

注意:确定完成的百分比非常符合您的特定代码。你可能不得不根据你的知识做出最好的猜测。即使对于明确如何确定完成百分比(如文件下载)的操作,也不确定(网络问题等)

答案 2 :(得分:0)

您能确定进度的状态吗?让我们说百分比? 我将创建长操作作为石英作业(背景)并通过ajax查询作业状态/长时间运行进度。

答案 3 :(得分:0)

JProgress plugin可能有所帮助,但我从来没有试过......