Etapas para criar uma tabela customizada

É possível criar uma tabela customizada.

Observação: os agentes personalizados devem ser implementados
  • para limpar dados de tabelas personalizadas em suas tabelas de histórico correspondentes, caso existam, e
  • para lidar com as exclusões das tabelas de histórico personalizadas.

Sobre esta tarefa

Para criar uma tabela customizada:

Procedimento

  1. Copie o arquivo <runtime_sandbox>/repository/entity/extensions/Extensions.xml.sample como arquivo <runtime_sandbox>/extensions/global/entities/your_custom_filename.xml OU modifique seu arquivo XML de extensão existente Por exemplo, suponha que ABC_CUSTOMER_ORDER_LINE é uma tabela customizada.
  2. Edite o arquivo your_custom_filename.xml para criar tabelas customizadas, conforme mostrado no exemplo a seguir: Para uma descrição dos atributos XML, consulte a tabela após o exemplo.
    <DBSchema> 
      <Entities> 
         <Entity ApiNeeded="Y/N" AuditRequired="Y" Description="" 
          XMLName="OPTIONAL" Name="OPTIONAL" HasHistory="Y/N" Prefix="ABC" 
          TableName="ABC_CUSTOMER_ORDER_LINE" KeyType="Random" > 
          <!-- table columns --> 
          <Attributes> 
             <Attribute ColumnName="CREATETS" DataType="TimeStamp"  
               DefaultValue="sysdate" Description="Create TimeStamp" /> 
             <Attribute ColumnName="MODIFYTS" DataType="TimeStamp" 
               DefaultValue="sysdate" Description="Modify TimeStamp" /> 
             <Attribute ColumnName="CREATEUSERID" DataType="UserId" 
               DefaultValue="&apos; &apos;" Description="Creating User ID" /> 
             <Attribute ColumnName="MODIFYUSERID" DataType="UserId" 
               DefaultValue="&apos; &apos;" Description="Modifying User ID" /> 
             <Attribute ColumnName="CREATEPROGID" DataType="ProgramID" 
               DefaultValue="&apos; &apos;" Description="Creating Program ID" /> 
             <Attribute ColumnName="MODIFYPROGID" DataType="ProgramID" 
               DefaultValue="&apos; &apos;" Description="Modifying Program ID" /> 
             <Attribute ColumnName="LOCKID" DataType="Lockid" 
               DefaultValue="0" Description="Lock ID" /> 
             <Attribute ColumnName="TABLE_KEY" DataType="Key" DefaultValue=" " 
               Description="" Nullable="True/False" XMLName="TableKey" />        
             . 
              . 
          </Attributes> 
          <!-- PrimaryKey is a mandatory attribute in entity definition. 
            This element can have ONLY ONE attribute element --> 
          <PrimaryKey Name="TABLE_NAME_PK"> 
               <Attribute ColumnName="TABLE_KEY" /> 
          </PrimaryKey> 
          <!-- Indices --> 
          <Indices> 
              <Index Name="INDEX_I1" Unique="True/False"> 
                  <Column Name="Attribute2" /> 
                  . 
                  . 
               </Index> 
               . 
               . 
           </Indices> 
           <!-- Relationship --> 
           <Parent ParentTableName="YFS_ORDER_LINE" XMLName="YFSOrderLine" > 
           <Attribute ColumnName="CUSTOM_ORDER_KEY" 
             ParentColumnName="ORDER_LINE_KEY" /> 
           . 
           . 
           </Parent> 
           <!-- ForeignKeys --> 
           <ForeignKeys> 
             <ForeignKey ParentTableName="PARENT_ORDER_LINE" 
               XMLName="PARENTName1" > 
                 <Attribute ColumnName="CUSTOM_ORDER_KEY" 
                   ParentColumnName="PARENT_COLUMN_KEY" /> 
                 . 
                 . 
             </ForeignKey> 
             . 
             . 
           </ForeignKeys> 
           <!-- AuditReferences --> 
           <AuditReferences> 
             <Reference ColumnName="TABLE_KEY" /> 
              . 
              . 
           </AuditReferences> 
       </Entity> 
      </Entities> 
    </DBSchema>

    Notas:

    • Se TableName for especificado usando um conjunto de caracteres não ASCII, os atributos XMLName e Name serão necessários para essa tabela ou entidade.
    • Se ColumnName for especificado usando um conjunto de caracteres não ASCII, os atributos XMLName e Name serão necessários para essa coluna ou atributo.
  3. A tabela a seguir explica os atributos no XML da entidade:

    Atributo

    Descrição

    Entidade

    ApiNeeded

    Indica se as APIs devem ou não ser geradas. Valores válidos sãoY ou N. Um conjunto de APIs padrão é gerado se Y for passado.

    Por exemplo, nas tabelas ABC_CUSTOMER_ORDER_LINE, o aplicativo cria as seguintes APIs quando o arquivo jar da extensão de banco de dados é gerado:
    • getABCCustomerOrderLine()
    • getABCCustomerOrderLineList()
    • createABCCustomerOrderLine()
    • changeABCCustomerOrderLine()
    • deleteABCCustomerOrderLine()

    Essas APIs podem ser acessados como serviços usando o Service Definition Framework.

    AuditRequired

    Se configurado como Y, , um registro de auditoria para essa entidade será criado..

    HasHistory

    Esse sinalizador indica se a tabela customizada pode ter uma tabela de históricos associada a ela.

    O valor padrão é N.

    Se o sinalizador estiver configurado paraY, os scripts apropriados para a geração de scripts de banco de dados para a criação e alteração da tabela de históricos são gerados por dbverify.

    Para uma tabela customizada, o sinalizador HasHistory deve ser configurado para Y para gerar tabelas de históricos. Porém, se um relacionamento Pai for definido no XML da entidade, esse sinalizador é copiado da definição da tabela-pai, e todas as entidades-filhas não podem substituir esse sinalizador.

    Prefixo

    O prefixo incluído nas suas tabelas customizadas. É recomendado que você não use um prefixo começando com Y.

    TableName

    O nome que é dado à sua tabela customizada

    KeyType

    Opcional. O valor válido é Random. Quando o valor é configurado para Random, a lógica usada para gerar chaves primárias para a tabela resulta na geração de chaves primárias aleatórias e não chaves primárias sequenciais. Isto é, quando KeyType=”Random”, dois dígitos aleatórios são incluídos nas chaves primárias. Por exemplo, o formato das chaves primárias geradas é YYYYMMDDHHRRMM(SS)NNNNNNNN, em que RR representa os dois dígitos aleatórios.

    Entity/Attributes/Attribute

    ColumnName

    Os nomes de coluna que compõem a tabela.

    DataType

    O tipo de dados da coluna. Tipos de dados válidos são fornecidos no arquivo install_dir/repository/datatypes/datatypes.xml.

    Nota:
    • Tipo de dados BLOB não é suportado.
    • Não use o tipo de dados Key porque ele cria um índice no esquema SYSIBM que faz com que o processo de autoatendimento do Update OMS Application UCD falhe e force o descarte manual da chave primária para remover o índice. O tipo de dados Key não é necessário, pois o <PrimaryKey> obtém o mesmo resultado sem criar o índice indesejado.

    CompressionSupported

    Opcional. Atributo usado para indicar se a compactação de dados é ou não suportada para essa coluna. Os valores válidos são True ou False. Se suporte de compactação True estiver ativado.

    Nota: Se os dados inseridos em uma coluna tiverem os atributos CompressionSupported e UseCompression configurados para True, esse atributo não deverá ser configurado de volta para False. Fazer isso resultaria na recuperação sem nenhuma descompactação de todos os dados compactados.

    UseCompression

    Opcional. Atributo usado para compactar dados para essa coluna. Os valores válidos são True ou False. Se True, os dados são compactados.

    Nota: O valor desse atributo deve ser configurado como True somente se o atributo CompressionSupported for configurado como True.

    QueryAllowed

    Opcional. Atributo usado para ativar uma coluna compactável para ser usada para consultas em uma API de Lista. Os valores válidos são True ou False. Se True, a coluna pode ser usada para consultas nas APIs da Lista.

    Nota: Se o valor do atributo CompressionSupported for configurado como true, o valor desse atributo também deverá ser configurado como True.

    DefaultValue

    Valor padrão para a coluna.

    Descrição

    Uma descrição das colunas que poderiam ser usadas no Javadoc ou no ERD

    Anulável

    Opcional. Atributo usado para descrever o valor anulável de um campo. O padrão é false. Nullable=true é permitido para todas as colunas, exceto Atributos de Chave Primária e Relacionamentos de Entidade.

    XMLName

    Opcional. Nome XML do atributo, se for diferente do nome do atributo.

    Nota: Se ColumnName for especificado usando um conjunto de caracteres não ASCII, esse atributo será necessário..

    Escolha um nome que não entre em conflito com a extensão base. É recomendado que você use Extn como um prefixo. Também é fortemente recomendado que você use a mesma convenção para chegar no XMLName como o produto base faz: faça cada letra após o sublinhado no nome da coluna em letra maiúscula, e o restante em letra minúscula. Depois, remova os sublinhados. Assim, Extn_Item_Id deve ser: ExtnItemId.

    Nome

    Obrigatório. O nome de classe do banco de dados.

    Entity/PrimaryKey

    Nome

    Nome do índice exclusivo criado para a chave primária.

    Nota: o nome da chave primária na extensão XML deve terminar com _PK.

    ColumnName

    O nome da coluna da tabela que é identificada como a chave primária.

    Entity/Indices/Index

    Nome

    O nome do índice. Esse valor não pode exceder 18 caracteres.

    Exclusivo

    Essa chave está presente somente para entidades customizadas. Os valores válidos são True ou False. Se True, um índice exclusivo é criado.

    AllowCompressedColumns

    Opcional. Se True, o índice tem permissão para conter colunas marcadas com o atributo CompressionSupported configurado para True.

    Column/ Name

    O nome da coluna da tabela associado com o índice.

    Entity/Parent

    ParentTableName

    Nome da outra tabela com a qual essa entidade tem relacionamento de chave estrangeira.

    XMLName

    O nome do XML do atributo pai. Ele deve começar com o prefixo mencionado na tabela-pai.

    Por padrão, o nome da tabela-pai é assumido.

    Parent/Attribute Level

    ParentColumnName

    O nome da coluna na tabela-pai.

    Nota: para criar relacionamentos entre entidades, o tipo de dados da coluna pai deve ser do tipo CHAR ou VARCHAR.

    ColumnName

    O nome da coluna nessa entidade customizada.

    Entity/ForeignKeys/ForeignKey

    ParentTableName

    O nome da tabela com a qual a entidade tem um relacionamento de chave estrangeira.

    XMLName

    Representação XML do nome do elemento.

    Por padrão, o nome da tabela-pai é assumido.

    Entity/ForeignKeys/ForeignKey/Attribute

    ParentColumnName

    O nome da coluna da tabela-pai.

    Nota: para criar chaves estrangeiras entre entidades, o tipo de dados da coluna pai deve ser do tipo CHAR ou VARCHAR.

    ColumnName

    O nome da coluna nessa entidade customizada.

    Entity/AuditReferences/Reference

    ColumnName

    O nome da Coluna de Referência na tabela de auditoria.

    Nota: na definição de entidade, o relacionamento pode ser definido nos elementos Pai e ForeignKey .
  4. O relacionamento definido sob o elemento ForeignKey indica:
    1. Se a tabela estrangeira for uma tabela de banco de dados do aplicativo,para um registro único na tabela estrangeira, zero ou muitos registros nessa tabela customizada podem existir.
    2. Esse é um relacionamento somente leitura, assim, a exclusão de um registro da tabela estrangeira não resulta na exclusão de um registro correspondente dessa tabela customizada.
  5. O relacionamento definido no elemento Parent indica:
    1. Para um único registro na tabela-pai, diversos registros-filhos podem existir.
    2. A exclusão de um registro da tabela-pai resulta na exclusão de registros correspondentes da tabela-filha, se houver.
  6. Estenda os modelos de API correspondentes (por exemplo, getOrderDetails()API) seguindo as instruções em Extending API Templates.
    Nota: as APIs geradas pelo aplicativo para as tabelas customizadas podem ser chamadas como um serviço e por meio de um componente do wrapper multiAPI
  7. Construa e implemente as suas extensões.