好的,所以我一直在互联网上寻找将弹出窗口纳入活动/露天工作流程的任何示例,但是没有得到任何结果。我只是想知道是否有人有任何先前的经验这样做,甚至知道是否有可能做这样的事情?
答案 0 :(得分:4)
你想要触发弹出窗口?我可以看到你可能想要在这里完成的两件事,每件事都有不同的实现。
如果你想在工作流的某个特定任务的任务编辑页面中创建一个弹出窗口,你可以添加一个带有javascript的控件来产生它(我猜你已经知道了工作流设计的基础知识,如果没有, Jeff Potts的教程很棒 - > http://ecmarchitect.com/images/articles/alfresco-workflow/advanced-workflow-article-2ed.pdf)。为此,请在tomcat / shared / classes / alfresco / web-extension / site-webscripts / org / alfresco / components / form / controls中创建一个文件,例如:tomcat / shared / classes / alfresco / web-extension / site -webscripts /组织/露天/组件/形式/控制/ myWorkflowPopup.ftl。 使用freemarker语法设置文件,包括javascript,以便在您喜欢的事件中创建一个弹出窗口 - 我不确定您的帖子是否需要弹出浏览器窗口,一个小的javascript警报或YUI对话框,但是你可以做任何这些。同样地,我不确定你是怎么想触发这个 - 从一个按钮,当有人在表单字段中选择'Approve'时,无论如何。设置控件后,可以将其添加到工作流任务中。 要添加控件,请编辑tomcat / shared / classes / alfresco / web-extension / share-config-custom.xml;找到以下元素并添加一个如下所示的字段元素([这样的值]应该用你设置中的适当值替换):
<config evaluator="task-type" condition="[workflowNS]:[someTask]">
<forms>
<form>
<field-visibility>
...
</field-visibility>
<appearance>
...
<field id="[workflowNS]:[someField]">
<control template="/org/alfresco/components/form/controls/[myWorkflowPopup].ftl" />
</field>
</appearance>
</form>
</forms>
</config>
如果您需要在弹出窗口中使用它,[workflowNS]:[someField]的值将在模板中以field.value的形式提供给您。这些步骤有点高,但我甚至不知道这是否是您正在寻找的解决方案,所以如果您需要,我可以提供更多详细信息。
另一种可能性是您正在寻找工作流触发的弹出窗口,但它独立于任何工作流UI。在这种情况下,我们分成另外两种可能性 -
a)当工作流程完成或达到x状态时,您希望在用户桌面上显示一个弹出窗口。我会用java通知区域应用程序执行此操作。我实际上考虑过这样做,当我意识到需要做多少工作时,我选择使用电子邮件。祝你好运,如果你决定试试这个 - 你不是一个懒惰的人。
b)您希望在浏览器中显示一个弹出窗口(同样可能是另一个浏览器窗口,yui对话框或jscript / vbscript alert / msgbox)。这可以通过AJAX完成。如果是我,我会在每个用户主文件夹中保留一个xml文件。我将此设置为具有太高的权限以供用户查看,但使用工作流定义中的run-as选项以管理员用户身份运行脚本任务以更新这些文件。例如,您可能有财务审批工作流程,需要在提交新请求时通知财务组中的每个人。脚本任务将遍历财务组,选择每个用户,并将元素附加到其用户主目录中的xml文件。
对于弹出逻辑,我将在share-config-custom.xml中添加一个javascript依赖项,以便您可以在每个页面中包含一个外部脚本文件。在该脚本文件中,每隔x秒使用setInterval GET到一个uri(x的正确值由您决定 - 平衡性能/带宽使用与功能)。
在uri被脚本命中时,设置repo webscript以从当前用户的用户主页xml文件中提取数据。在每个元素上使用属性以保持查看的消息状态。当webscript运行时,它应该返回任何未查看的消息(可能通过json)并将它们设置为已查看。
再次 - 非常高级别的教学仍然期待你的大量工作,但如果你有问题回复你想要完成哪些(如果有的话),我可以帮助你更详细