orbeon - 我可以在 properties-local.xml 的“发布”对话框中自定义“发布”按钮的流程吗?
问题描述
在文档中,我看到我们可以在 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)创建新的表单运行器。
解决方案
在撰写本文时,无法在表单发布后调用代码。
作为一种解决方法,您可以在publish
流程中挂接您的代码,但此流程在表单发布之前运行,特别是在表单生成器用户看到一个对话框要求他们确认发布表单之前。因此,在调用代码和实际发布表单的时间之间会有延迟,当然,用户可能会关闭对话框而不继续发布表单。
因此,在实践中,要使用此解决方法,您需要应用某种启发式方法,例如“当您的代码被调用时,注册一些侦听器以运行,比如说在 5 分钟内;当该时间过去时,检查表单是否实际已发布,如果是,请执行您需要执行的操作”。
推荐阅读
- json - 将json对象的值传递给另一个对象
- c# - 有没有办法为 TextBox 实现 Redo() 函数?C#
- flutter - 评论框作为 Facebook 在颤动
- javascript - 如何管道搜索所有数据而不仅仅是名称?角
- apache-spark - 快速压缩的镶木地板文件出现意外的数据大小问题
- python - 标签 inset_axes 散点图
- intellij-idea - IntelliJ IDEA 未在新项目向导中显示 JavaFX
- python - 无论我尝试什么,我都无法打印我不断得到它的值 <__main__.card object at -->
- python - 为什么 Jupyter notebook 的代码存在 Pycharm 没有的问题?
- c++ - 扣除 string_view 的 std::make_pair 的一些奇怪行为