在Activiti / Alfresco工作流程中创建弹出窗口

问题描述 投票:1回答:2

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

xml alfresco bpmn activiti alfresco-share
2个回答
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;找到以下元素并添加一个如图所示的field元素([此值应替换为您设置中的适当值):

<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的形式提供给您。这些步骤有点高层次,但是我什至不知道这是否是您正在寻找的解决方案,因此如果需要,我可以提供更多详细信息。

另一种可能性是,您正在寻找一个由工作流程触发但不依赖于任何工作流程用户界面的弹出窗口。在这种情况下,我们分为另外两种可能性-

a)您希望工作流程完成或达到x状态时在用户桌面上显示一个弹出窗口。我将使用Java通知区域应用程序执行此操作。实际上,我以前曾考虑过这样做,当我意识到需要进行大量工作时,选择使用电子邮件代替。如果您决定尝试这种方法,那么祝您好运-您比我不那么懒惰。

b)您希望在浏览器中显示一个弹出窗口(同样,这可能是另一个浏览器窗口,一个yui对话框或一个jscript / vbscript警报/ msgbox)。这可以用AJAX完成。如果是我,我将在每个用户主文件夹中保留一个xml文件。我将其设置为权限太高而无法查看,但是使用工作流定义中的run-as选项以管理员用户身份运行脚本任务以更新这些文件。例如,您可能有一个财务批准工作流,当提交新请求时,该工作流需要通知财务组中的每个人。脚本任务将遍历财务组,选择每个用户,并将元素添加到其用户主目录中的xml文件中。

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

在您的脚本打到uri时,设置一个回购Web脚本以将数据从当前用户的用户主xml文件中拉出。在每个元素上使用属性以保持消息的查看状态。当网页脚本运行时,它应该返回任何未查看的消息(可能通过json)并将其设置为已查看。

再次-非常高级的指导,仍然希望您有很多工作要做,但是如果您遇到问题,请回溯尝试解决的问题(如果有),我可能会为您提供更多详细信息。


0
投票

嗨克里斯·奥凯利和这个0ne Pr0grammer,

我也遇到类似于“ This 0ne Pr0grammer”的问题。我尚不知道如何创建[myWorkflowPopup] .ftl文件的内容。

我希望弹出窗口显示消息:确定吗?并且有2个按钮:“确定”和“取消”。按下按钮之一后,屏幕上将显示仪表板。 (移至仪表板站点)

请引导我。

© www.soinside.com 2019 - 2024. All rights reserved.