Trabalhar com esquemas

A estrutura física e lógica dos dados transportados no aplicativo é descrita em XML. Ela obedece a uma gramática específica do Adobe Campaign, chamada de schema.

Um schema é um documento XML associado a uma tabela de banco de dados. Ele define a estrutura de dados e descreve a definição SQL da tabela:

  • O nome da tabela
  • Campos
  • Links com outras tabelas

Ele também descreve a estrutura XML usada para armazenar dados:

  • Elementos e atributos
  • Hierarquia de elementos
  • Tipos de elemento e atributo
  • Valores padrão
  • Rótulos, descrições e outras propriedades.

Os esquemas permitem definir uma entidade no banco de dados. Existe um schema para cada entidade.

A Adobe Campaign emprega os Esquemas de dados para:

  • Defina como o objeto de dados no aplicativo é vinculado às tabelas de banco de dados subjacentes.
  • Definir links entre os diferentes objetos de dados no aplicativo Campaign.
  • Definir e descrever os campos individuais incluídos em cada objeto.

Para obter uma melhor compreensão das tabelas integradas do Campaign e sua interação, consulte esta seção.

ATENÇÃO

Alguns esquemas internos do Campaign têm um schema associado no banco de dados do Cloud. Esses esquemas são identificados pela variável Xxl namespace e não devem ser modificados ou estendidos.

Sintaxe de schemas

O elemento raiz do schema é <srcschema>. Ele contém a variável <element> e <attribute> subelementos.

O primeiro <element> O subelemento coincide com a raiz da entidade.

<srcSchema name="recipient" namespace="cus">
  <element name="recipient">
    <attribute name="lastName"/>
    <attribute name="email"/>
    <element name="location">
      <attribute name="city"/>
   </element>
  </element>
</srcSchema>
OBSERVAÇÃO

O elemento raiz da entidade tem o mesmo nome do schema.

O <element> as tags definem os nomes dos elementos da entidade. <attribute> as tags do schema definem os nomes dos atributos no <element> tags às quais foram vinculadas.

Identificação de um schema

Um schema de dados é identificado por seu nome e namespace.

Um namespace permite agrupar um conjunto de schemas por área de interesse. Por exemplo, a variável cus o namespace é usado para configuração específica do cliente (clientes).

ATENÇÃO

Como padrão, o nome do namespace deve ser conciso e deve conter somente caracteres autorizados de acordo com as regras de nomenclatura XML.

Os identificadores não devem começar com caracteres numéricos.

Namespaces reservados

Determinados namespaces são reservados para descrições das entidades do sistema necessárias para a operação do aplicativo Adobe Campaign. O namespace a seguir não deve ser usada para identificar um novo schema, em qualquer combinação de maiúsculas/minúsculas:

  • xxl: reservado para esquemas de banco de dados do Cloud
  • xtk: reservado para dados do sistema da plataforma
  • nl: reservado à utilização global do pedido
  • nms: reservado para deliveries (recipient, delivery, rastreamento etc.)
  • ncm: reservado para gerenciamento de conteúdo
  • temp: reservado para schemas temporários
  • crm: reservado para integração de conectores CRM

A chave de identificação de um schema é uma cadeia de caracteres criada usando o namespace e o nome separados por dois pontos; por exemplo: nms:recipient.

Criar ou estender esquemas do Campaign

Para adicionar um campo ou outro elemento a um dos esquemas de dados principais no Campaign, como a tabela de recipients (nms:recipient), é necessário estender esse schema.

Para obter mais informações, consulte Estender um esquema.

Para adicionar um tipo de dados totalmente novo que não existe no Adobe Campaign (uma tabela de contratos, por exemplo), é possível criar um schema personalizado diretamente.

Para obter mais informações, consulte Criar um novo schema.

Depois de criar ou estender um schema para funcionar, a prática recomendada é definir seus elementos de conteúdo XML na mesma ordem em que aparecem abaixo.

Enumerações

As enumerações são definidas primeiro, antes do elemento principal do schema. Eles permitem exibir valores em uma lista para restringir as opções que o usuário tem para um determinado campo.

Exemplo:

<enumeration basetype="byte" name="exTransactionTypeEnum" default="store">
<value label="Website" name="web" value="0"/>
<value label="Call Center" name="phone" value="1"/>
<value label="In Store" name="store" value="2"/>
</enumeration>

Ao definir campos, você pode usar essa enumeração da seguinte maneira:

<attribute desc="Type of Transaction" label="Transaction Type" name="transactionType"
type="string" enum="exTransactionTypeEnum"/>
OBSERVAÇÃO

Também é possível empregar enumerações gerenciadas pelo usuário (normalmente em Administration > Platform ) para especificar os valores de um determinado campo. Essas são enumerações globais efetivamente e uma melhor opção se a enumeração puder ser usada fora do schema específico em que você está trabalhando.

Teclas

