版本 | 文章連結 |
---|---|
AEM as a Cloud Service | 按一下這裡 |
AEM 6.5 | 本文章 |
表單資料模型編輯器提供直覺式使用者介面和工具,用於編輯和設定表單資料模型。 使用編輯器,您可以從表單資料模型中的相關資料來源新增及設定資料模型物件、屬性和服務。 此外,它可讓您在不使用資料來源的情況下建立資料模型物件和屬性,並在稍後將它們與各自的資料模型物件和屬性繫結。 您也可以產生和編輯資料模型物件屬性的範例資料,以便在預覽時用來預先填入最適化表單和互動式通訊。 您可以測試表單資料模型中設定的資料模型物件和服務,以確保其與資料來源正確整合。
如果您是初次使用Forms資料整合,但尚未設定資料來源或建立表單資料模型,請參閱下列主題:
請閱讀下文,瞭解您可以使用表單資料模型編輯器執行的各種任務和設定的詳細資訊。
您必須同時是兩者 fdm-author 和 forms-user 群組,以便能夠建立和使用表單資料模型。 請聯絡您的AEM管理員,以成為群組的成員。
如果您使用資料來源建立表單資料模型,您可以使用表單資料模型編輯器來新增資料模型物件和服務、設定其屬性、建立資料模型物件之間的關聯,以及測試表單資料模型和服務。
您可以從表單資料模型中的可用資料來源新增資料模型物件和服務。 當新增的資料模型物件出現在模型標籤中時,新增的服務出現在服務標籤中。
若要新增資料模型物件與服務:
登入AEM作者執行個體,導覽至 Forms >資料整合,然後開啟您要新增資料模型物件的表單資料模型。
在資料來源窗格中,展開資料來源以檢視可用的資料模型物件及服務。
選取您要新增至表單資料模型的資料模型物件和服務,然後點選 新增選取專案.
選取的資料模型物件與服務
如果您的Forms資料模型包含物件,而該物件是關聯式資料庫的保留關鍵字,則可能會導致資料新增、更新或擷取問題。 因此,請避免在表單資料模型中使用這類物件。
「模型」標籤會顯示所有資料模型物件及其加入至表單資料模型之屬性的圖形表示。 每個資料模型物件由表單資料模型中的方塊表示。
模型標籤顯示新增的資料模型物件
您可以按住並拖曳資料模型物件方塊,以便在內容區域中加以組織。 所有新增至表單資料模型的資料模型物件在「資料來源」窗格中都會呈現灰色。
「服務」標籤會列出新增的服務。
「服務」標籤顯示資料模型服務
除了資料模型物件和服務之外,OData服務中繼資料檔案還包括定義兩個資料模型物件之間關聯的導覽屬性。 如需詳細資訊,請參閱 使用OData服務的導覽屬性.
點選 儲存 以儲存表單模型物件。
您可以使用最適化表單規則,叫用您在表單資料模型的「服務」標籤中設定的服務。 設定的服務可在規則編輯器的「叫用服務」動作中使用。如需在調適型表單規則中使用這些服務的詳細資訊,請參閱叫用服務並設定規則值,位置在: 規則編輯器.
雖然您可以從已設定的資料來源新增資料模型物件,也可以建立沒有資料來源的資料模型物件或實體。 如果您尚未在表單資料模型中設定資料來源,此功能會特別實用。
若要在不使用資料來源的情況下建立資料模型物件:
登入AEM作者執行個體,導覽至 Forms >資料整合,然後開啟您要建立資料模型物件或實體的表單資料模型。
點選 建立實體.
在「建立資料模型」對話方塊中,指定資料模型物件的名稱,然後點選 新增. 資料模型物件會新增至表單資料模型。 請注意,新加入的資料模型物件並未繫結至資料來源,因此不具有下圖所示的任何屬性。
接下來,您可以在未繫結的資料模型物件中新增子屬性。
表單資料模型編輯器可讓您在資料模型物件中建立子屬性。 建立時的屬性未繫結至資料來源中的任何屬性。 您稍後可以將子屬性與包含資料模型物件中的另一個屬性繫結。
若要建立子屬性:
在表單資料模型中,選取資料模型物件並點選 建立子屬性.
在 建立子屬性 對話方塊中,為屬性指定名稱和資料型別 名稱 和 型別 欄位。 您可以選擇指定屬性的標題和說明。
如果屬性是計算屬性,則啟用Computed 。 計算屬性的值是根據規則或運算式來評估。 如需詳細資訊,請參閱 編輯屬性.
如果資料模型物件繫結至資料來源,則新增的子屬性會自動繫結至具有相同名稱和資料型別的父資料模型物件的屬性。
若要手動繫結子屬性與資料模型物件屬性,請點選「 」旁的瀏覽圖示 繫結參考 欄位。 此 選取物件 對話方塊會列出父資料模型物件的所有屬性。 選取要繫結的屬性,然後點選勾號圖示。 請注意,您只能選取與子屬性具有相同資料型別的屬性。
點選 完成 儲存子屬性並點選 儲存 以儲存表單資料模型。 子屬性現在已新增至資料模型物件。
建立資料模型物件和屬性後,您可以繼續根據表單資料模型建立最適化表單和互動式通訊。 稍後,當您有可用的資料來源且已設定資料來源時,即可將表單資料模型與資料來源繫結。 繫結將會在相關的自適應表單和互動式通訊中自動更新。 如需使用表單資料模型建立最適化表單和互動式通訊的詳細資訊,請參閱 使用表單資料模型.
當您想要與表單資料模型整合的資料來源可用時,您可以將其新增至表單資料模型,如中所述 更新資料來源. 然後,執行下列操作以繫結未繫結的資料模型物件和屬性:
在表單資料模型中,選取要與資料來源繫結的未繫結資料來源。
點選 編輯屬性.
在 編輯屬性 窗格,點選「 」旁的瀏覽圖示 繫結 欄位。 它會開啟 選取物件 此對話方塊會列出新增至表單資料模型中的資料來源。
展開資料來源樹狀結構並選取要繫結的資料模型物件,然後點選勾選圖示。
點選 完成 以儲存屬性,然後點選 儲存 以儲存表單資料模型。 資料模型物件現在與資料來源繫結。 請注意,資料模型物件不再標籤為「未繫結」。
若要讀取和寫入資料模型物件的資料,請執行以下動作來設定讀取和寫入服務:
選取資料模型物件頂端的核取方塊,以選取並點選 編輯屬性.
編輯屬性以設定資料模型物件的讀取和寫入服務
「編輯屬性」對話方塊開啟。
編輯內容對話方塊
除了資料模型物件和服務之外,OData服務中繼資料檔案還包括定義兩個資料模型物件之間關聯的導覽屬性。 當您將OData服務資料來源新增至表單資料模型時,表單資料模型中有一項服務可用於資料模型物件中的所有導覽屬性。 您可以使用此服務來讀取對應資料模型物件的導覽屬性。
如需使用服務的詳細資訊,請參閱 使用OData服務的導覽屬性.
切換 頂層物件 指定資料模型物件是否為頂層模型物件。
在表單資料模型中設定的資料模型物件可用於根據表單資料模型的最適化表單內容瀏覽器中的資料模型物件索引標籤。 當您在兩個資料模型物件之間新增關聯時,您與之關聯的資料模型物件會巢狀內嵌在從「資料模型物件」標籤中關聯的資料模型物件下。 如果巢狀資料模型是頂層物件,它也會單獨出現在「資料模型物件」標籤中。 因此,您會看到其中的兩個專案,一個在巢狀階層內,另一個在巢狀階層外,這可能會混淆表單作者。 若要讓關聯的資料模型物件只出現在巢狀階層中,請停用「最上層物件」屬性。
為選取的資料模型物件選取讀取和寫入服務。 服務的引數會出現。
為員工資料來源設定的讀寫服務
點選 將讀取服務引數設為 將引數繫結到使用者設定檔屬性、要求屬性或常值值 並指定繫結值。
點選 完成 若要儲存引數, 完成 以儲存屬性,然後 儲存 以儲存表單資料模型。
根據繫結值,將讀取服務引數繫結到使用者設定檔屬性、要求屬性或常值值。 值會作為引數傳遞至服務,以從資料來源擷取與指定值相關聯的詳細資料。
選取 常值 從 繫結至 下拉式功能表,並在 繫結值 欄位。 會從資料來源擷取與該值相關聯的詳細資料。 使用此選項可擷取與靜態值相關聯的詳細資料。
在此範例中,與關聯之詳細資訊 4367655678,作為 mobilenum
引數,會從資料來源擷取。 如果傳遞行動號碼引數的值,關聯的詳細資料可包含客戶名稱、客戶地址和城市等屬性。
選取 使用者設定檔屬性 從 繫結至 下拉式功能表,並在 繫結值 欄位。 根據屬性名稱,會從資料來源擷取登入AEM執行處理的使用者詳細資訊。
中指定的屬性名稱 繫結值 欄位必須包含完整的繫結路徑,直到使用者的屬性名稱為止。 開啟以下URL以存取CRXDE上的使用者詳細資訊:
https://[server-name]:[port]/crx/de/index.jsp#/home/users/
在此範例中,指定 profile.empid
在 繫結值 的欄位 grios
使用者。
此 id
引數接受 empid
使用者設定檔的屬性,並將其作為引數傳遞至讀取服務。 它會從Employee資料模型物件讀取並傳回關聯屬性的值, empid
與登入使用者相關聯。
使用請求屬性從資料來源擷取關聯的屬性。
選取 要求屬性 從 繫結至 下拉式功能表,並在 繫結值 欄位。
建立 覆蓋 用於head.jsp。 若要建立覆蓋,請開啟CRX DE並複製 https://<server-name>:<port number>/crx/de/index.jsp#/libs/fd/af/components/page2/afStaticTemplatePage/head.jsp
檔案到 https://<server-name>:<port number>/crx/de/index.jsp#/apps/fd/af/components/page2/afStaticTemplatePage/head.jsp
/libs/fd/af/components/page2/afStaticTemplatePage/head.jsp
/libs/fd/af/components/page2/aftemplatedpage/aftemplatedpage.jsp
設定 paramMap 要求屬性的。 例如,將下列程式碼加入apps資料夾的.jsp檔案中:
<%Map paraMap = new HashMap();
paraMap.put("<request_attribute>",request.getParameter("<request_attribute>"));
request.setAttribute("paramMap",paraMap);
例如,使用以下程式碼從資料來源擷取petid的值:
<%Map paraMap = new HashMap();
paraMap.put("petId",request.getParameter("petId"));
request.setAttribute("paramMap",paraMap);%>
系統會根據要求中指定的屬性名稱,從資料來源擷取詳細資料。
例如,將屬性指定為 petid=100
在中,會從資料來源擷取與屬性值相關的屬性。
通常,在資料來源中的資料模型物件之間會建立關聯。 關聯可以是一對一或一對多。 例如,可以有多個與員工相關聯的相依項。 它稱為一對多關聯,由以下內容描述 1:n
在連線相關資料模型物件的線上。 但是,如果關聯針對指定的員工ID傳回唯一員工名稱,則稱為一對一關聯。
當您將資料來源中的關聯資料模型物件新增至表單資料模型時,它們的關聯會保留並顯示為以箭頭線連線。 您可以在表單資料模型中跨不同資料來源的資料模型物件之間新增關聯。
JDBC資料來源中的預先定義關聯不會保留在表單資料模型中。 您必須手動建立。
若要新增關聯:
選取資料模型物件頂端的核取方塊,以選取並點選 新增關聯. 「新增關聯」對話方塊開啟。
除了資料模型物件和服務之外,OData服務中繼資料檔案還包括定義兩個資料模型物件之間關聯的導覽屬性。 在表單資料模型中新增關聯時,您可以使用這些導覽屬性。 如需詳細資訊,請參閱 使用OData服務的導覽屬性.
「新增關聯」對話方塊開啟。
新增關聯對話方塊
在「新增關聯」窗格中:
在以下範例中,「相依專案」資料模型物件之讀取服務的預設引數為 dependentid
.
相依物件讀取服務的預設引數相依於
不過,引數必須是關聯資料模型物件之間的共同屬性,在此範例中為 Employeeid
. 因此, Employeeid
引數必須繫結至 id
Employee資料模型物件的屬性,以從Dependents資料模型物件擷取關聯的相依專案詳細資料。
已更新引數和繫結
點選 完成 以儲存引數。
點選 完成 儲存關聯,然後 儲存 以儲存表單資料模型。
視需要重複這些步驟以建立更多關聯。
新增的關聯會顯示在資料模型物件方塊中,並包含指定的標題和連線相關資料模型物件的直線。
您可以選取關聯的核取方塊並點選,以編輯關聯 編輯關聯.
您可以編輯資料模型物件的屬性、其屬性,以及在表單資料模型中新增的服務。
若要編輯屬性:
選取表單資料模型中資料模型物件、屬性或服務旁的核取方塊。
點選 編輯屬性. 此 編輯屬性 所選模型物件、屬性或服務的窗格隨即開啟。
Get服務的「編輯內容」對話方塊
點選 完成 以儲存屬性,然後 儲存 以儲存表單資料模型。
計算屬性是根據規則或運算式計算其值的屬性。 您可以使用規則將計算屬性的值設定為常值字串、數字、數學運算式的結果或表單資料模型中其他屬性的值。
例如,您可以建立計算屬性 完整名稱 其值是串連現有 名字 和 姓氏 屬性。 若要這麼做:
以名稱建立新屬性 FullName
其資料型別為String。
啟用 已計算 然後點選 完成 以建立屬性。
隨即建立FullName運算屬性。 請注意屬性旁的圖示,以描繪運算屬性。
選取FullName屬性並點選 編輯規則. 規則編輯器視窗隨即開啟。
在規則編輯器視窗中,點選「 」 建立. A 設定值 規則視窗隨即開啟。
從選取選項下拉式清單中選取 數學運算式. 其他可用選項包括 表單資料模型物件 和 字串.
在數學運算式中,選取 名字 和 姓氏 分別在第一和第二物件中。 選取 加 作為運運算元。
點選 完成 然後點選 關閉 以關閉規則編輯器視窗。 規則看起來類似下列。
在表單資料模型上,點選 儲存. 運算屬性已設定。
在OData服務中,導覽屬性用來定義兩個資料模型物件之間的關聯。 這些屬性是在圖元型別或複雜型別上定義的。 例如,在下列從範例的中繼資料檔案擷取中 TripPin OData範例服務,個人實體包含三個導覽屬性 — Friends、BestFriend和Trips。
如需導覽屬性的詳細資訊,請參閱 OData檔案.
<edmx:Edmx xmlns:edmx="https://docs.oasis-open.org/odata/ns/edmx" Version="4.0">
<script/>
<edmx:DataServices>
<Schema xmlns="https://docs.oasis-open.org/odata/ns/edm" Namespace="Microsoft.OData.Service.Sample.TrippinInMemory.Models">
<EntityType Name="Person">
<Key>
<PropertyRef Name="UserName"/>
</Key>
<Property Name="UserName" Type="Edm.String" Nullable="false"/>
<Property Name="FirstName" Type="Edm.String" Nullable="false"/>
<Property Name="LastName" Type="Edm.String"/>
<Property Name="MiddleName" Type="Edm.String"/>
<Property Name="Gender" Type="Microsoft.OData.Service.Sample.TrippinInMemory.Models.PersonGender" Nullable="false"/>
<Property Name="Age" Type="Edm.Int64"/>
<Property Name="Emails" Type="Collection(Edm.String)"/>
<Property Name="AddressInfo" Type="Collection(Microsoft.OData.Service.Sample.TrippinInMemory.Models.Location)"/>
<Property Name="HomeAddress" Type="Microsoft.OData.Service.Sample.TrippinInMemory.Models.Location"/>
<Property Name="FavoriteFeature" Type="Microsoft.OData.Service.Sample.TrippinInMemory.Models.Feature" Nullable="false"/>
<Property Name="Features" Type="Collection(Microsoft.OData.Service.Sample.TrippinInMemory.Models.Feature)" Nullable="false"/>
<NavigationProperty Name="Friends" Type="Collection(Microsoft.OData.Service.Sample.TrippinInMemory.Models.Person)"/>
<NavigationProperty Name="BestFriend" Type="Microsoft.OData.Service.Sample.TrippinInMemory.Models.Person"/>
<NavigationProperty Name="Trips" Type="Collection(Microsoft.OData.Service.Sample.TrippinInMemory.Models.Trip)"/>
</EntityType>
當您在表單資料模型中設定OData服務時,實體容器中的所有導覽屬性都可透過表單資料模型中的服務使用。 在此TripPin OData服務範例中, Person
實體容器可使用其中一個 GET LINK
表單資料模型中的服務。
下列重點說明 GET LINK of Person /People
表單資料模型中的服務,此服務是三個導覽屬性的組合服務, Person
TripPin OData服務的實體。
新增 GET LINK
服務表單資料模型中的服務標籤,您可以編輯屬性以選擇服務中使用的輸出模型物件與導覽屬性。 例如,下列專案 GET LINK of Person /People
下列範例中的服務使用「運送航程」作為輸出模型物件,而瀏覽屬性則作為「運送航程」。
中的可用值 預設值 欄位屬於 導覽屬性名稱 引數取決於 傳回陣列? 切換按鈕。 當啟用時,它會顯示集合型別的導覽屬性。
在此範例中,您也可以將輸出模型物件選為Person ,並將導覽屬性引數選為Friends或BestFriend (取決於是否 傳回陣列? 啟用或停用)。
同樣地,您也可以選擇 GET LINK
在表單資料模型中新增關聯時,服務並設定其導覽屬性。 不過,若要能夠選取導覽屬性,請確定 繫結至欄位 設為 常值.
表單資料模型編輯器可讓您為表單資料模型中的所有資料模型物件屬性(包括計算屬性)產生範例資料。 這是一組隨機值,符合為每個屬性設定的資料型別。 您也可以編輯並儲存資料,即使您重新產生範例資料,資料仍會保留。
執行下列操作以產生和編輯範例資料:
開啟表單資料模型並點選 編輯範例資料. 它會在「編輯範例資料」視窗中產生並顯示範例資料。
在 編輯範例資料 視窗,視需要編輯資料,然後點選 儲存.
接下來,您可以使用範例資料,根據表單資料模型預先填寫及測試互動式通訊。 如需詳細資訊,請參閱 使用表單資料模型.
您的表單資料模型已設定,但在投入使用之前,您可能想要測試已設定的資料模型物件和服務是否如預期般運作。 若要測試資料模型物件與服務:
在表單資料模型中選取資料模型物件或服務,然後點選 測試模型物件 或 測試服務,依序輸入。
「測試表單資料模型」視窗隨即開啟。
在「測試表單資料模型」視窗中,從「輸入」窗格選取要測試的資料模型物件或服務。
在測試程式碼中指定引數值,然後點選 測試. 成功的測試會傳回「輸出」窗格中的輸出。
同樣地,您可以在表單資料模型中測試其他資料模型物件與服務。
表單資料模型會在叫用DermisBridge API時(根據表單資料模型中提供的驗證條件),驗證作為輸入所收到的資料。 驗證是根據 ValidationOptions
在用於叫用API的查詢物件中設定的旗標。
此旗標可設為下列任一值:
若未設定的值 ValidationOptions
標幟, 基本 對輸入資料執行驗證。
以下是設定驗證標幟的範例 完整:
operationOptions.setValidationOptions(ValidationOptions.FULL);
您在輸入資料中為屬性提供的值必須與在中繼資料檔案中為屬性定義的資料型別相符。
如果值不符合為屬性定義的資料型別,DermisBridge API會顯示例外狀況,不論 ValidationOptions
標幟。 如果記錄層級設定為Debug,則會將錯誤記錄到 error.log 檔案。
表單資料模型會根據資料型別限制清單來驗證輸入資料。 輸入資料的限制清單可能會因資料來源而異。
下表根據資料來源列出輸入資料的限制:
限制 | 說明 | 輸入資料來源 |
必要 | 如果為true,則引數必須包含在輸入資料中。 | Swagger、WSDL和資料庫 |
可為空 | 若為true,則可將輸入資料中的引數值設為Null。 | WSDL、Odata和資料庫 |
最大 | 指定數值的上限。 指定為上限的最大值也可以指派給輸入資料中的引數。 | Swagger和WSDL |
最小值 | 指定數值的下限。 指定為下限的最小值也可以指定給輸入資料中的引數。 | Swagger和WSDL |
exclusiveMax | 指定數值的上限。 指定為上限的最大值不得指派給輸入資料中的引數。 | Swagger和WSDL |
exclusiveMinimum | 指定數值的下限。 不得將指定為下限的最小值指派給輸入資料中的引數。 | Swagger和WSDL |
minlength | 指定字串中所含字元數的下限。 指定為下限的最小值也可以指定給輸入資料中的引數。 | Swagger和WSDL |
maxLength | 指定字串中所含字元數的上限。 指定為上限的最大值也可以指派給輸入資料中的引數。 | Swagger、WSDL、Odata和資料庫 |
圖樣 | 指定固定的字元順序。 只有在字元符合指定的模式時,才能成功驗證輸入字串。 | Swagger |
minItems | 指定陣列中專案的最小數目。 指定為下限的最小值也可以指定給輸入資料中的引數。 | Swagger和WSDL |
maxItems | 指定陣列中專案的最大數量。 指定為上限的最大值也可以指派給輸入資料中的引數。 | Swagger和WSDL |
uniqueItems | 如果為true,則陣列的所有元素在輸入資料中必須是唯一的。 | Swagger |
列舉(字串) |
將輸入資料中的引數值限製為固定的字串值集。 它必須是至少有一個元素的陣列,其中每個元素都是唯一的。 | Swagger、WSDL和Odata |
列舉(數字) |
將輸入資料中的引數值限製為固定的數值集。 它必須是至少有一個元素的陣列,其中每個元素都是唯一的。 | WSDL |
在此範例中,輸入資料會根據Swagger檔案中定義的最大值、最小值和必要限制進行驗證。 只有在存在訂單ID且其值介於1到10之間時,輸入資料才會符合驗證准則。
parameters: [
{
name: "orderId",
in: "path",
description: "ID of pet that needs to be fetched",
required: true,
type: "integer",
maximum: 10,
minimum: 1,
format: "int64"
}
]
如果輸入資料不符合驗證准則,則會顯示例外。 如果記錄層級設定為 偵錯,錯誤會記錄到 error.log 檔案。 例如,
21.01.2019 17:26:37.411 *ERROR* com.adobe.aem.dermis.core.validation.JsonSchemaValidator {"errorCode":"AEM-FDM-001-044","errorMessage":"Input validations failed during operation execution.","violations":{"/orderId":["numeric instance is greater than the required maximum (maximum: 10, found: 16)"]}}
您有一個工作表單資料模型,現在可用於調適型表單和互動式通訊工作流程。 如需詳細資訊,請參閱 使用表單資料模型.