Esempio 1: scrivere nel database
Per scrivere nel database, è possibile utilizzare il metodo statico Write
nello schema xtk:session
:
-
Comporre una richiesta di scrittura in XML.
-
Scrivi il record:
-
Chiama il metodo
Write
nello schemaxtk:session
.IMPORTANTE
Se utilizzi Adobe Campaign v8, ti consigliamo di utilizzare il meccanismo di gestione temporanea con le API Ingestion e Data update/delete per il metodoWrite
in una tabella Snowflake. Ulteriori informazioni. -
Passa il codice XML come argomento per la richiesta di scrittura.
-
Passaggio 1: comporre una richiesta di scrittura
È possibile aggiungere, aggiornare ed eliminare record.
Inserire un record
Poiché l'operazione insert
è l'operazione predefinita, non è necessario specificarla.
Specificare queste informazioni come attributi XML:
- Schema della tabella da modificare
- Campi della tabella da compilare
Esempio:
var myXML = <recipient xtkschema="nms:recipient"
firstName="Isabel"
lastName="Garcia"
email="isabel.garcia@mycompany.com"/>
Aggiornare un record
Utilizzare l'operazione _update
.
Specificare queste informazioni come attributi XML:
- Schema della tabella da modificare
- Campi della tabella da aggiornare
- Argomento chiave necessario per identificare il record da aggiornare
Esempio:
var myXML = <recipient xtkschema="nms:recipient"
status="Client"
email="isabel.garcia@mycompany.com"
operation="_update"
_key="@email"/>
Passaggio 2: creare un oggetto query
Per creare un'entità dal codice XML, utilizzare il metodo create(
content
)
:
var query = xtk.queryDef.create(
<queryDef schema="nms:recipient" operation="select">
…
</queryDef>)
Aggiungi al metodo create(
content
)
il prefisso dello schema dell'entità da creare.
L'argomento content
è un argomento stringa ed è facoltativo. Questo argomento contiene il codice XML che descrive l'entità.
Passaggio 3: eseguire la query
Segui questi passaggi:
-
Chiama il metodo
ExecuteQuery
sull'entitàqueryDef
:var res = query.ExecuteQuery()
-
Elabora i risultati:
- Eseguire un'iterazione sui risultati dell'operazione
select
utilizzando un costrutto loop. - Verificare i risultati utilizzando l'operazione
getIfExists
. - Contare i risultati utilizzando l'operazione
count
.
- Eseguire un'iterazione sui risultati dell'operazione
Risultati di un'operazione select
Tutte le corrispondenze vengono restituite come una raccolta:
<recipient-collection>
<recipient email="jane.smith@mycompany.com">
<recipient email="john.harris@mycompany.com">
</recipient-collection>
Per scorrere i risultati, utilizzare il ciclo for each
:
for each (var rcp in res:recipient)
logInfo(rcp.@email)
Il ciclo include una variabile di destinatario locale. Per ogni destinatario restituito nella raccolta di destinatari, viene stampata l’e-mail del destinatario. Ulteriori informazioni sulla funzione logInfo
.
Interagire con il database
Questi esempi mostrano come eseguire queste azioni:
- Utilizzare i metodi
get
ecreate
negli schemi per utilizzare metodi SOAP non statici - Creare metodi che eseguono query SQL
- Utilizzare il metodo
write
per inserire, aggiornare ed eliminare record
Segui questi passaggi:
-
Definisci la query:
- Recuperare un'entità utilizzando il metodo
create
nello schema corrispondente, ad esempio lo schemaxtk:workflow
. Ulteriori informazioni. - Utilizzare il metodo
queryDef
per eseguire una query SQL.
- Recuperare un'entità utilizzando il metodo
-
Eseguire la query utilizzando il metodo
ExecuteQuery
. Ulteriori informazioni.Utilizzare il ciclo
for each
per recuperare i risultati.
Sintassi del metodo queryDef
con una clausola select
<queryDef schema="schema_key" operation="operation_type">
<select>
<node expr="expression1">
<node sql="expression2">
</select>
<where>
<condition expr="expression1"/>
<condition sql="expression2"/>
</where>
<orderBy>
<node expr="expression1">
<node sql="expression2">
</orderBy>
<groupBy>
<node expr="expression1">
<node sql="expression2">
</groupBy>
<having>
<condition expr="expression1"/>
<condition sql="expression2"/>
</having>
</queryDef>
metodo Create
Esempio 1: selezionare i record e scrivere nel giornale di registrazione
I nomi interni dei flussi di lavoro che si trovano nella cartella wfExamples sono selezionati. I risultati vengono ordinati in base al nome interno, in ordine crescente, e scritti nel giornale di registrazione.
var query = xtk.queryDef.create(
<queryDef schema="xtk:workflow" operation="select">
<select>
<node expr="@internalName"/>
</select>
<where>
<condition expr="[folder/@name]='wfExamples'"/>
</where>
<orderBy>
<node expr="@internalName" sortDesc="false"/>
</orderBy>
</queryDef>
)
var res = query.ExecuteQuery()
for each (var w in res.workflow)
logInfo(w.@internalName)
Esempio 2: eliminare record
Vengono selezionati il nome, il cognome, l’e-mail e l’ID di tutti i destinatari di nome Chris Smith. I risultati vengono ordinati per e-mail, in ordine crescente e scritti nel giornale di registrazione. È stata utilizzata un'operazione delete
per eliminare i record selezionati.
// Build the query, create a query object and hold the object in a variable
var query = xtk.queryDef.create(
<queryDef schema="nms:recipient" operation="select">
<select>
<node expr="@firstName"/>
<node expr="@lastName"/>
<node expr="@email"/>
<node expr="@id"/>
</select>
<where>
<condition expr="[folder/@label]='Recipients'"/>
<condition expr="[@lastName]='Smith'"/>
<condition expr="[@firstName]='Chris'"/>
</where>
<orderBy>
<node expr="@email" sortDesc="false"/>
</orderBy>
</queryDef>
)
//Run the query using the ExecuteQuery method against the created object
var res = query.ExecuteQuery()
//Loop through the results, print out the person's name and email, then delete the records
for each (var rec in res.recipient)
{
logInfo("Delete record = Email: " + rec.@email + ', ' + rec.@firstName + ' ' + rec.@lastName)
xtk.session.Write(<recipient xtkschema="nms:recipient" _operation="delete" id={rec.@id}/>)
}
Esempio 3: selezionare i record e scrivere nel giornale di registrazione
In questo esempio viene utilizzato un metodo non statico. Vengono selezionati l'anno e-mail e l'anno di nascita di tutti i destinatari le cui informazioni sono memorizzate nella cartella 1234 e il cui nome di dominio e-mail inizia con "adobe". I risultati sono ordinati in ordine decrescente per data di nascita. L'e-mail dei destinatari viene scritta nel giornale di registrazione.
var query = xtk.queryDef.create(
<queryDef schema="nms:recipient" operation="select">
<select>
<node expr="@email"/>
<node sql="sEmail"/>
<node expr="Year(@birthDate)"/>
</select>
<where>
<condition expr="[@folder-id] = 1234 and @domain like 'adobe%'"/>
<condition sql="iFolderId = 1234 and sDomain like 'adobe%'"/>
</where>
<orderBy>
<node expr="@birthDate" sortDesc="true"/>
</orderBy>
</queryDef>
)
var res = query.ExecuteQuery()
for each (var w in res.recipient)
logInfo(w.@email)
metodo Write
È possibile inserire, aggiornare ed eliminare record. È possibile utilizzare il metodo Write
su qualsiasi schema in Adobe Campaign. Poiché questo metodo è statico, non è necessario creare un oggetto. Puoi utilizzare le seguenti operazioni:
-
Operazione
update
-
Operazione
insertOrUpdate
, con l'argomento_key
per identificare il record da aggiornareSe non si specifica la cartella Destinatari, se esiste una corrispondenza, il record verrà aggiornato in una sottocartella. In caso contrario, il record viene creato nella cartella principale Destinatari.
-
Operazione
delete
Write
in una tabella Snowflake. Ulteriori informazioni.