建立最適化Forms (核心元件)的自訂提交動作
提交動作可讓使用者為從表單擷取的資料選擇目的地,並定義要在表單提交上執行的其他功能。 AEM表單支援多個立即可用的提交動作(OOTB),例如傳送電子郵件或儲存資料至SharePoint或OneDrive。
您也可以建立自訂提交動作,以新增現成可用的選項中未包含的功能。 例如,將表單資料與第三方應用程式整合,或根據使用者輸入觸發個人化SMS通知。
必要條件
開始建立Adaptive Forms的第一個自訂提交動作之前,請確定您具備下列條件:
-
純文字編輯器(IDE):雖然任何純文字編輯器都可以運作,但Microsoft Visual Studio Code之類的整合式開發環境(IDE)可提供進階功能,讓編輯更輕鬆。
-
Git:管理程式碼變更需要此版本控制系統。 如果您尚未安裝,請從https://git-scm.com下載。
建立您的第一個自訂表單提交動作
下圖說明為最適化表單建立自訂提交動作的步驟:
複製AEM as a Cloud Service Git存放庫。
-
開啟命令列,並選擇要儲存AEM as a Cloud Service存放庫的目錄,例如
/cloud-service-repository/
。 -
執行以下命令以複製存放庫:
code language-none git clone https://git.cloudmanager.adobe.com/<organization-name>/<app-id>/
在哪裡可以找到此資訊?
如需尋找這些詳細資訊的逐步指示,請參閱Adobe Experience League文章"存取Git"。
您的專案已就緒!
當命令成功完成時,您會看到在本機目錄中建立的新資料夾。 此資料夾是以您的應用程式(例如app-id)命名。 此資料夾包含從AEM as a Cloud Service Git存放庫下載的所有檔案和程式碼。 您可以在
archetype.properties
檔案中找到您AEM專案的<appid>
。在本指南中,我們將此資料夾稱為
[AEMaaCS project directory]
。
新增提交動作
-
在編輯器中開啟存放庫資料夾。
-
導覽至
[AEMaaCS project directory]
中的下列目錄:code language-none /ui.apps/src/main/content/jcr_root/apps/<app-id>/
重要:將
<app-id>
取代為您的實際應用程式識別碼。 -
為您自訂提交動作建立新資料夾,並為它指定您選擇的名稱。 例如,將資料夾命名為
customsubmitaction
。 -
導覽至新增的自訂提交動作目錄。
在您的
[AEMaaCS project directory]
內,瀏覽至下列路徑:/ui.apps/src/main/content/jcr_root/apps/<app-id>/customsubmitaction/
Important
:取代 <app-id> 以及您的實際應用程式ID。 -
建立新的組態檔。
在customsubmitaction
資料夾中,建立名為.content.xml
的新檔案。 -
開啟此檔案並貼上下列內容,將
[customsubmitaction]
取代為您提交動作的名稱code language-none <?xml version="1.0" encoding="UTF-8"?> <jcr:root xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:sling="http://sling.apache.org/jcr/sling/1.0" jcr:description="[customsubmitaction]" jcr:primaryType="sling:Folder" guideComponentType="fd/af/components/guidesubmittype" guideDataModel="basic,xfa,xsd" submitService="[customsubmitaction]"/>
例如,將
[customsubmitaction]
取代為您自訂的提交動作名稱Custom Submit Action
。note note NOTE 記住[customsubmitaction]的名稱,因為在撰寫表單時, Submit action
下拉式清單中會顯示相同的名稱。
在filter.xml
中包含新資料夾
-
導覽至[AEMaaCS專案目錄]中的
/ui.apps/src/main/content/META-INF/vault/filter.xml
檔案。 -
開啟檔案,並在結尾新增下列行:
code language-none <filter root="/apps/<app-id>/[customsubmitaction-folder]"/>
例如,新增下列程式碼行以在
filter.xml
檔案中新增customsubmitaction
資料夾:code language-none <filter root="/apps/wknd/customsubmitaction"/>
-
儲存變更。
針對新增的提交動作實作服務。
-
導覽至
[AEMaaCS project directory]
中的下列目錄:/core/src/main/java/com/<app-id>/core/service/
Important
:取代 <app-id> 以及您的實際應用程式ID。 -
建立新的Java檔案來實作新增提交動作的服務。 例如,將新的Java檔案新增為
CustomSubmitService.java
。 -
開啟此檔案,並新增自訂提交動作實施的程式碼。
例如,下列Java程式碼是OSGi服務,會記錄提交的資料來處理表單提交,並傳回狀態
OK
。 在CustomSubmitService.java
檔案中新增下列程式碼:code language-none package com.wknd.core.service; import com.adobe.aemds.guide.model.FormSubmitInfo; import com.adobe.aemds.guide.service.FormSubmitActionService; import java.util.HashMap; import java.util.Map; import org.osgi.service.component.annotations.Component; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Component( service = FormSubmitActionService.class, immediate = true ) public class CustomSubmitService implements FormSubmitActionService { private static final String serviceName = "Custom Submit Action"; private static Logger log = LoggerFactory.getLogger(CustomSubmitService.class); @Override public String getServiceName() { return serviceName; } @Override public Map<String, Object> submit(FormSubmitInfo formSubmitInfo) { String data = formSubmitInfo.getData(); log.info("Using custom submit action service, [data] --> " + data); Map<String, Object> result = new HashMap<>(); result.put("status", "OK"); return result; } }
-
儲存變更。
部署程式碼。
部署本機開發環境的程式碼
-
將AEM as a Cloud Service
[AEMaaCS project directory]
部署至您的本機開發環境,以在本機電腦上嘗試新的提交動作。 若要部署到您的本機開發環境:-
確認您的本機開發環境已啟動且執行中。 如果您尚未設定本機開發環境,請參閱為AEM Forms設定本機開發環境的指南。
-
開啟終端機視窗或命令提示。
-
導覽至
[AEMaaCS project directory]
。 -
執行以下命令:
code language-none mvn -PautoInstallPackage clean install
-
部署Cloud Service環境的程式碼
-
將AEM as a Cloud Service
[AEMaaCS project directory]
部署至您的Cloud Service環境。 若要部署至您的Cloud Service環境:-
提交您的變更:
新增自訂提交動作設定後,使用清除Git訊息提交您的變更。 (例如,「已新增新的自訂提交動作」)。
-
部署更新的程式碼:
透過現有的完整棧疊管道觸發程式碼的部署。 它會透過新的自訂提交動作支援,自動建置及部署更新的程式碼。
如果您尚未設定管道,請參閱上的指南如何設定AEM Formsas a Cloud Service的管道。
如何確認安裝?
成功建立專案後,自訂提交動作就會在製作表單時顯示在
Submit action
下拉式清單中。
您的環境現在已準備好在製作表單時使用新增的自訂提交動作。
-
使用新增的提交動作預覽最適化表單
-
登入您的AEM Formsas a Cloud Service執行個體。
-
移至 Forms > Forms和檔案。
-
選取最適化表單並按一下 編輯。 表單會在編輯模式中開啟。
-
開啟內容瀏覽器,然後選取最適化表單的「指引容器」元件。
-
按一下「指引容器」屬性
-
按一下「提交」標籤。
-
從 提交動作 下拉式清單中,選取提交動作。 例如,將提交動作選取為
Custom Submit Action
。 -
填寫表單並提交它。
成功提交表單後,您可以檢查 Adobe Experience Manager Web主控台組態,以驗證本機開發環境中自訂提交動作的動作。
-
前往
http://<host>:<port>/system/console/configMgr
。 -
瀏覽至
http://<host>:<port>/system/console/slinglog
的 Adobe Experience Manager Web Console記錄檔支援。 -
按一下
logs/error.log
選項。
-
開啟
error.log
檔案以檢視是否已附加資料。note note NOTE 若要在AEM as a Cloud Service環境中檢視錯誤記錄檔,您可以使用Splunk。