Progettazione di uno schema JSON per un modulo adattivo creating-adaptive-forms-using-json-schema
L’Adobe consiglia di utilizzare l’acquisizione dati moderna ed estensibile Componenti coreper creazione di un nuovo Forms adattivoo aggiunta di Forms adattivo alle pagine AEM Sites. Questi componenti rappresentano un progresso significativo nella creazione di Forms adattivi, garantendo esperienze utente straordinarie. Questo articolo descrive un approccio precedente all’authoring di Forms adattivi utilizzando i componenti di base.
Prerequisiti prerequisites
Per creare un modulo adattivo utilizzando uno schema JSON come modello di modulo è necessario conoscere a fondo lo schema JSON. Si consiglia di leggere attentamente il seguente contenuto prima di questo articolo.
Utilizzo di uno schema JSON come modello di modulo using-a-json-schema-as-form-model
I moduli Adobe Experience Manager supportano la creazione di un modulo adattivo utilizzando uno schema JSON esistente come modello di modulo. Questo schema JSON rappresenta la struttura in cui i dati vengono prodotti o utilizzati dal sistema back-end dell’organizzazione. Lo schema JSON utilizzato deve essere conforme a specifiche v4.
Le funzioni chiave dell’utilizzo di uno schema JSON sono:
- La struttura del JSON viene visualizzata come struttura nella scheda Content Finder nella modalità di authoring di un modulo adattivo. Puoi trascinare e aggiungere un elemento dalla gerarchia JSON al modulo adattivo.
- Puoi precompilare il modulo utilizzando un JSON conforme allo schema associato.
- All’invio, i dati immessi dall’utente vengono inviati come JSON, in linea con lo schema associato.
Uno schema JSON è costituito da tipi di elementi semplici e complessi. Gli elementi dispongono di attributi che aggiungono regole all’elemento. Quando questi elementi e attributi vengono trascinati in un modulo adattivo, vengono mappati automaticamente al corrispondente componente Modulo adattivo.
La mappatura degli elementi JSON con i componenti del modulo adattivo è la seguente:
"birthDate": {
"type": "string",
"format": "date",
"pattern": "date{DD MMMM, YYYY}",
"aem:affKeyword": [
"DOB",
"Date of Birth"
],
"description": "Date of birth in DD MMMM, YYYY",
"aem:afProperties": {
"displayPictureClause": "date{DD MMMM, YYYY}",
"displayPatternType": "date{DD MMMM, YYYY}",
"validationPatternType": "date{DD MMMM, YYYY}",
"validatePictureClause": "date{DD MMMM, YYYY}",
"validatePictureClauseMessage": "Date must be in DD MMMM, YYYY format."
}
Proprietà comuni dello schema common-schema-properties
Il modulo adattivo utilizza le informazioni disponibili nello schema JSON per mappare ogni campo generato. In particolare:
- Il
title
funge da etichetta per i componenti Modulo adattivo. - Il
description
viene impostata come descrizione lunga per un componente Modulo adattivo. - Il
default
funge da valore iniziale di un campo Modulo adattivo. - Il
maxLength
la proprietà è impostata comemaxlength
attributo del componente campo di testo. - Il
minimum
,maximum
,exclusiveMinimum
, eexclusiveMaximum
Le proprietà vengono utilizzate per il componente Casella numerica. - Per supportare l'intervallo per
DatePicker component
proprietà aggiuntive dello schema JSONminDate
emaxDate
vengono fornite. - Il
minItems
emaxItems
Le proprietà vengono utilizzate per limitare il numero di elementi/campi che possono essere aggiunti o rimossi da un componente del pannello. - Il
readOnly
imposta la proprietàreadonly
di un componente Modulo adattivo. - Il
required
La proprietà contrassegna il campo Modulo adattivo come obbligatorio, mentre nel pannello (dove tipo è oggetto), i dati JSON finali inviati contengono campi con valore vuoto corrispondente a tale oggetto. - Il
pattern
viene impostata come pattern di convalida (espressione regolare) in Adaptive Form. - L’estensione del file di schema JSON deve essere mantenuta .schema.json. Ad esempio: <filename>.schema.json.
Schema JSON di esempio sample-json-schema
Di seguito è riportato un esempio di schema JSON.
{
"$schema": "https://json-schema.org/draft-04/schema#",
"definitions": {
"employee": {
"type": "object",
"properties": {
"userName": {
"type": "string"
},
"dateOfBirth": {
"type": "string",
"format": "date"
},
"email": {
"type": "string",
"format": "email"
},
"language": {
"type": "string"
},
"personalDetails": {
"$ref": "#/definitions/personalDetails"
},
"projectDetails": {
"$ref": "#/definitions/projectDetails"
}
},
"required": [
"userName",
"dateOfBirth",
"language"
]
},
"personalDetails": {
"type": "object",
"properties": {
"GeneralDetails": {
"$ref": "#/definitions/GeneralDetails"
},
"Family": {
"$ref": "#/definitions/Family"
},
"Income": {
"$ref": "#/definitions/Income"
}
}
},
"projectDetails": {
"type": "array",
"items": {
"properties": {
"name": {
"type": "string"
},
"age": {
"type": "number"
},
"projects": {
"$ref": "#/definitions/projects"
}
}
},
"minItems": 1,
"maxItems": 4
},
"projects": {
"type": "array",
"items": {
"properties": {
"name": {
"type": "string"
},
"age": {
"type": "number"
},
"projectsAdditional": {
"$ref": "#/definitions/projectsAdditional"
}
}
},
"minItems": 1,
"maxItems": 4
},
"projectsAdditional": {
"type": "array",
"items": {
"properties": {
"Additional_name": {
"type": "string"
},
"Additional_areacode": {
"type": "number"
}
}
},
"minItems": 1,
"maxItems": 4
},
"GeneralDetails": {
"type": "object",
"properties": {
"age": {
"type": "number"
},
"married": {
"type": "boolean"
},
"phone": {
"type": "number",
"aem:afProperties": {
"sling:resourceType": "/libs/fd/af/components/guidetelephone",
"guideNodeClass": "guideTelephone"
}
},
"address": {
"type": "string"
}
}
},
"Family": {
"type": "object",
"properties": {
"spouse": {
"$ref": "#/definitions/spouse"
},
"kids": {
"$ref": "#/definitions/kids"
}
}
},
"Income": {
"type": "object",
"properties": {
"monthly": {
"type": "number"
},
"yearly": {
"type": "number"
}
}
},
"spouse": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"Income": {
"$ref": "#/definitions/Income"
}
}
},
"kids": {
"type": "array",
"items": {
"properties": {
"name": {
"type": "string"
},
"age": {
"type": "number"
}
}
},
"minItems": 1,
"maxItems": 4
}
},
"type": "object",
"properties": {
"employee": {
"$ref": "#/definitions/employee"
}
}
}
Definizioni di schema riutilizzabili reusable-schema-definitions
Le chiavi di definizione vengono utilizzate per identificare gli schemi riutilizzabili. Per creare frammenti vengono utilizzate le definizioni di schema riutilizzabili. Di seguito è riportato un esempio di schema JSON con definizioni:
{
"$schema": "https://json-schema.org/draft-04/schema#",
"definitions": {
"address": {
"type": "object",
"properties": {
"street_address": { "type": "string" },
"city": { "type": "string" },
"state": { "type": "string" }
},
"required": ["street_address", "city", "state"]
}
},
"type": "object",
"properties": {
"billing_address": { "$ref": "#/definitions/address" },
"shipping_address": { "$ref": "#/definitions/address" }
}
}
L'esempio precedente definisce un record cliente, in cui ogni cliente ha sia un indirizzo di spedizione che un indirizzo di fatturazione. La struttura di entrambi gli indirizzi è la stessa: gli indirizzi hanno un indirizzo stradale, una città e uno stato, quindi è consigliabile non duplicare gli indirizzi. Inoltre, agevola l’aggiunta e l’eliminazione dei campi per eventuali modifiche future.
Preconfigurazione dei campi nella definizione dello schema JSON pre-configuring-fields-in-json-schema-definition
È possibile utilizzare aem:afProperties per preconfigurare il campo Schema JSON da mappare a un componente modulo adattivo personalizzato. Di seguito è riportato un esempio:
{
"properties": {
"sizeInMB": {
"type": "integer",
"minimum": 16,
"maximum": 512,
"aem:afProperties" : {
"sling:resourceType" : "/apps/fd/af/components/guideTextBox",
"guideNodeClass" : "guideTextBox"
}
}
},
"required": [ "sizeInMB" ],
"additionalProperties": false
}
Limitare valori accettabili per un componente Modulo adattivo limit-acceptable-values-for-an-adaptive-form-component
Per limitare i valori accettabili per un componente Modulo adattivo, puoi aggiungere le seguenti restrizioni agli elementi dello schema JSON:
Abilita dati conformi allo schema enablig-schema-compliant-data
Per abilitare tutti i Forms adattivi basati su schema JSON a generare dati conformi allo schema al momento dell’invio del modulo, effettua le seguenti operazioni:
- Vai alla console web di Experience Manager all’indirizzo
https://server:host/system/console/configMgr
. - Individua Configurazione del canale web per la comunicazione di moduli adattivi e interattivi.
- Seleziona per aprire la configurazione in modalità di modifica.
- Seleziona la Genera dati conformi allo schema casella di controllo.
- Salva le impostazioni.
Costrutti non supportati non-supported-constructs
Forms adattivo non supporta i seguenti costrutti dello schema JSON:
- Tipo nullo
- tipi di unione, come eventuali, e
- Uno di, uno di, tutti e NON
- Sono supportati solo array omogenei. Pertanto, il vincolo items deve essere un oggetto e non un array.
Domande frequenti frequently-asked-questions
Perché non è possibile trascinare singoli elementi di una sottomaschera (struttura generata da qualsiasi tipo complesso) per sottomaschere ripetibili (i valori minOccours o maxOccurs sono maggiori di 1)?
In una sottomaschera ripetibile, è necessario utilizzare la sottomaschera completa. Se desideri solo campi selettivi, utilizza l’intera struttura ed elimina quelli indesiderati.
In Content Finder ho una struttura lunga e complessa. Come posso trovare un elemento specifico?
Sono disponibili due opzioni:
- Scorri nella struttura ad albero
- Utilizzare la casella di ricerca per trovare un elemento
Quale deve essere l’estensione del file di schema JSON?
L’estensione del file dello schema JSON deve essere .schema.json. Ad esempio: <filename>.schema.json.
Consulta anche see-also
- Creare un modulo adattivo di AEM
- Aggiungere un modulo adattivo AEM a una pagina AEM Sites
- Applicare i temi a un modulo adattivo AEM
- Aggiungere componenti a un modulo adattivo di AEM
- Utilizzare il CAPTCHA in un modulo adattivo AEM
- Generare la versione PDF (DoR) di un modulo adattivo AEM
- Tradurre un modulo adattivo di AEM
- Abilitare Adobe Analytics per un modulo adattivo per tenere traccia dell’utilizzo dei moduli
- Collegare un modulo adattivo a Microsoft SharePoint
- Collegare un modulo adattivo a Microsoft Power Automate
- Collegare un modulo adattivo a Microsoft OneDrive
- Collegare un modulo adattivo all’archiviazione BLOB di Microsoft Azure
- Collegare un modulo adattivo a Salesforce
- Utilizzare Adobe Sign in un modulo adattivo di AEM
- Aggiungere una nuova lingua per un modulo adattivo
- Inviare dati del modulo adattivo a un database
- Inviare dati del modulo adattivo a un endpoint REST
- Inviare dati del modulo adattivo al flusso di lavoro di AEM
- Utilizzare il portale dei moduli per elencare moduli adattivi di AEM su un sito web di AEM