Cada tabela deve ter pelo menos uma chave e geralmente é automaticamente estabelecida no elemento principal do schema usando o autopk conjunto de atributos para true.

Além disso, no contexto de um Implantação empresarial (FDA), use o @autouuid e defina-o como true.

A chave primária também pode ser definida usando o interno atributo.

Exemplo:

<key name="householdId" internal="true">
  <keyfield xpath="@householdId"/>
</key>

Neste exemplo, em vez de deixar a variável @autopk ou @autouuid criar uma chave primária padrão chamada "id" estamos especificando nossa própria chave primária "householdId".

ATENÇÃO

Ao criar um novo schema ou durante uma extensão de schema, você precisa manter o mesmo valor de sequência da chave primária (@pkSequence) para todo o schema.

Saiba mais sobre as teclas em esta seção.

Atributos (Campos)

Os atributos permitem definir os campos que compõem o objeto de dados. Você pode usar o Insert na barra de ferramentas da edição do schema para soltar modelos de atributos vazios em seu XML, onde está o cursor. Saiba mais nesta seção.

A lista completa de atributos está disponível na seção <attribute> seção de elemento em Documentação do Campaign Classic v7. Estes são alguns dos atributos mais usados: @advanced, @dataPolicy, @default, @desc, @enum, @expr, @label, @length, @name, @notNull, @required, @ref, @xml, @type.

Para obter mais informações sobre cada atributo, consulte a Descrição do atributo em Documentação do Campaign Classic v7.

Exemplos

Exemplo de definição de um valor padrão:

<attribute name="transactionDate" label="Transaction Date" type="datetime" default="GetDate()"/>

Exemplo de uso de um atributo comum como modelo para um campo também marcado como obrigatório:

<attribute name="mobile" label="Mobile" template="nms:common:phone" required="true" />

Exemplo de um campo calculado que está oculto usando o @advanced atributo:

<attribute name="domain" label="Email domain" desc="Domain of recipient email address" expr="GetEmailDomain([@email])" advanced="true" />

Exemplo de um campo XML também armazenado em um campo SQL e que tem um @dataPolicy atributo.

<attribute name="secondaryEmail" label="Secondary email address" length="100" xml="true" sql="true" dataPolicy="email" />
ATENÇÃO

Embora a maioria dos atributos seja vinculada de acordo com uma cardinalidade 1-1 a um campo físico do banco de dados, esse não é o caso dos campos XML ou dos campos calculados.
Um campo XML é armazenado em um campo de memorando ("mData") da tabela.
No entanto, um campo calculado é criado dinamicamente cada vez que um query é iniciado, portanto, ele só existe na camada do aplicativo.

Os links são alguns dos últimos elementos no elemento principal do schema. Eles definem como todos os diferentes esquemas em sua instância estão relacionados uns com os outros.

Os links são declarados no schema que contém a variável chave externa da tabela à qual está vinculada.

Existem três tipos de cardinalidade: 1-1, 1-N e N-N. É o tipo 1-N usado por padrão.

Exemplos

Um exemplo de um link 1-N entre a tabela do recipient (schema pronto para uso) e uma tabela de transações personalizadas:

<element label="Recipient" name="lnkRecipient" revLink="lnkTransactions" target="nms:recipient" type="link"/>

Um exemplo de um link 1-1 entre um schema personalizado "Car" (no namespace "cus") e a tabela de recipients:

<element label="Car" name="lnkCar" revCardinality="single" revLink="recipient" target="cus:car" type="link"/>

Exemplo de uma associação externa entre a tabela de recipients e uma tabela de endereços com base no endereço de email e não em uma chave primária:

<element name="emailInfo" label="Email Info" revLink="recipient" target="nms:address" type="link" externalJoin="true">
  <join xpath-dst="@address" xpath-src="@email"/>
</element>

Aqui, "xpath-dst" corresponde à chave primária no schema de destino e "xpath-src" corresponde à chave estrangeira no schema de origem.

Trilha de auditoria

Um elemento útil que pode ser incluído na parte inferior do esquema é um elemento de rastreamento (Trilha de auditoria).

Use o exemplo abaixo para incluir campos relacionados à data de criação, ao usuário que criou os dados, à data e ao autor da última modificação para todos os dados na tabela:

<element aggregate="xtk:common:auditTrail" name="auditTrail"/>

Atualização da estrutura do banco de dados

Depois que as alterações forem concluídas e salvas, todas as alterações que possam afetar a estrutura do SQL precisarão ser aplicadas ao banco de dados. Para fazer isso, use o assistente de atualização do banco de dados.

Para obter mais informações, consulte esta seção.

OBSERVAÇÃO

Quando as modificações não afetam a estrutura do banco de dados, basta gerar os schemas novamente. Para fazer isso, selecione os esquemas a serem atualizados, clique com o botão direito do mouse e escolha Actions > Regenerate selected schemas… .

Nesta página