Etapas para criar uma tabela hang-off

É possível criar uma tabela hang-off seguindo um conjunto de etapas.

Sobre esta tarefa

Para criar uma tabela hang-off:

Procedimento

  1. Copie o arquivo <runtime_sandbox>/repository/entity/extensions/Extensions.xml.sample como arquivo <runtime_sandbox>/extensions/global/entities/your_custome_filename.xml OU modifique seu arquivo XML de extensão existente Por exemplo, suponha que ABC_CUSTOMER_ORDER_LINE é uma tabela hang-off.
  2. Edite o arquivo your_custom_filename.xml para criar tabelas hang-off 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="" 
            HasHistory="Y/N" Prefix="ABC" 
            TableName="ABC_CUSTOMER_ORDER_LINE" TableType="TRANSACTION" 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>
                <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.
    • Se ColumnName for especificado usando um conjunto de caracteres não ASCII, os atributos XMLName e Name serão necessários.
  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, na tabela ABC_CUSTOMER_ORDER_LINE, o aplicativo cria as seguintes APIs quando o arquivo jar da extensão de banco de dados é gerado:
    • listABCCustomerOrderLine()
    • getABCCustomerOrderLine()
    • createABCCustomerOrderLine()
    • modifyABCCustomerOrderLine()
    • deleteABCCustomerOrderLine()

    Essas APIs podem ser acessadas como serviços usando a Estrutura de Definição de Serviço.

    AuditRequired

    Se configurado paraY, o registro de auditoria para essa entidade é criado.

    Nota: esse atributo não deve ser passado quando você estiver criando um hang-off para tabelas relacionadas à ordem. Nesse caso, as auditorias são automaticamente inseridas na tabela YFS_ORDER_AUDIT.

    Descrição

    Uma descrição da entidade que poderia ser usada no Javadoc ou no ERD

    HasHistory

    Esse sinalizador é automaticamente herdado da tabela-pai. Por exemplo, vamos supor que a tabela ABC_ORDER_HEADER é criada como uma tabela filha para YFS_ORDER_HEADER, que tem uma tabela de históricos associada. Então, ABC_ORDER_HEADER_H é automaticamente gerado pela estrutura do banco de dados.

    Prefixo

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

    TableName

    O nome dado à sua tabela hang-off.

    TableType Isso é obrigatório para oferecer suporte a vários esquemas no IBM® Sterling™ Order Management System. Os valores válidos são: CONFIGURATION, MASTER, TRANSACTION, STATISTICS e METADATA.

    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 arquivoinstall_dir/repository/datatypes/datatypes.xml.

    Nota: o tipo de dados BLOB não é suportado.

    CompressionSupported

    Opcional. Atributo usado para indicar se a compactação de dados é ou não suportada para essa coluna. Valores válidos sãoTrue 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. Valores válidos sãoTrue 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. Valores válidos sãoTrue 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.

    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.

    Entity/PrimaryKey

    Nome

    Nome do índice exclusivo criado para a chave primária. Esse valor não pode exceder 18 caracteres.

    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. Valores válidos sãoTrue 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 hang-off.

    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 sob elementos ForeignKey .
  4. O relacionamento definido sob o elemento ForeignKey indica:
    1. Se a tabela estrangeira for uma tabela definida pelo aplicativo, para um único registro na tabela estrangeira, podem existir zero ou muitos registros nessa tabela hang-off.
    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 hang-off.
  5. Estenda os modelos de API correspondentes (por exemplo, a API getOrderDetails) seguindo as instruções em "Estendendo Modelos de API".
    Nota: as APIs geradas para as tabelas hang-off podem ser chamadas como um serviço e por meio de um componente wrapper multiAPI .
  6. Construa e implemente as suas extensões.