Kom igång med indataformulär gs-ac-forms
När du skapar eller utökar ett schema måste du skapa eller ändra de associerade indataformulären för att göra ändringarna synliga för slutanvändarna.
Med ett inmatningsformulär kan du redigera en instans som är associerad med ett dataschema från Adobe Campaign klientkonsol. Formuläret identifieras av dess namn och namnutrymme.
Identifieringsnyckeln för ett formulär är en sträng som består av namnutrymmet och namnet avgränsat med ett kolon, till exempel: "cus:contact".
Redigera inmatningsformulär
Skapa och konfigurera indataformulär från mappen Administration> Configuration >Input forms i klientkonsolen:
I redigeringszonen kan du ange XML-innehållet i indataformuläret:
Förhandsgranskningen genererar en visning av indataformuläret:
Formulärstruktur
Beskrivningen av ett formulär är ett strukturerat XML-dokument som observerar grammatiken i formulärschemat xtk:form.
XML-dokumentet i indataformuläret måste innehålla rotelementet <form>
med attributen name och namespace för att fylla i formulärnamnet och namnutrymmet.
<form name="form_name" namespace="name_space">
...
</form>
Som standard är ett formulär kopplat till dataschemat med samma namn och namnutrymme. Om du vill associera ett formulär med ett annat namn anger du entity-schema -attributet för elementet <form>
till schemanyckelns namn. Om du vill visa strukturen för ett inmatningsformulär kan du beskriva ett gränssnitt med exempelschemat "cus:mottagare":
<srcSchema name="recipient" namespace="cus">
<enumeration name="gender" basetype="byte">
<value name="unknown" label="Not specified" value="0"/>
<value name="male" label="Male" value="1"/>
<value name="female" label="Female" value="2"/>
</enumeration>
<element name="recipient">
<attribute name="email" type="string" length="80" label="Email" desc="E-mail address of recipient"/>
<attribute name="birthDate" type="datetime" label="Date"/>
<attribute name="gender" type="byte" label="Gender" enum="gender"/>
</element>
</srcSchema>
Indataformuläret baserat på exempelschemat:
<form name="recipient" namespace="cus">
<input xpath="@gender"/>
<input xpath="@birthDate"/>
<input xpath="@email"/>
</form>
Beskrivningen av redigeringskontrollerna startar från rotelementet <form>
. En redigeringskontroll har angetts i ett <input>
-element med attributet Path som innehåller sökvägen för fältet i dess schema.
Redigeringskontrollen anpassas automatiskt till motsvarande datatyp och använder den etikett som definierats i schemat.
<input>
:<input label="E-mail address" xpath="@name" />
Som standard visas varje fält på en rad och tar upp allt tillgängligt utrymme beroende på datatypen.
Alla formulärattribut visas i Campaign Classic v7-dokumentationen.
Formatering formatting
Layouten på kontrollerna ser ut som den layout som används i tabeller i HTML, med möjlighet att dela upp en kontroll i flera kolumner, sammanflätade element eller ange hur mycket utrymme som finns tillgängligt. Tänk på att du bara kan dela upp området efter proportioner med formatering. Du kan inte ange fasta dimensioner för ett objekt.
Så här visar du kontrollerna i exemplet ovan i två kolumner:
<form name="recipient" namespace="cus">
<container colcount="2">
<input xpath="@gender"/>
<input xpath="@birthDate"/>
<input xpath="@email"/>
</container>
</form>
Elementet <container>
med attributet colcount gör att du kan tvinga visningen av underordnade kontroller till två kolumner.
Attributet colspan i en kontroll utökar kontrollen med antalet kolumner som anges i värdet:
<form name="recipient" namespace="cus">
<container colcount="2">
<input xpath="@gender"/>
<input xpath="@birthDate"/>
<input xpath="@email" colspan="2"/>
</container>
</form>
Genom att fylla i attributet type="frame" lägger behållaren till en ram runt de underordnade kontrollerna med etiketten som finns i attributet label :
<form name="recipient" namespace="cus">
<container colcount="2" type="frame" label="General">
<input xpath="@gender"/>
<input xpath="@birthDate"/>
<input xpath="@email" colspan="2"/>
</container>
</form>
Ett <static>
-element kan användas för att formatera indataformuläret:
<form name="recipient" namespace="cus">
<static type="separator" colspan="2" label="General"/>
<input xpath="@gender"/>
<input xpath="@birthDate"/>
<input xpath="@email" colspan="2"/>
<static type="help" label="General information about recipient with date of birth, gender, and e-mail address." colspan="2"/>
</form>
Taggen <static>
med typen separator gör att du kan lägga till en avgränsare med en etikett i attributet label.
En hjälptext med hjälp av taggen <static>
med hjälptyp har lagts till. Innehållet i texten anges i attributet label.
Använd behållare containers
Använd behållare för att gruppera en uppsättning kontroller. De representeras av elementet <container>
. De användes ovan för att formatera kontroller över flera kolumner.
Med attributet xpath på en <container>
kan du förenkla referensen för underordnade kontroller. Referensen för kontroller är sedan relativ till den överordnade <container>
.
Exempel på en behållare utan "xpath":
<container colcount="2">
<input xpath="location/@zipCode"/>
<input xpath="location/@city"/>
</container>
Exempel med tillägget "xpath" i elementet "location":
<container colcount="2" xpath="location">
<input xpath="@zipCode"/>
<input xpath="@city"/>
</container>
Behållare används för att skapa komplexa kontroller med hjälp av en uppsättning fält som är formaterade på sidor.
Lägg till flikar (anteckningsbok) tab-container
Använd en anteckningsboksbehållare för att formatera data på sidor som är tillgängliga från flikar.
<container type="notebook">
<container colcount="2" label="General">
<input xpath="@gender"/>
<input xpath="@birthDate"/>
<input xpath="@email" colspan="2"/>
</container>
<container colcount="2" label="Location">
...
</container>
</container>
Huvudbehållaren definieras av attributet type="anteckningsbok". Tabbar deklareras i de underordnade behållarna och etiketten för flikarna fylls i från attributet label.
Lägg till attributet style="down" för att tvinga fram den lodräta placeringen av tabbetiketter under kontrollen. Det här attributet är valfritt. Standardvärdet är upp.
<container style="down" type="notebook"> ... </container>
Lägg till ikoner (ikonruta) icon-list
Använd den här behållaren för att visa ett lodrätt ikonfält där du kan välja vilka sidor som ska visas.
<container type="iconbox">
<container colcount="2" label="General" img="xtk:properties.png">
<input xpath="@gender"/>
<input xpath="@birthDate"/>
<input xpath="@email" colspan="2"/>
</container>
<container colcount="2" label="Location" img="nms:msgfolder.png">
...
</container>
</container>
Huvudbehållaren definieras av attributet type="iconbox" . De sidor som är associerade med ikonerna deklareras i de underordnade behållarna. Etiketten för ikonerna fylls i från attributet label.
Ikonen för en sida fylls i från attributet img="<image>"
, där <image>
är namnet på bilden som motsvarar dess nyckel som består av namnet och namnutrymmet (t.ex. "xtk:properties.png").
Bilderna är tillgängliga från noden Administration > Configuration > Images.
Dölj behållare (visibleGroup) visibility-container
Du kan dölja en uppsättning kontroller via ett dynamiskt villkor.
I det här exemplet visas synligheten för kontroller av värdet i fältet "Kön":
<container type="visibleGroup" visibleIf="@gender=1">
...
</container>
<container type="visibleGroup" visibleIf="@gender=2">
...
</container>
En synlighetsbehållare definieras av attributet type="visibleGroup". Attributet visibleIf innehåller synlighetsvillkoret.
Exempel på villkorssyntax:
- visibleIf="@email='peter.martinezATneolane.net'": testar likhet för strängtypsdata. Jämförelsevärdet måste anges inom citattecken.
- visibleIf="@kön >= 1 och @kön != 2": villkor för ett numeriskt värde.
- visibleIf="@boolean1=true eller @boolean2=false": testa i booleska fält.
Villkorlig visning (enabledGroup) enabling-container
Med den här behållaren kan du aktivera eller inaktivera en uppsättning data från ett dynamiskt villkor. Om du inaktiverar en kontroll kan du inte redigera den. I följande exempel visas aktiveringen av kontroller från värdet i fältet "Kön":
<container type="enabledGroup" enabledIf="@gender=1">
...
</container>
<container type="enabledGroup" enabledIf="@gender=2">
...
</container>
En aktiveringsbehållare definieras av attributet type="enabledGroup" . Attributet enabledIf innehåller aktiveringsvillkoret.
Redigera en länk editing-a-link
Kom ihåg att en länk deklareras i dataschemat enligt följande:
<element label="Company" name="company" target="cus:company" type="link"/>
Redigeringskontrollen för länken i indataformuläret är följande:
<input xpath="company"/>
Målmarkeringen är tillgänglig via redigeringsfältet. Posten assisteras av typen ahead så att ett målelement enkelt kan hittas från de första tecknen som anges. Sökningen baseras sedan på beräkningssträngen som definierats i målschemat. Om schemat inte finns efter valideringen i kontrollen visas ett bekräftelsemeddelande om att målet har skapats direkt. Bekräftelsen skapar en ny post i måltabellen och kopplar den till länken.
En nedrullningsbar lista används för att välja ett målelement från listan med poster som redan har skapats.
Ikonen Modify the link (mapp) startar ett urvalsformulär med listan över målelement och en filterzon.
Ikonen Edit link (förstorare) startar redigeringsformuläret för det länkade elementet. Formuläret som används dras som standard av nyckeln för målschemat. Med attributet form kan du tvinga fram namnet på redigeringsformuläret (t.ex. "cus:company2").
Du kan begränsa valet av målelement genom att lägga till elementet <sysfilter>
från länkdefinitionen i indataformuläret:
<input xpath="company">
<sysFilter>
<condition expr="[location/@city] = 'Newton"/>
</sysFilter>
</input>
Du kan även sortera listan med elementet <orderby>
:
<input xpath="company">
<orderBy>
<node expr="[location/@zipCode]"/>
</orderBy>
</input>
Kontrollegenskaper control-properties
-
noAutoComplete: inaktiverar type-ahead (med värdet true)
-
createMode: skapar länken direkt om den inte finns. Möjliga värden är:
- ingen: inaktiverar skapande. Ett felmeddelande visas om länken inte finns
- textbunden: skapar länken med innehållet i redigeringsfältet
- utgåva: visar redigeringsformuläret på länken. När formuläret valideras sparas data (standardläge)
-
noZoom: inget redigeringsformulär finns på länken (med värdet "true")
-
form: överför redigeringsformuläret för målelementet
Lägg till en lista med länkar (obunden) list-of-links
En länk som anges i dataschemat som ett samlingselement (unbound="true") måste gå igenom en lista för att alla element som är associerade med den ska kunna visas.
Principen består i att visa listan med länkade element med optimerad datainläsning (nedladdning per datauppsättning, körning av listan endast om den är synlig).
Exempel på en samlingslänk i ett schema:
<element label="Events" name="rcpEvent" target="cus:event" type="link" unbound="true">
...
</element>
Listan i indataformuläret:
<input xpath="rcpEvent" type="linklist">
<input xpath="@label"/>
<input xpath="@date"/>
</input>
Listkontrollen definieras av attributet type="linklist" . Listsökvägen måste referera till samlingslänken.
Kolumnerna deklareras via elementen <input>
i listan. Attributet xpath refererar till sökvägen för fältet i målschemat.
Ett verktygsfält med en etikett (som definieras på länken i schemat) placeras automatiskt ovanför listan.
Listan kan filtreras med knappen Filters och konfigureras för att lägga till och sortera kolumner.
Med knapparna Add och Delete kan du lägga till och ta bort samlingselement på länken. Om du lägger till ett element startas målschemats redigeringsformulär som standard.
Knappen Detail läggs automatiskt till när attributet zoom="true" har slutförts i taggen <input>
i listan: du kan starta redigeringsformuläret för den markerade raden.
Filtrering och sortering kan användas när listan läses in:
<input xpath="rcpEvent" type="linklist">
<input xpath="@label"/>
<input xpath="@date"/>
<sysFilter>
<condition expr="@type = 1"/>
</sysFilter>
<orderBy>
<node expr="@date" sortDesc="true"/>
</orderBy>
</input>
Definiera en relationstabell relationship-table
Med en relationstabell kan du länka två tabeller med N-N-kardinalitet. Relationstabellen innehåller bara länkarna till de två tabellerna.
Om du lägger till ett element i listan bör du därför kunna fylla i en lista från en av de två länkarna i relationstabellen.
Exempel på en relationstabell i ett schema:
<srcSchema name="subscription" namespace="cus">
<element name="recipient" type="link" target="cus:recipient" label="Recipient"/>
<element name="service" type="link" target="cus:service" label="Subscription service"/>
</srcSchema>
Vi börjar t.ex. med indataformen för "cus:mottagare"-schemat. Listan måste visa associationer med abonnemang på tjänster och du måste kunna lägga till en prenumeration genom att välja en befintlig tjänst.
<input type="linklist" xpath="subscription" xpathChoiceTarget="service" xpathEditTarget="service" zoom="true">
<input xpath="recipient"/>
<input xpath="service"/>
</input>
Med attributet xpathChoiceTarget kan du starta ett urvalsformulär från den angivna länken. Om du skapar relationstabellposten uppdateras länken till den aktuella mottagaren och den valda tjänsten automatiskt.
Listegenskaper list-properties
- noToolbar: döljer verktygsfältet (med värdet "true")
- toolbarCaption: överför verktygsfältsetiketten
- toolbarAlign: ändrar den lodräta eller vågräta geometrin för verktygsfältet (möjliga värden: "vertical"|"horizontal")
- img: visar bilden som är associerad med listan
- form: överför redigeringsformuläret för målelementet
- zoom: lägger till knappen Zoom för att redigera målelementet
- xpathEditTarget: anger redigering för den angivna länken
- xpathChoiceTarget: dessutom startar urvalsformuläret på den angivna länken
Lägga till minneslistkontroller memory-list-controls
Med minneslistor kan du redigera samlingselementen med förinläsning av listdata. Listan kan inte filtreras eller konfigureras.
De här listorna används för XML-mappade samlingselement eller på länkar med låg volym.
Lägga till en kolumnlista column-list
Den här kontrollen visar en redigerbar kolumnlista med ett verktygsfält som innehåller knapparna Lägg till och Ta bort.
<input xpath="rcpEvent" type="list">
<input xpath="@label"/>
<input xpath="@date"/>
</input>
Listkontrollen måste fyllas i med attributet type="list" och sökvägen för listan måste referera till samlingselementet.
Kolumnerna deklareras i de underordnade <input>
-taggarna i listan. Kolumnetikett och kolumnstorlek kan tvingas med attributen label och colSize.
Verktygsfältsknapparna kan justeras vågrätt:
<input nolabel="true" toolbarCaption="List of events" type="list" xpath="rcpEvent" zoom="true">
<input xpath="@label"/>
<input xpath="@date"/>
</input>
Attributet toolbarCaption tvingar verktygsfältets vågräta justering och anger titeln ovanför listan.
Aktivera zoomning i en lista zoom-in-a-list
Du kan infoga och redigera data i en lista i ett separat redigeringsformulär.
<input nolabel="true" toolbarCaption="List of events" type="list" xpath="rcpEvent" zoom="true" zoomOnAdd="true">
<input xpath="@label"/>
<input xpath="@date"/>
<form colcount="2" label="Event">
<input xpath="@label"/>
<input xpath="@date"/>
</form>
</input>
Redigeringsformuläret har slutförts från elementet <form>
under listdefinitionen. Dess struktur är identisk med strukturen för ett indataformulär. Knappen Detail läggs till automatiskt när attributet zoom="true" har slutförts i taggen <input>
i listan. Med det här attributet kan du starta redigeringsformuläret för den markerade raden.
Listegenskaper list-properties-1
- noToolbar: döljer verktygsfältet (med värdet "true")
- toolbarCaption: överför verktygsfältsetiketten
- toolbarAlign: ändrar verktygsfältets placering (möjliga värden: "vertical"|"horizontal")
- img: visar bilden som är associerad med listan
- form: överför redigeringsformuläret för målelementet
- zoom: lägger till knappen Zoom för att redigera målelementet
- zoomOnAdd: startar redigeringsformuläret vid tillägg
- xpathChoiceTarget: dessutom startar urvalsformuläret på den angivna länken
Lägg till icke-redigerbara fält non-editable-fields
Om du vill visa ett fält och förhindra att det redigeras använder du taggen <value>
eller slutför attributet readOnly="true" för taggen <input>
.
Exempel på fältet"Kön":
<value value="@gender"/>
<input xpath="@gender" readOnly="true"/>
Lägg till alternativknapp radio-button
Med en alternativknapp kan du välja mellan flera alternativ. Taggarna <input>
används för att lista möjliga alternativ, och attributet checkedValue anger det värde som är associerat med valet.
Exempel på fältet"Kön":
<input type="RadioButton" xpath="@gender" checkedValue="0" label="Choice 1"/>
<input type="RadioButton" xpath="@gender" checkedValue="1" label="Choice 2"/>
<input type="RadioButton" xpath="@gender" checkedValue="2" label="Choice 3"/>
Lägg till en kryssruta checkbox
En kryssruta återspeglar ett booleskt läge (markerat eller inte). Som standard används den här kontrollen av fälten "Boolean" (true/false). En variabel med standardvärdet 0 eller 1 kan kopplas till den här knappen. Det här värdet kan överladdas via attributen checkValue.
<input xpath="@boolean1"/>
<input xpath="@field1" type="checkbox" checkedValue="Y"/>
Redigera navigeringshierarki navigation-hierarchy-edit
Den här kontrollen skapar ett träd i en uppsättning fält som ska redigeras.
Kontrollerna som ska redigeras grupperas i en <container>
som anges under taggen <input>
i trädkontrollen:
<input nolabel="true" type="treeEdit">
<container label="Text fields">
<input xpath="@text1"/>
<input xpath="@text2"/>
</container>
<container label="Boolean fields">
<input xpath="@boolean1"/>
<input xpath="@boolean2"/>
</container>
</input>
Lägga till ett uttrycksfält expression-field
Ett uttrycksfält uppdaterar ett fält dynamiskt från ett uttryck. Taggen <input>
används med ett Path -attribut för att ange sökvägen till det fält som ska uppdateras och ett expression -attribut som innehåller uppdateringsuttrycket.
<!-- Example: updating the boolean1 field from the value contained in the field with path /tmp/@flag -->
<input expr="Iif([/tmp/@flag]=='On', true, false)" type="expr" xpath="@boolean1"/>
<input expr="[/ignored/@action] == 'FCP'" type="expr" xpath="@launchFCP"/>
Formulärsammanhang context-of-forms
Körningen av ett inmatningsformulär initierar ett XML-dokument som innehåller data för enheten som redigeras. Det här dokumentet representerar formulärets kontext och kan användas som en arbetsyta.
Uppdatera kontexten updating-the-context
Om du vill ändra formulärets kontext använder du taggen <set expr="<value>" xpath="<field>"/>
, där <field>
är målfältet och <value>
är uppdateringsuttrycket eller uppdateringsvärdet.
Exempel på användning av taggen <set>
:
<set expr="'Test'" xpath="/tmp/@test" />
: placerar värdet för Test på den temporära platsen /tmp/@test1<set expr="'Test'" xpath="@lastName" />
: uppdaterar entiteten för attributet lastName med värdet Test<set expr="true" xpath="@boolean1" />
: anger värdet för fältet "boolean1" till "true"<set expr="@lastName" xpath="/tmp/@test" />
: uppdaterar med innehållet i attributet lastName
Formulärets kontext kan uppdateras när formuläret initieras och stängs via taggarna <enter>
och <leave>
.
<form name="recipient" namespace="cus">
<enter>
<set...
</enter>
...
<leave>
<set...
</leave>
</form>
<enter>
och <leave>
-taggar kan användas på <container>
sidor ("anteckningsbok" och"ikon").Uttrycksspråk expression-language-
Ett makrospråk kan användas i formulärdefinitionen för att utföra villkorstester.
Taggen <if expr="<expression>" />
kör instruktionerna som anges under taggen om uttrycket är verifierat:
<if expr="([/tmp/@test] == 'Test' or @lastName != 'Doe') and @boolean2 == true">
<set xpath="@boolean1" expr="true"/>
</if>
Taggen <check expr="<condition>" />
i kombination med taggen <error>
förhindrar validering av formuläret och visar ett felmeddelande om villkoret inte uppfylls:
<leave>
<check expr="/tmp/@test != ''">
<error>You must populate the 'Test' field!</error>
</check>
</leave>
Assistent (guide) wizards
En assistent guidar dig genom en uppsättning datainmatningssteg i form av sidor. De data som anges sparas när du validerar formuläret.
Om du vill lägga till en assistent använder du följande typ av struktur:
<form type="wizard" name="example" namespace="cus" img="nms:rcpgroup32.png" label="Wizard example" entity-schema="nms:recipient">
<container title="Title of page 1" desc="Long description of page 1">
<input xpath="@lastName"/>
<input xpath="comment"/>
</container>
<container title="Title of page 2" desc="Long description of page 2">
...
</container>
...
</form>
Om attributet type="wizard" finns i elementet <form>
kan du definiera guideläget när du skapar formuläret. Sidorna har slutförts från <container>
element, som är underordnade elementet <form>
. <container>
-elementet för en sida fylls i med rubrikattributen för titeln och desc för att visa beskrivningen under sidans rubrik. Knapparna Previous och Next läggs till automatiskt för att tillåta bläddring mellan sidor.
Knappen Finish sparar angivna data och stänger formuläret.
SOAP soap-methods
SOAP kan startas från en ifylld <leave>
-tagg i slutet av en sida.
Taggen <soapcall>
innehåller anropet till metoden med följande indataparametrar:
<soapCall name="<name>" service="<schema>">
<param type="<type>" exprIn="<xpath>"/>
...
</soapCall>
Namnet på tjänsten och dess implementeringsschema anges via attributen name och service för taggen <soapcall>
.
Indataparametrarna beskrivs för elementen <param>
under taggen <soapcall>
.
Parametertypen måste anges via attributet type. Möjliga typer är:
- sträng: teckensträng
- boolesk: Boolean
- byte: 8-bitars heltal
- short: 16-bitars heltal
- long: 32-bitars heltal
- short: 16-bitars heltal
- double: flyttal med dubbel precision
- DOMElement: nod för elementtyp
Attributet exprIn innehåller platsen för de data som ska skickas som en parameter.
Exempel:
<leave>
<soapCall name="RegisterGroup" service="nms:recipient">
<param type="DOMElement" exprIn="/tmp/entityList"/>
<param type="DOMElement" exprIn="/tmp/choiceList"/>
<param type="boolean" exprIn="true"/>
</soapCall>
</leave>