Pasos para crear una tabla descolgada

Puede crear una tabla descolgada siguiendo una serie de pasos.

Acerca de esta tarea

Para crear una tabla descolgada:

Procedimiento

  1. Copie el archivo <runtime_sandbox>/repository/entity/extensions/Extensions.xml.sample como archivo <runtime_sandbox>/extensions/global/entities/your_custome_filename.xml O modifique el archivo XML de extensión existente. Por ejemplo, supongamos que ABC_CUSTOMER_ORDER_LINE es una tabla descolgada.
  2. Edite el archivo your_custom_filename.xml para crear tablas descolgadas tal como se muestra en el ejemplo siguiente. Para obtener una descripción de los atributos XML, consulte la tabla que sigue al ejemplo.
    <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:

    • Si se especifica TableName utilizando un juego de caracteres no ASCII, los atributos XMLName y Name son obligatorios.
    • Si se especifica ColumnName utilizando un juego de caracteres no ASCII, los atributos XMLName y Name son obligatorios.
  3. En la tabla siguiente se explican los atributos del XML de entidad:

    Atributo

    Descripción

    Entidad

    ApiNeeded

    Indica si se deben generar las API o no. Loa valores válidos son Y o N. Si se pasa Y, se genera un conjunto predeterminado de API.

    Por ejemplo, en la tabla ABC_CUSTOMER_ORDER_LINE, la aplicación crea las siguientes API cuando se genera el archivo jar de extensión de la base de datos:
    • listABCCustomerOrderLine()
    • getABCCustomerOrderLine()
    • createABCCustomerOrderLine()
    • modifyABCCustomerOrderLine()
    • deleteABCCustomerOrderLine()

    Es posible acceder a estas API como servicios utilizando la Infraestructura de definición de servicio.

    AuditRequired

    Si se establece en Y, se creará un registro de auditoría para esta entidad.

    Nota: Este atributo no debe pasarse cuando se crear un elemento descolgado para tablas de órdenes relacionadas. En este caso, las auditorías se insertan automáticamente en la tabla YFS_ORDER_AUDIT.

    Descripción

    Una descripción de la entidad que se puede utilizar en Javadoc o ERD.

    HasHistory

    Este indicador se hereda automáticamente de la tabla padre. Por ejemplo, supongamos que se crea la tabla ABC_ORDER_HEADER como una tabla descolgada para YFS_ORDER_HEADER, que tiene una tabla de historial asociada. A continuación, la infraestructura de la base de datos genera automáticamente ABC_ORDER_HEADER_H.

    Prefijo

    El prefijo que se añade a las tablas personalizadas. Se recomienda no utilizar un prefijo que empiece por Y.

    TableName

    El nombre dado a la tabla descolgada.

    TableType Esto es obligatorio para dar soporte a multiesquema en IBM® Sterling™ Order Management System. Los valores válidos con: CONFIGURATION, MASTER, TRANSACTION, STATISTICS y METADATA.

    KeyType

    Opcional. El valor válido es Random. Cuando el valor se establece en Random, la lógica utilizada para generar claves primarias para la tabla genera claves primarias aleatorias en lugar de claves primarias secuenciales. Es decir, cuando KeyType=”Random”, se incluyen dos dígitos aleatorios en las claves primarias. Por ejemplo, el formato de las claves primarias generadas es AAAAMMDDHHRRMM(SS)NNNNNNNN, donde RR representa los dos dígitos aleatorios.

    Entity/Attributes/Attribute

    ColumnName

    Los nombres de las columnas que componen la tabla.

    DataType

    El tipo de datos de la columna. Los tipos de datos válidos se incluyen en el archivo dir_instalación/repository/datatypes/datatypes.xml.

    Nota: El tipo de datos BLOB no está soportado.

    CompressionSupported

    Opcional. Atributo que se utiliza para indicar si se permite la compresión de datos para esta columna. Loa valores válidos son True o False. Si el valor es True, el soporte de compresión está activado.

    Nota: Si los datos insertados en una columna tienen los atributos CompressionSupported y UseCompression establecidos en True, este atributo no se debe volver a establecer en False. Ello provocaría que todos los datos comprimidos se recuperaran sin descomprimir.

    UseCompression

    Opcional. Atributo que se utiliza para comprimir los datos de esta columna. Loa valores válidos son True o False. Si el valor es True, los datos se comprimen.

    Nota: El valor de este atributo debe establecerse en True sólo si el atributo CompressionSupported está establecido en True.

    QueryAllowed

    Opcional. Atributo que se utiliza para permitir el uso de una columna comprimible para las consultas en una API List. Loa valores válidos son True o False. Si el valor es True, la columna puede utilizarse para consultas en las API List.

    Nota: Si el valor del atributo CompressionSupported se establece en true, el valor de este atributo también se debe establecer en True.

    DefaultValue

    Valor predeterminado de la columna.

    Descripción

    Descripción de las columnas que se pueden utilizar en Javadoc o ERD.

    Posibilidad de nulos

    Opcional. Atributo que se utiliza para describir el valor que admite nulos de un campo. El valor predeterminado es false. Nullable=true se permite para todas las columnas excepto Atributos de clave primaria y Relaciones de entidad.

    XMLName

    Opcional. Nombre XML del atributo, si es distinto del nombre del atributo.

    Elija un nombre que no entre en conflicto con la extensión base. Es recomendable que utilice Extn como prefijo. También es muy recomendable que utilice el mismo convenio para el atributo XMLName que el que sigue el producto base. Escriba en mayúsculas la letra que va a continuación de cada signo de subrayado del nombre de columna y el resto en minúsculas. A continuación, elimine los signos de subrayado. Por lo tanto, Extn_Item_Id debería ser: ExtnItemId.

    Entity/PrimaryKey

    Nombre

    Nombre del índice exclusivo creado para la clave primaria. Este valor no puede superar los 18 caracteres.

    Nota: El nombre de la clave primaria en el XML de extensión debe finalizar con _PK.

    ColumnName

    El nombre de la columna de tabla identificada como la clave primaria.

    Entity/Indices/Index

    Nombre

    El nombre de índice. Este valor no puede superar los 18 caracteres.

    Exclusivo

    Esta clave está presente sólo para las entidades personalizadas. Loa valores válidos son True o False. Si el valor es True, se crea un índice exclusivo.

    AllowCompressedColumns

    Opcional. Si el valor es True, el índice puede contener columnas marcadas con el atributo CompressionSupported establecido en True.

    Column/Name

    El nombre de columna de tabla asociado con el índice.

    Entity/Parent

    ParentTableName

    Nombre de la otra tabla con la que esta entidad tiene una relación de clave foránea.

    XMLName

    El nombre XML del atributo padre. Debe empezar por el prefijo mencionado en la tabla padre.

    De forma predeterminada, se da por sentado que es el nombre de la tabla padre.

    Parent/Attribute Level

    ParentColumnName

    Nombre de columna en la tabla padre.

    Nota: para crear relaciones entre entidades, el tipo de datos de la columna padre debe ser de tipo CHAR o VARCHAR.

    ColumnName

    Nombre de columna de esta entidad personalizada.

    Entity/ForeignKeys/ForeignKey

    ParentTableName

    Nombre de la tabla con la que la entidad tiene una relación de clave foránea.

    XMLName

    Representación XML del nombre de elemento.

    De forma predeterminada, se da por sentado que es el nombre de la tabla padre.

    Entity/ForeignKeys/ForeignKey/Attribute

    ParentColumnName

    Nombre de columna de la tabla padre.

    Nota: para crear claves foráneas entre entidades, el tipo de datos de la columna padre debe ser de tipo CHAR o VARCHAR.

    ColumnName

    Nombre de columna de esta entidad descolgada.

    Entity/AuditReferences/Reference

    ColumnName

    Nombre de columna de referencia en la tabla de auditoría.

    Nota: En la definición de entidad, la relación se puede definir bajo los elementos ForeignKey .
  4. La relación definida bajo el elemento ForeignKey indica que:
    1. Si la tabla foránea es una tabla definida por la aplicación, para un único registro de la tabla foránea, pueden existir cero o muchos registros en esta tabla descolgada.
    2. Esta es una relación de sólo lectura, de ahí que la supresión de un registro de la tabla externa no da como resultado la supresión de un registro coincidente de esta tabla descolgada.
  5. Amplíe las plantillas de API correspondientes (por ejemplo, la API getOrderDetails) siguiendo las instrucciones que se dan en "Ampliación de plantillas de API".
    Nota: Las API generadas para las tablas descolgadas se pueden invocar como un servicio y a través de un componente derivador multiAPI .
  6. Compile y despliegue las ampliaciones.