建立最適化Forms (核心元件)的自訂提交動作

提交動作可讓使用者為從表單擷取的資料選擇目的地,並定義要在表單提交上執行的其他功能。 AEM表單支援多個立即可用的提交動作(OOTB),例如傳送電子郵件或儲存資料至SharePoint或OneDrive。

您也可以建立自訂提交動作,以新增現成可用的選項中未包含的功能。 例如,將表單資料與第三方應用程式整合,或根據使用者輸入觸發個人化SMS通知。

必要條件

開始建立Adaptive Forms的第一個自訂提交動作之前,請確定您具備下列條件:

  • 純文字編輯器(IDE):雖然任何純文字編輯器都可以運作,但Microsoft Visual Studio Code之類的整合式開發環境(IDE)可提供進階功能,讓編輯更輕鬆。

  • Git:管理程式碼變更需要此版本控制系統。 如果您尚未安裝,請從https://git-scm.com下載。

建立您的第一個自訂表單提交動作

下圖說明為最適化表單建立自訂提交動作的步驟:

自訂提交動作工作流程 {width="50%,"}

複製AEM as a Cloud Service Git存放庫。

  1. 開啟命令列,並選擇要儲存AEM as a Cloud Service存放庫的目錄,例如/cloud-service-repository/

  2. 執行以下命令以複製存放庫:

    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>

    Archetype屬性

    在本指南中,我們將此資料夾稱為[AEMaaCS project directory]

新增提交動作

  1. 在編輯器中開啟存放庫資料夾。

    克隆的存放庫

  2. 導覽至[AEMaaCS project directory]中的下列目錄:

    code language-none
    /ui.apps/src/main/content/jcr_root/apps/<app-id>/
    

    重要:將<app-id>取代為您的實際應用程式識別碼。

  3. 為您自訂提交動作建立新資料夾,並為它指定您選擇的名稱。 例如,將資料夾命名為customsubmitaction

    建立自訂提交動作資料夾

  4. 導覽至新增的自訂提交動作目錄。

    在您的[AEMaaCS project directory]內,瀏覽至下列路徑:

    /ui.apps/src/main/content/jcr_root/apps/<app-id>/customsubmitaction/

    Important:取代 <app-id> 以及您的實際應用程式ID。

  5. 建立新的組態檔。
    customsubmitaction資料夾中,建立名為.content.xml的新檔案。

    建立設定檔

  6. 開啟此檔案並貼上下列內容,將[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 ​中包含新資料夾

  1. 導覽至[AEMaaCS專案目錄]中的/ui.apps/src/main/content/META-INF/vault/filter.xml檔案。

  2. 開啟檔案,並在結尾新增下列行:

    code language-none
    <filter root="/apps/<app-id>/[customsubmitaction-folder]"/>
    

    例如,新增下列程式碼行以在filter.xml檔案中新增customsubmitaction資料夾:

    code language-none
    <filter root="/apps/wknd/customsubmitaction"/>
    

    在filter.xml中新增建立的資料夾

  3. 儲存變更。

針對新增的提交動作實作服務。

  1. 導覽至[AEMaaCS project directory]中的下列目錄:
    /core/src/main/java/com/<app-id>/core/service/
    Important:取代 <app-id> 以及您的實際應用程式ID。

  2. 建立新的Java檔案來實作新增提交動作的服務。 例如,將新的Java檔案新增為CustomSubmitService.java

    自訂提交動作資料夾

  3. 開啟此檔案,並新增自訂提交動作實施的程式碼。

    例如,下列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;
         }
        }
    

    自訂提交動作服務

  4. 儲存變更。

部署程式碼。

部署本機開發環境的程式碼

  • 將AEM as a Cloud Service [AEMaaCS project directory]部署至您的本機開發環境,以在本機電腦上嘗試新的提交動作。 若要部署到您的本機開發環境:

    1. 確認您的本機開發環境已啟動且執行中。 如果您尚未設定本機開發環境,請參閱為AEM Forms設定本機開發環境的指南。

    2. 開啟終端機視窗或命令提示。

    3. 導覽至[AEMaaCS project directory]

    4. 執行以下命令:

      code language-none
      mvn -PautoInstallPackage clean install
      

      本機部署

部署Cloud Service環境的程式碼

  • 將AEM as a Cloud Service [AEMaaCS project directory]部署至您的Cloud Service環境。 若要部署至您的Cloud Service環境:

    1. 提交您的變更:

      新增自訂提交動作設定後,使用清除Git訊息提交您的變更。 (例如,「已新增新的自訂提交動作」)。

    2. 部署更新的程式碼:

      透過現有的完整棧疊管道觸發程式碼的部署。 它會透過新的自訂提交動作支援,自動建置及部署更新的程式碼。

      如果您尚未設定管道,請參閱上的指南如何設定AEM Formsas a Cloud Service的管道

      雲端部署

      如何確認安裝?

      成功建立專案後,自訂提交動作就會在製作表單時顯示在Submit action下拉式清單中。

      自訂提交動作下拉式清單

    您的環境現在已準備好在製作表單時使用新增的自訂提交動作。

使用新增的提交動作預覽最適化表單

  1. 登入您的AEM Formsas a Cloud Service執行個體。

  2. 移至​ Forms > Forms和檔案

    Forms和檔案

  3. 選取最適化表單並按一下​ 編輯。 表單會在編輯模式中開啟。

    編輯表單

  4. 開啟內容瀏覽器,然後選取最適化表單的「指引容器」元件。

  5. 按一下「指引容器」屬性 指引屬性 圖示。此時會開啟「最適化表單容器」對話框。

  6. 按一下「提交」標籤。

  7. 從​ 提交動作 ​下拉式清單中,選取提交動作。 例如,將提交動作選取為Custom Submit Action

    自訂提交表單

  8. 填寫表單並提交它。

    提交表單

    感謝訊息

    成功提交表單後,您可以檢查​ Adobe Experience Manager Web主控台組態,以驗證本機開發環境中自訂提交動作的動作。

  9. 前往 http://<host>:<port>/system/console/configMgr

  10. 瀏覽至http://<host>:<port>/system/console/slinglog的​ Adobe Experience Manager Web Console記錄檔支援

    ConfigMgr

  11. 按一下logs/error.log選項。
    開啟error.log檔案

  12. 開啟error.log檔案以檢視是否已附加資料。

    error.log檔案

    note note
    NOTE
    若要在AEM as a Cloud Service環境中檢視錯誤記錄檔,您可以使用Splunk。

相關文章

recommendation-more-help
fbcff2a9-b6fe-4574-b04a-21e75df764ab