1

好的,所以我一直在互联网上寻找将弹出窗口合并到 activiti/alfresco 工作流程中的任何示例,但没有找到任何结果。我只是想知道是否有人以前有这样做的经验,或者甚至知道是否有可能做这样的事情?

4

1 回答 1

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/org/alfresco/components/form/controls/myWorkflowPopup.ftl。使用包括 javascript 在内的 freemarker 语法设置文件,以便在您喜欢的情况下创建您喜欢的弹出窗口 - 我从您的帖子中不确定您是否想要一个弹出式浏览器窗口、一个小的 javascript 警报或一个 YUI 对话框,但是您可以做任何这些。同样,我不确定您要如何触发此操作-从按钮,当有人在表单字段中选择“批准”时,等等。设置控件后,您可以将其添加到工作流任务中。要添加控件,请编辑 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 警报/msgbox)。这可以通过 AJAX 完成。如果是我,我会在每个用户主文件夹中保留一个 xml 文件。我会将其设置为对用户查看的权限太高,但使用工作流定义中的 run-as 选项以管理员用户身份运行脚本任务以更新这些文件。例如,您可能有一个财务审批工作流,需要在提交新请求时通知财务组中的每个人。该脚本任务将遍历财务组,选择每个用户,并将一个元素附加到他们用户主页中的 xml 文件中。

对于弹出逻辑,我将在 share-config-custom.xml 中添加一个 javascript 依赖项,以便您可以在每个页面中包含一个外部脚本文件。在该脚本文件中,使用 setInterval 每 x 秒获取一个 uri(x 的正确值由您决定 - 平衡性能/带宽使用与功能)。

在脚本命中的 uri 处,设置一个 repo webscript 以从当前用户的用户主 xml 文件中提取数据。在每个元素上使用一个属性来保持消息的查看状态。当 webscript 运行时,它应该返回任何未查看的消息(可能通过 json)并将它们设置为已查看。

再一次 - 非常高水平的指导,仍然需要你做很多工作,但如果你有问题回复你想要完成的这些(如果有的话),我可以更详细地帮助你。

于 2012-09-21T06:55:07.063 回答