Pasos para crear una tabla personalizada
Puede crear una tabla personalizada.
- purgar los datos de las tablas personalizadas en sus correspondientes tablas históricas si existen y
- para gestionar las eliminaciones de las tablas de historial personalizadas.
Acerca de esta tarea
Para crear una tabla personalizada:
Procedimiento
- Copie el archivo <runtime_sandbox>/repository/entity/extensions/Extensions.xml.sample como archivo <runtime_sandbox>/extensions/global/entities/your_custom_filename.xml O modifique el archivo XML de extensión existente. Por ejemplo, supongamos que ABC_CUSTOMER_ORDER_LINE es una tabla personalizada.
- Edite el archivo your_custom_filename.xml para crear tablas personalizadas 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="" 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="' '" Description="Creating User ID" /> <Attribute ColumnName="MODIFYUSERID" DataType="UserId" DefaultValue="' '" Description="Modifying User ID" /> <Attribute ColumnName="CREATEPROGID" DataType="ProgramID" DefaultValue="' '" Description="Creating Program ID" /> <Attribute ColumnName="MODIFYPROGID" DataType="ProgramID" DefaultValue="' '" 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:
- Si se especifica TableName utilizando un juego de caracteres no ASCII, los atributos XMLName y Name son necesarios para esta tabla o entidad.
- Si se especifica ColumnName utilizando un juego de caracteres no ASCII, los atributos XMLName y Name son necesarios para esta columna o atributo.
- 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. Los valores válidos son Y o N. Se genera un conjunto predeterminado de API si se pasa Y .
Por ejemplo, en las tablas 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:- getABCCustomerOrderLine()
- getABCCustomerOrderLineList()
- createABCCustomerOrderLine()
- changeABCCustomerOrderLine()
- deleteABCCustomerOrderLine()
Se puede acceder a estas API como servicios utilizando la infraestructura de definición de servicios.
AuditRequired
Si se establece en Y, , se crea un registro de auditoría para esta entidad.
HasHistory
Este distintivo indica si la tabla personalizada puede tener una tabla de historial asociada.
El valor predeterminado es N.
Si el distintivo se establece en Y, dbverify genera los scripts adecuados para generar scripts de base de datos para crear y modificar la tabla de historial.
Para una tabla personalizada, el distintivo HasHistory debe establecerse en Y para generar tablas de historial. Sin embargo, si en el XML de entidad se define una relación padre, este distintivo se copia desde la definición de tabla padre y ninguna entidad hijo puede sustituir este distintivo.
Prefijo
El prefijo que se añade a las tablas personalizadas. Se recomienda no utilizar un prefijo que empiece por Y.
TableName
El nombre que se proporciona a la tabla personalizada.
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:- No se admite el tipo de datos BLOB.
- No utilice el tipo de datos Key porque crea un índice en el esquema SYSIBM que hace que el proceso de autoservicio de UCD Actualizar aplicación OMS falle y fuerza el descarte manual de la clave primaria para eliminar el índice. El tipo de dato Key no es necesario ya que <PrimaryKey> consigue el mismo resultado sin crear el índice no deseado.
CompressionSupported
Opcional. Atributo que se utiliza para indicar si se permite la compresión de datos para esta columna. Los 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. Los 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. Los 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.
Nota: Si se especifica ColumnName utilizando un juego de caracteres no ASCII, este atributo es necesario.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.
Nombre
Obligatorio. Nombre de la clase de base de datos.
Entity/PrimaryKey
Nombre
Nombre del índice exclusivo creado para la clave primaria.
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. Los 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 personalizada.
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 padre y ForeignKey . - La relación definida bajo el elemento ForeignKey indica que:
- Si la tabla externa es una tabla de la base de datos de la aplicación, para un solo registro de la tabla externa pueden existir cero o muchos registros en esta tabla personalizada.
- 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 personalizada.
- La relación definida bajo el elemento Parent indica:
- Para un solo registro de la tabla padre pueden existir varios registros hijo.
- La supresión de un registro de la tabla padre da como resultado la supresión de los registros coincidentes de la tabla hijo, si hay alguno.
- Amplíe las plantillas de API correspondientes (por ejemplo, API de getOrderDetails()) siguiendo las instrucciones de Ampliación de plantillas de API.Nota: Las API generadas por la aplicación para las tablas personalizadas se pueden invocar como un servicio y a través de un componente derivador multiAPI .
- Compile y despliegue las ampliaciones.