Some useful links on SDO:
1. Quick intro ( http://www.obalweb.net/wppro/?p=19 )
2. SDO for Zend Conf 2005 ( http://www.ibm.com/developerworks/forums/weblogs/data/SDOforZendConf2005.pdf ), Presentation, [481 KB], Graham Charters, 2005-10-18
3. Introducing Service Data Objects for PHP ( http://www.zend.com/pecl/tutorials/sdo.php ), 2005-08-05
4. Service Data Objects specification ( http://www.ibm.com/developerworks/library/specification/j-commonj-sdowmt/ ), 2003-2005
HTH,
R. Rajesh Jeba Anbiah
Funciones de SDO
Servicios de Acceso a Datos
La tabla de abajo enumera los Servicios de Acceso a Datos (DAS) de SDO proporcionados actualmente:
| Nombre del DAS | Descripción |
|---|---|
| SDO_DAS_XML | Un Servicio de Acceso a Datos XML que admite la lectura/escritura de SDOs como documentos XML. |
| SDO_DAS_Relational | Un Servicio de Acceso a Datos basado en PDO que admite la lectura/escritura de SDOs de bases de datos relacionales. Implementa una política de concurrencia optimista para actualizaciones. |
Clases predefinidas
SDO consiste en tres conjuntos de interfaces. El primer conjunto cubre aquellas interfaces usadas por las aplicaciones SDO típicas. Están identificadas por el prefijo de paquete 'SDO_'. El segundo conjunto son aquellas usadas para reflejar, y trabajar con, el modelo de un objeto de datos. Están identificadas por el prefijo de paquete 'SDO_Model_'. Finalmente, el tercer conunto son aquellas usadas por las implementaciones de Servicio de Acceso a Datos y están identificadas por el prefijo de paquete 'SDO_DAS_'. La mayoría de los usuarios de SDO no necesitarán usar o comprender las interfaces 'SDO_Model_' y 'SDO_DAS_'.
Interfaz del Programador de Aplicaciones SDO
SDO_DataObject
Es la interfaz principal a través de la cual se manipulan los objetos de datos. Además de los métodos de abajo, SDO_DataObject amplía las interfaces ArrayAccess, SDO_PropertyAccess (define los métodos __get() / __set() para la sobrecarga de acceso a propiedades), Iterator, y Countable.
Métodos
-
getSequence - obtener la secuencia para el objeto de datos
-
createDataObject - crear un objeto de datos hijo
-
clear - desestablecer las propiedades de un objeto de datos
-
getContainer - obtener el contenedor (también conocido como 'padre') de este objeto de datos
-
getTypeName - obtener el nombre del tipo de este objeto de datos
-
getTypeNamespaceURI - obtener el URI del espacio de nombres del tipo de este objeto de datos
SDO_Sequence
Es la interfaz a través de la cual se puede acceder a los objetos de datos para mantener el orden de las propiedades de los objetos de datos y permitir texto no estructurado. SDO_Sequence mantiene los índices contiguos y, por consiguiente, al insertar o eliminar elementos, puede mover otros elementos hacia arriba o hacia abajo. Además de los métodos de abajo, SDO_Sequence amplía las interfaces ArrayAccess, Iterator y Countable.
Métodos
-
getProperty - obtener la propiedad de un índice de secuencia dado
-
move - mover un elemento desde un índice de propiedad a otro
-
insert - insertar un nuevo valor en la secuencia
SDO_List
Es la interfaz a través de la cual se manipulan las propiedades polievaluadas. Además de los métodos definidos abajo, SDO_List amplía ArrayAccess, Iterator y Countable. SDO_List mantiene los índices contiguos y, por consiguiente, al insertar o eliminar elementos, puede mover otros elementos hacia arriba o hacia abajo.
Métodos
-
insert - insertar un nuevo valor en la lista
SDO_DataFactory
Es la interfaz a través de la cual se pueden crear objetos de datos. Un Servicio de Acceso a Datos es el responsable de rellenar el modelo (esto es, configurar la fábrica de datos con la información de tipo y estructura de los objetos de datos que puede crear) para la fábrica y puede opcionalmente devolver una instancia de, o implementar, la interfaz SDO_DataFactory.
Métodos
-
create - crear un nuevo objeto de datos
SDO_Exception
Una SDO_Exception es lanzada cuando no se puede completar la solicitud del llamador. Las subclases de SDO_Exception son:
-
SDO_PropertyNotSetException - la propiedad especificada existe pero no ha sido establecida o no tiene un valor predeterminado.
-
SDO_PropertyNotFoundException - la propiedad especificada no es parte del tipo de objeto de datos
-
SDO_TypeNotFoundException - el URI del espacio de nombres o el nombre del tipo es desconocido
-
SDO_InvalidConversionException - la conversión entre los tipos de la asignación no es posible
-
SDO_IndexOutOfBoundsException - el índice numérico de un objeto de datos, la secuencia o la lista no están en el rango válido
-
SDO_UnsupportedOperationException - la petición no puede ser completada debido a que no está permitida, por ejemplo, un intento de establecer una propiedad de sólo lectura.
Interfaces del Programador de Aplicaciones de Reflexión de SDO
SDO_Model_ReflectionDataObject
Es la interfaz principal usada para reflejar una instancia de un objeto de datos para obtener la informaición de su tipo de modelo y propiedades. Está diseñada para seguir el patrón de reflexión introducido en PHP 5.
Constructor
-
__construct - construir un nuevo SDO_Model_ReflectionDataObject.
Métodos
-
export - obtener un string que describe el objeto de datos.
-
getType - obtener el SDO_Model_Type del objeto de datos.
-
getInstanceProperties - obtener las propiedades de la instancia del objeto de datos.
-
getContainmentProperty - obtener la propiedad que define la relación de contención del objeto de datos.
SDO_Model_Type
Es la interfaz a través de al cual se puede recuperar la información del tipo de un objeto de datos. Esta interfaz se puede usar para averiguar el nombre del tipo y el URI del espacio de nombres del tipo, si el tipo permite contenido abierto, etc.
Métodos
-
getName - obtener el nombre del tipo.
-
getNamespaceURI - obtener el URI del espacio de nombres del tipo.
-
isInstance - comprobar que un objeto de datos es una instancia del tipo.
-
getProperties - obtener las propiedades del tipo.
-
getProperty - obtener una propiedad del tipo.
-
isDataType - comprobar si este tipo es un tipo escalar primitivo.
-
isSequencedType - comprobar si éste es un tipo secuenciado.
-
isOpenType - comprobar si éste es un tipo abierto.
-
isAbstractType - comprobar si éste es un tipo abstracto.
-
getBaseType - obtener el tipo base de este tipo (si existe uno).
SDO_Model_Property
Es la interfaz a través de la cual se puede recuperar la información de las propiedades de un objeto de datos. Esta interfaz se puede usar para averiguar el tipo de una propiedad, si una propiedad tiene un valor predeterminado, si la propiedad está contenida o hace referencia a su padre, su cardinalidad, etc.
Métodos
-
getName - obtener el nombre de la propiedad.
-
getType - obtener el tipo de la propiedad.
-
isMany - comprobar si la propiedad es polievaluada.
-
isContainment - comprobar si la propiedad describe una relación de contención.
-
getContainingType - obtener el tipo que contiene esta propiedad.
-
getDefault - obtener el valor predeterminado de una propiedad.
Interfaces del Desarrollador de Servicios de Acceso a Datos de SDO
SDO_DAS_DataObject
Es la interfaz a través de la cual un Servicio de Acceso a Datos puede acceder al SDO_DAS_ChangeSummary de un objeto de datos. El resumen de cambios es usado por el Servicio de Acceso a Datos para comprobar si hay conflictos al aplicar los cambios a una fuente de datos.
Métodos
-
getChangeSummary - obtener el resumen de cambios de un objeto de datos
SDO_DAS_ChangeSummary
Es la interfaz a través de la cual se accede al historial de cambios de un objeto de datos. El resumen de cambios contiene información de cualquier modificación hecha a un objeto de datos que suceda desde que la identificación fue activada. En el caso de eliminaciones y modificaciones, los valores antiguos también están contenidos en el resumen de cambios.
Si la identificación ya no está activa, el resumen de cambios sólo contendrá los cambios hechos hasta el punto donde la identificación fue desactivada. La reactivación de la identificación limpia el resumen de cambios. Esto es útil cuado un conjunto de cambios ha sido escrito por un DAS y el objeto de datos va a ser reusado.
Métodos
-
beginLogging - comenzar a registrar los cambios hechos en un objeto de datos
-
endLogging - finalizar de registrar los cambios hechos en un objeto de datos
-
isLogging - comprobar si el registro de cambios está activad
-
getChangedDataObjects - obtener una lista de los objetos de datos que han sido cambiados
-
getChangeType - obtener el tipo de cambio hecho a un objeto de datos
-
getOldValues - obtener una lista de los valores antiguos de un objeto de datos
-
getOldContainer - obtener el objeto de datos contenedor antiguo de un objeto de datos eliminado
SDO_DAS_Setting
Es la interfaz a través de la cual se accede al valor antiguo de una propiedad. El método de resumen de cambios getOldValues devuelve una lista.
Métodos
-
getPropertyIndex - obtener el índice de la propiedad cambiada
-
getPropertyName - obtener el nombre de la propiedad cambiada
-
getValue - obtener el valor antiguo de la propiedad cambiada
-
getListIndex - obtener el índice de la lista del valor antiguo si era parte de una propiedad polievaluada.
-
isSet - comprobar si la propiedad estaba establecida antes de ser modificada
SDO_DAS_DataFactory
Es la interfaz para contruir el modelo de un SDO_DataObject. SDO_DAS_DataFactory es una clase abstracta que proporciona un método estático que devuelve una implementación de fábrica de datos concreta. La implementación es usada por los Servicios de Acceso a Datos para crear un modelo SDO a partir de su modelo. Por ejemplo, un Servicio de Acceso a Datos Relacionales podría crear y rellenar un modelo SDO_DAS_DataFactory basado en un esquema de una base de datos relacional.
Métodos
-
getDataFactory - método estático para obtener una instancia de una fábrica de datos concreta
-
addType - añadir un nuevo tipo al modelo SDO
-
addPropertyToType - añadir una nueva propiedad a una definición de tipo en el modelo SDO
Tabla de contenidos
- SDO_DAS_ChangeSummary::beginLogging — Comenzar a registrar los cambios
- SDO_DAS_ChangeSummary::endLogging — Terminar de registrar cambios
- SDO_DAS_ChangeSummary::getChangeType — Obtener el tipo de cambio hecho a un SDO_DataObject
- SDO_DAS_ChangeSummary::getChangedDataObjects — Obtener los objetos de datos cambiados de un resumen de cambios
- SDO_DAS_ChangeSummary::getOldContainer — Obtener el contenedor antiguo de un SDO_DataObject eliminado
- SDO_DAS_ChangeSummary::getOldValues — Obtener los valores antiguos de un SDO_DataObject cambiado dado
- SDO_DAS_ChangeSummary::isLogging — Comprobar si el registro de cambios está activado
- SDO_DAS_DataFactory::addPropertyToType — Añadir una propiedad a un tipo
- SDO_DAS_DataFactory::addType — Añadir un nuevo tipo a un modelo
- SDO_DAS_DataFactory::getDataFactory — Obtener una instancia de una fábrica de datos
- SDO_DAS_DataObject::getChangeSummary — Obtener un resumen de cambios de un objeto de datos
- SDO_DAS_Setting::getListIndex — Obtener el índice de la lista de una propiedad polievaluada cambiada
- SDO_DAS_Setting::getPropertyIndex — Obtener el índice de propiedad de una propiedad cambiada
- SDO_DAS_Setting::getPropertyName — Obtener el nombre de propiedad de una propiedad cambiada
- SDO_DAS_Setting::getValue — Obtener el valor antiguo de una propiedad cambiada
- SDO_DAS_Setting::isSet — Comprobar si una propiedad estaba establecida antes de ser modificada
- SDO_DataFactory::create — Crear un SDO_DataObject
- SDO_DataObject::clear — Limpiar las propiedades de un SDO_DataObject
- SDO_DataObject::createDataObject — Crear un SDO_DataObject hijo
- SDO_DataObject::getContainer — Obtener el contenedor de un objeto de datos
- SDO_DataObject::getSequence — Obtener la secuencia de un objeto de datos
- SDO_DataObject::getTypeName — Devolver el nombre del tipo de un objeto de datos
- SDO_DataObject::getTypeNamespaceURI — Devolver el URI del espacio de nombre del tipo de un objeto de datos.
- SDO_Exception::getCause — Obtener la causa de la excepción.
- SDO_List::insert — Insertar en una lista
- SDO_Model_Property::getContainingType — Obtener el SDO_Model_Type que contiene esta propiedad
- SDO_Model_Property::getDefault — Obtener el valor predeterminado de la propiedad
- SDO_Model_Property::getName — Obtener el nombre del SDO_Model_Property
- SDO_Model_Property::getType — Obtener el SDO_Model_Type de la propiedad
- SDO_Model_Property::isContainment — Comprobar si la propiedad define una relación de contención
- SDO_Model_Property::isMany — Comprobar si la propiedad es polievaluada
- SDO_Model_ReflectionDataObject::__construct — Contruir un SDO_Model_ReflectionDataObject
- SDO_Model_ReflectionDataObject::export — Obtener una cadena que describe el SDO_DataObject.
- SDO_Model_ReflectionDataObject::getContainmentProperty — Obtener la propiedad que define la relación de contención del objeto de datos
- SDO_Model_ReflectionDataObject::getInstanceProperties — Obtener las propiedades de instancia del SDO_DataObject
- SDO_Model_ReflectionDataObject::getType — Obtener el SDO_Model_Type del SDO_DataObject
- SDO_Model_Type::getBaseType — Obtener el tipo base de este tipo
- SDO_Model_Type::getName — Obtener el nombre del tipo
- SDO_Model_Type::getNamespaceURI — Obtener el URI del espacio de nombres del tipo
- SDO_Model_Type::getProperties — Obtener los objetos SDO_Model_Property definidos en el tipo
- SDO_Model_Type::getProperty — Obtener un SDO_Model_Property del tipo
- SDO_Model_Type::isAbstractType — Comprobar si este SDO_Model_Type es un tipo de datos abstracto
- SDO_Model_Type::isDataType — Comprobar si este SDO_Model_Type es un tipo de datos primitivo
- SDO_Model_Type::isInstance — Comprobar si un SDO_DataObject es una instancia de este SDO_Model_Type
- SDO_Model_Type::isOpenType — Comprobar si este tipo es un tipo abierto
- SDO_Model_Type::isSequencedType — Comprobar si este tipo es un tipo secuenciado
- SDO_Sequence::getProperty — Devolver una propiedad para el índice de secuencia especificado.
- SDO_Sequence::insert — Insertar en una secuencia
- SDO_Sequence::move — Mover un elemento a otra posición de la secuencia
