轉譯器的檔案詳細資訊

簡介

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

  • PDF表單(XDP / Acroform /平面PDF)
  • 新的HTML表格
  • 影像
  • 協力廠商應用程式(例如,通信管理)

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

PDF表單

PDF表格由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表單中的現有事件接聽程式。 此清除還考慮在任務詳細資訊視圖中在表單頁籤和歷史記錄頁籤之間切換。

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

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

此方法是從HTML與PDF javascript通訊的標準方式。 PdfTaskForm檢視也會處理平面PDF,並清晰呈現。

注意

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

新的HTML表單

新的HTML表格由NewHTMLTaskForm檢視轉譯。

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

此javascript與上述「PDF表單」中提及的Javascript不同,但其用途類似。

注意

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

Flex表單與指南

Flex表格由SwfTaskForm轉譯,參考線則由HtmlTaskForm檢視轉譯。

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

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

此協定由WsNextAdapter.swf定義。 在新增視窗物件之前,會先從先前開啟的SWF表格移除現有的flexMessageHandlers。 邏輯還考慮在任務詳細資訊視圖中的表單頁籤和歷史記錄頁籤之間切換。 WsNextAdapter.swf 用於執行各種表單動作,例如儲存或送出。

注意

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

協力廠商應用程式(例如,通訊管理)

協力廠商應用程式會使用ExtAppTaskForm檢視來轉譯。

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

AEM Forms工作區監聽window.global.postMessage([Message],[Payload])

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

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

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

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

您可在Integrating Comperence Management in AEM Forms workspace閱讀有關協力廠商應用程式整合的更多資訊。

本頁內容