渲染器的文檔詳細資訊

簡介

在AEM Forms工作區中,可順暢地支援多種表單類型。 這些包括:

  • PDF forms(XDP / Acroform /一般PDF)
  • 新HTML表單
  • 影像
  • 第三方應用程式(例如通信管理)

本檔案從語義自訂/元件重複使用的角度,說明這些轉譯者的工作方式,以便在不破壞任何轉譯的情況下滿足客戶需求。 雖然AEM Forms工作區允許任何使用者介面/語意變更,但建議不要變更不同表單類型的轉譯邏輯,否則結果可能無法預測。 本檔案旨在提供指引/知識,以支援轉譯相同的表單、在不同入口中使用相同的工作區元件,而非修改轉譯邏輯本身。

PDF forms

PDF forms由PdfTaskForm View呈現。

將XDP表單轉譯為PDF時,FormsAugmenter服務會新增FormBridge JavaScript™。 此JavaScript™(在PDF表單內)有助於執行表單提交、表單儲存或離線表單等動作。

在AEM Forms工作區中,PDFTaskForm檢視會透過/lc/libs/ws/libs/ws/pdf.html處的中介HTML與FormBridgejavascript通訊。 流量為:

PDFTaskForm檢視 — pdf.html

使用window.postMessage / window.attachEvent('message')進行通訊

此方法是上層框架與iframe之間通訊的標準方式。 新增事件監聽器之前,會先移除先前開啟之PDF forms中的現有事件監聽器。 此清除還考慮在任務詳細資訊視圖中的表單頁簽和歷史記錄頁簽之間進行切換。

pdf.html — 轉 FormBridge譯的PDF內的javascript

使用pdfObject.postMessage / pdfObject.messageHandler進行通訊

此方法是從HTML與PDFJavaScript通訊的標準方式。 PdfTaskForm檢視也能處理平面PDF,並直接呈現。

注意

不建議修改PdfTaskForm視圖的pdf.html /內容。

新HTML Forms

新的HTML表單會由NewHTMLTaskForm檢視呈現。

使用部署在CRX上的行動表單套件將XDP表單轉譯為HTML時,它也會將額外的FormBridgeJavaScript新增至表單,這會顯示儲存和提交表單資料的不同方法。

此JavaScript與上述PDF forms中所述的不同,但有類似的用途。

注意

不建議修改NewHTMLTaskForm檢視的內容。

Flex Forms與指南

Flex Forms由SwfTaskForm呈現,而參考線由HtmlTaskForm檢視分別呈現。

在AEM Forms工作區中,這些檢視會與實際SWF通訊,實際SWF會使用/lc/libs/ws/libs/ws/WSNextAdapter.swf處的中介SWF組成Flex表單/指南

通訊會使用swfObject.postMessage / window.flexMessageHandler進行。

此協定由WsNextAdapter.swf定義。 在添加新表單之前,會刪除先前開啟的SWF表單中窗口對象上的現有flexMessageHandlers。 此邏輯也會考慮在任務詳細資訊檢視中的表單標籤和歷史記錄標籤之間進行切換。 WsNextAdapter.swf 用於執行儲存或提交等各種表單動作。

注意

不建議修改WSNextAdapter.swf或SwfTaskForm / HtmlTaskForm視圖的內容。

第三方應用程式(例如通信管理)

使用ExtAppTaskForm視圖呈現第三方應用程式。

協力廠商應用程式與AEM Forms工作區通訊

AEM Forms workspace監聽window.global.postMessage([Message],[Payload])

[] Messagecan是指定為 SubmitMessage| CancelMessage| ErrorMessage| actionEnabledMessageruntimeMap。協力廠商應用程式必須使用此介面,才能視需要通知AEM Forms工作區。 必須使用此介面,因為AEM Forms工作區必須知道提交任務時,以便清除任務窗口。

AEM Forms工作區與協力廠商應用程式通訊

如果AEM Forms工作區的直接動作按鈕可見,則會呼叫window.[External-App-Name].getMessage([Action]),其中從routeActionMap讀取[Action]。 協力廠商應用程式必須監聽此介面,然後透過postMessage () API通知AEM Forms工作區。

例如,Flex應用程式可定義ExternalInterface.addCallback('getMessage', listener)以支援此通訊。 如果第三方應用程式希望通過其自己的按鈕處理表單提交,則應指定hideDirectActions = true() in the runtimeMap,並可跳過此監聽程式。 因此,此結構為選用。

您可以前往整合AEM Forms工作區中的通信管理,深入了解與通信管理相關的第三方應用程式整合。

本頁內容