导航到 Orbeon 按钮的 PDF 操作

Navigate to PDF action for Orbeon button

我已经为我的一些表单上的提交按钮设置了自定义流程,如下所示:

<property as="xs:string" name="oxf.fr.detail.process.submit.App.*">
  require-valid
  then confirm(message = "Are you sure you would like to submit the form?")
  then suspend
  then review
</property>

我希望它导航到表单的 pdf 副本,而不是转到评论页面(就像使用 pdf 按钮所做的那样)。我查看了文档,但还没有找到相应的操作。我找到了 pdf-url,但不确定如何使用它来做我想做的事。

我找到了用于为 pdf 按钮生成 pdf url 的 xbl,但卡在 $app 和 $form 未定义上。

<fr:href-button
        xmlns:frf="java:org.orbeon.oxf.fr.FormRunner"
        model="fr-persistence-model"
        ref="instance('fr-triggers-instance')/pdf"
        href=
            "/fr/service/{
                $app
            }/{
                $form
            }/pdf/{{
                string-join(
                    (
                        xxf:instance('fr-parameters-instance')/document/string(),
                        xxf:document-id(),
                        frf:filenameOrNull('pdf')[. != '']
                    ),
                    '/'
                )
            }}.pdf">


<property as="xs:string" name="oxf.fr.detail.process.submit.App.*">
  require-valid
  then confirm(message = "Are you sure you would like to submit the form?")
  then suspend
  then navigate(uri = "/fr/service/{ $app }/{ $form }/pdf/{ string-join( ( xxf:instance('fr-parameters-instance')/document/string(), xxf:document-id()) , '/' ) }.pdf")
</property>

我还注意到,当它尝试重定向到 pdf 的 404 时,它会尝试确认您要离开该页面。

我要用什么替换 then review 才能转到 pdf?

使用:

navigate(
    uri =
        "/fr/service/{
        xxf:instance('fr-parameters-instance')/app}/{
        xxf:instance('fr-parameters-instance')/form}/pdf/{
        string-join(
            (
                xxf:instance('fr-parameters-instance')/document/string(),
                xxf:document-id()
            ),
            '/')
        }.pdf"
)

确实应该有 built-in 函数来访问应用程序名称、表单名称和文档 ID。但现在您可以从 fr-parameters-instance 实例访问它们。 fr-parameters-instance 包含:

<app></app>
<form></form>
<form-version></form-version>
<document></document>
<mode>new</mode>
<uuid/>

您可以使用 set-data-status 操作强制数据状态​​为 safe

为我工作

 uri =
        "/fr/{
        xxf:instance('fr-parameters-instance')/app}/{
        xxf:instance('fr-parameters-instance')/form}/pdf/{
        xxf:instance('fr-parameters-instance')/document/string()} "
    )