首页 > 解决方案 > 我可以在 properties-local.xml 的“发布”对话框中自定义“发布”按钮的流程吗?

问题描述

在文档中,我看到我们可以在 properties-local.xml 中自定义流程,但它仅适用于外部的发布按钮(对话框中的发布按钮不可用)

我打算做的流程:

  1. 在表单构建器中,用户单击发布
  2. 显示发布对话框,用户单击对话框中的发布按钮。
  3. 然后它会从我的服务器调用 api 来发送信息。

在 properties-local.xml 中,我在这部分进行了修改:

<property as="xs:string" name="oxf.fr.detail.process.publish.orbeon.builder"> </property>

使用此代码:

<!-- show publish dialog -->
    xf:show(
            dialog = "fb-publish-dialog",
            app    = "{xxf:instance('fb-form-instance')/xh:head/xf:model[@id = 'fr-form-model']/xf:instance[@id = 'fr-form-metadata']/*/application-name}",
            form   = "{xxf:instance('fb-form-instance')/xh:head/xf:model[@id = 'fr-form-model']/xf:instance[@id = 'fr-form-metadata']/*/form-name}"
            )

<!-- expect when user click publish button in dialog will execute this code -->    
    then save
    then send(
         uri = "http://localhost:8000/api/getFormBuilderInfo",
         replace = "all"
         method = "POST",
         content = "xml")

我不知道如何挂钩到对话框中的发布按钮的问题。因为我想确保它已存储在 orbeon 数据库中,以便使用 appName 和 formName (我通过 api 获得:http://localhost:8000/api/getFormBuilderInfo)创建新的表单运行器。

标签: orbeon

解决方案


在撰写本文时,无法在表单发布后调用代码。

作为一种解决方法,您可以在publish流程中挂接您的代码,但此流程在表单发布之前运行,特别是在表单生成器用户看到一个对话框要求他们确认发布表单之前。因此,在调用代码和实际发布表单的时间之间会有延迟,当然,用户可能会关闭对话框而不继续发布表单。

因此,在实践中,要使用此解决方法,您需要应用某种启发式方法,例如“当您的代码被调用时,注册一些侦听器以运行,比如说在 5 分钟内;当该时间过去时,检查表单是否实际已发布,如果是,请执行您需要执行的操作”。


推荐阅读