【发布时间】:2021-08-06 09:52:42
【问题描述】:
在文档中我看到我们可以在 properties-local.xml 中自定义流程,但它仅适用于外部发布按钮(对话框中不发布按钮)
我打算做的流程:
- 在表单构建器中,用户单击发布
- 显示发布对话框,用户单击对话框中的发布按钮。
- 然后它会从我的服务器调用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)创建新的表单运行器。
【问题讨论】:
-
我认为你是对的,你可以覆盖打开对话框的过程,之后代码不会通过过程。但可能还有其他方法可以做到这一点。您希望将哪些信息传递给您自己的 API?你的 API 是做什么的?
-
嗨@avernet,我用代码更新了我的问题。我的目的是当用户单击对话框中的发布按钮时,它将在表单构建器中发送 appName、formName 和表单版本,以便我可以使用它来创建 url,例如:localhost:8080/orbeon/fr/appName/formName/new
-
感谢您的更新,但我不清楚您所说的“我可以使用它来创建 url,例如:localhost:8080/orbeon/fr/appName/formName/new”是什么意思。当您发布表单时,该表单会自动在您提到的 URL 上可用,您无需为此执行任何其他操作。有什么我想念的吗?
-
感谢您的回复@avernet,因为用户只能从我的 Web 应用程序在 Form Runner 中打开一个新表单(管理员将在 Form Builder 中创建表单)。因此,有什么方法可以在点击对话框中的提交按钮后挂钩我的代码?
-
我仍然不清楚您希望在发布时运行的代码什么。但是,目前,您无法挂钩 表单发布后运行的代码。您可以使用
publish流程来完成这项工作,我将在下面的答案中详细介绍这一点,但正如您所看到的,这种技术可能非常复杂。因此,我问您的代码需要做什么,因为可能(或可能没有)另一种方法来实现该结果。
标签: orbeon