Léame de Microsoft Repository 2.0

(c) 1998 Microsoft Corporation. Reservados todos los derechos.

El Léame de Repository incluye información actualizada acerca de la documentación que se proporciona con el sistema de desarrollo para Windows e Internet Microsoft(r) Visual Studio. La información de este documento está más actualizada que la información del sistema de Ayuda. Muchos de los problemas que se tratan en este documento se corregirán en versiones posteriores.

Para cuestiones de información general sobre el conjunto de productos Visual Studio 6.0, incluida la instalación conjunta de productos, consulte el archivo Léame de Notas de instalación (install.htm).

Para las demás cuestiones sobre el sistema de Ayuda del conjunto de productos Visual Studio, consulte el archivo Léame de MSDN™ Microsoft Developer Network.

Contenido

Introducción a Repository
Instalación

Importante:   Esta sección contiene información vital acerca de la instalación de Repository 2.0. Lea atentamente todos los apartados antes de comenzar la instalación.

Notas de instalación de Repository

Archivos de Repository en el disco duro

Características de Repository 2.0
Limitaciones y más información


Introducción a Repository


¿Qué es Microsoft Repository?

Microsoft Repository es una tecnología que permite definir y llenar modelos de información. La utilizan las herramientas de desarrollo de ingeniería y software para compartir información sobre artefactos de ingeniería. Los artefactos de ingeniería pueden ser componentes de software, componentes industriales, documentos, mapas, páginas Web (cualquier información con una estructura compleja que se desee compartir). Microsoft Repository almacena los datos de depósito en una base de datos relacional. Es compatible con dos sistemas de administración de bases de datos: Microsoft(r) SQL Server versión 6.5 o posterior y el motor de bases de datos Microsoft Jet versión 3.0 o posterior.

Lo nuevo en Microsoft Repository 2.0

Microsoft Repository 2.0 contiene mejoras significativas en las áreas de administración de versiones y desarrollo en equipo, mientras que se mantiene la compatibilidad con las anteriores interfaces de Microsoft Repository 1.0.

Las principales áreas de nueva funcionalidad son:


Información importante para los clientes de la versión 2.0

Los usuarios deberían tener en cuenta lo siguiente:

 


Instalación

Notas de instalación de Repository

Microsoft Repository se instala durante una instalación de Visual Basic.

Microsoft Repository necesita que se instale el componente de acceso a datos. De manera predeterminada, el componente Data Access se instala durante una instalación de Visual Basic. Sin embargo, si elige no instalar el componente de acceso a datos y, después, instala una herramienta de terceros que utiliza Microsoft Repository, se producirá el error siguiente al iniciar Visual Basic 98:

"Error al abrir la base de datos de Microsoft Repository. El controlador especificado no se ha podido cargar debido a un error 126 del sistema (controlador de Microsoft Access (*.MDB)). El complemento de Microsoft Repository para Visual Basic se cierra."

Para corregir este problema, instale el componente Data Access.


Archivos de Repository en el disco duro

Los archivos siguientes se agregarán al directorio SYSTEM (o SYSTEM32) de Windows:

Los siguientes archivos se agregarán al directorio "Archivos de programa\Archivos comunes\Microsoft Shared\Repostry":

Los siguientes archivos se agregarán al directorio "Archivos de programa\Archivos comunes\Microsoft Shared\Repostry\infoMdl":

Los archivos siguientes se agregarán al directorio de Visual Basic:


Características de Repository 2.0

Diferencias entre Repository 1.0 y Repository 2.0

Uso de Repository 1.0

Si la base de datos del depósito se ha creado mediante el motor de Repository 1.0 y se ha utilizado para la creación, el llenado y la recuperación del modelo de información sólo mediante este motor, habrá algunas diferencias cuando ejecute la misma aplicación con el motor de Repository 2.0. Las diferencias surgen del tratamiento de las relaciones, como se enumera a continuación:

Utilización en modo mixto de Repository 1.0 y Repository 2.0

Es concebible que una aplicación de Repository 1.0 se pueda ejecutar en el motor de Repository 2.0, en la que las operaciones de versiones se realizan mediante otras aplicaciones sobre el mismo depósito. El motor del curso tiene que respetar la semántica de las versiones, y algunas reglas semánticas serán necesariamente visibles para la aplicación que no tiene control de versiones. Una aplicación de Repository 1.0 solamente puede ver estos efectos al funcionar sobre una base de datos de depósito en la cual las aplicaciones de Repository 2.0 realizan operaciones de versiones y áreas de trabajo. Estos efectos no surgen cuando todas las aplicaciones que actúan sobre la base de datos del depósito siguen la semántica de Repository 1.0. Además de los efectos mencionados anteriormente, pueden surgir los siguientes:

Tablas SQL

Varios

La tabla siguiente muestra otras diferencias entre Repository 1.0 y Repository 2.0.

Descripción Motor V1 Motor V2
IRepositoryItem::get_Item() Un índice entero fuera de intervalo devuelve EREP_BADPARAMS. Un índice entero fuera de intervalo devuelve DISP_E_BADINDEX.
IRelationshipCol::Insert()

ITargetObjectCol::Insert()

La inserción se anexa a la colección si la colección no está ordenada. Error en la inserción con las colecciones no ordenadas (EREP_COL_NOT-SEQUENCED) y las colecciones de destino (EREP_RELSHIP_ORGONLY).
IRelationshipCol::Move()

ITargetObjectCol::Move()

Error EREP_RELSHIP_ ORGONLY para colecciones no ordenadas y de destino. Error EREP_COL_NOT-SEQUENCED para colecciones no ordenadas, y EREP_RELSHIP_ ORGONLY para colecciones de destino.
IRepositoryObjectVersion::put_Name() El error EREP_OBJ_NO-NAMING-RELSHIP no se agrega a la cola de errores. El error REP_OBJ_NONAMING-RELSHIP se agrega a la cola de errores.
Colecciones de nombres únicos: elemento B con nombre "B" se agrega varias veces a una colección de nombres únicos El código de error es EREP_RELSHIP_DUPENAME. El código de error es EREP_RELSHIP_EXISTS.
IRepositoryItem::get_Name() Se completa con éxito sobre una relación sin nombre (devuelve "0"). Produce un error.
IRelationshipCol::get_Item()

ITargetObjectCol:: get_Item()

El argumento puede ser INTID, OBJID, Index o Name. El argumento puede ser OBJID, Index o Name.
ExecuteQuery() sobre SQL Server Comprueba la columna INTID en el conjunto de resultados. Acepta más de un INTID siempre que sea posible una conversión implícita.
Actualizar sobre una colección de instancias de objetos Actualiza las propiedades y después los objetos. Actualiza los objetos y después las propiedades.

 

Funcionamiento asíncrono

La carga de colecciones de objetos en respuesta a IRepositoryODBC::ExecuteQuery() puede ser asíncrona. El subproceso que llama debe comprobar si la carga está completa. Si el subproceso que llama intenta leer datos, actualiza la colección o construye un enumerador mientras la carga está en curso, se bloqueará hasta que la carga esté completa.

Indicadores
RODBC_RESET_OPTIONS = 1  // Restablecer todas las opciones
RODBC_ASYNCH = 2         // Ejecución de consulta asíncrona
READY = 1                // Carga completa
INPROGRESS = 2           // Carga en curso
CANCELLED = 3            // Carga cancelada (por el solicitante)
FAILED = 4               // Error en la carga (motivo desconocido)
Interfaces nuevas

Métodos adicionales:

  • LoadStatus: obtiene el estado de carga de la colección.
Firma
HRESULT LoadStatus(long *piEstado)                   // Automatización
HRESULT get_LoadStatus(long *piEstado           // COM
Argumentos
Valor devuelto
  • Cancel: solicita la cancelación de la operación de carga en curso.
Firma

HRESULT Cancel()

Valor devuelto
S_OK.

Métodos adicionales:

  • GetOption: obtiene el valor de la opción de carga.
Firma

HRESULT GetOption(long iOpción, VARIANT *psValor)

Argumentos
iOpción 
[in]
RODBC_ASYNCH.
 
psValor
[out, retval]
VARIANT_TRUE o VARIANT_FALSE, según si se estableció o no la opción RODBC_ASYNCH.
 
Valor devuelto
S_OK si se ha realizado con éxito, EREP_BADPARAMS si se especificó cualquier otra opción.
  • SetOption: Establece la opción de carga de la colección. El indicador asíncrono se puede establecer si y sólo si el sistema de base de datos subyacente admite el funcionamiento asíncrono.
  • Firma
    HRESULT SetOption(long iOpción, VARIANT sValor)
    Argumentos de entrada
    iOpción RODBC_ASYNCH y sValor TRUE establecen el modo asíncrono de la carga.
    iOpción RODBC_ASYNCH y sValor FALSE desactivan el modo asíncrono.
    iOpción RODBC_RESET_OPTIONS restablece el modo asíncrono de la carga.
    Valor devuelto

    S_OK si se realiza con éxito, EREP_TYPE_COLMISMATCH si se especifica un valor distinto de TRUE o FALSE en sValor cuando iOpción es RODBC_ASYNCH.

    Otros cambios

     

    Tipos de SQL y API que se utilizan en las definiciones de propiedades

    Las dos tablas siguientes muestran los tipos de API que reconoce el motor de Repository, así como los tipos de SQL. Estos valores aparecen en las propiedades APIType y SQLType de un objeto PropertyDef. Para obtener información acerca de la conversión entre tipos de SQL y API, consulte la Referencia al programador de ODBC.

    TIPOS DE API RECONOCIDOS POR EL MOTOR
    TIPO DE API

    VALOR

    SQL_C_UTINYINT

    -28

    SQL_C_STINYINT

    -26

    SQL_C_ULONG

    -18

    SQL_C_USHORT

    -17

    SQL_C_SLONG

    -16

    SQL_C_SSHORT

    -15

    SQL_C_BINARY

    -2

    SQL_C_TINYINT

    -6

    SQL_C_BIT

    -7

    SQL_C_CHAR

    1

    SQL_C_LONG

    4

    SQL_C_SHORT

    5

    SQL_C_FLOAT

    7

    SQL_C_DOUBLE

    8

    SQL_C_DATE

    9

    SQL_C_TIME

    10

    SQL_C_TIMESTAMP

    11

     

    TIPO DE SQL

    VALOR

    SQL_LONGVARCHAR

    -1

    SQL_BINARY

    -2

    SQL_VARBINARY

    -3

    SQL_LONGVARBINARY

    -4

    SQL_BIGINT

    -5

    SQL_TINYINT

    -6

    SQL_BIT

    -7

    SQL_CHAR

    1

    SQL_NUMERIC

    2

    SQL_DECIMAL

    3

    SQL_INTEGER

    4

    SQL_SMALLINT

    5

    SQL_FLOAT

    6

    SQL_REAL

    7

    SQL_DOUBLE

    8

    SQL_DATETIME

    9

    SQL_TIME

    10

    SQL_TIMESTAMP

    11

    SQL_VARCHAR

    12

     

    Características nuevas

    Propiedades

    Se han agregado dos nuevas propiedades a la interfaz IRepository2 para indicar la versión del archivo de base de datos.

    Firma
    HRESULT MajorDBVersion(long *piVersiónPralBD)             // Automatización
    HRESULT get_MajorDBVersion( long *piVersiónPralBD)      // COM
    Argumentos
    piVersiónPralBD
    [out, retval]
    El número de versión principal de la primera versión del motor de Repository que presentó este formato de base de datos.
    Firma
    HRESULT MinorDBVersion(long *piVersiónSecundariaBD)             // Automatización
    HRESULT get_MinorDBVersion( long *piVersiónSecundariaBD)      // COM
    Argumentos
    piVersiónSecundariaBD
    [out, retval]
    El número de versión secundaria de la primera versión del motor de Repository que presentó este formato de base de datos.
    Métodos

    Se agregó un método nuevo CreateObjectEx() a la interfaz de IRepository2. Crea la primera versión de un nuevo objeto de Repository del tipo especificado. A la versión recién creada se le asigna el identificador de versión del objeto que se ha pasado como argumento, a diferencia de IRepository::CreateObject(), en donde Repository asigna el Id. de versión. Tiene la siguiente sintaxis:

    Firma
    HRESULT IRepository2::CreateObjectEx(
    VARIANT IdTipo,
    VARIANT IdObjeto,
    VARIANT IdVersiónExt,
    IRepositoryObjectVersion **ppVersiónObjetoRep);
    Argumentos
    IdTipo
    [in]
    Hace lo mismo que IRepository::CreateObject
     
    IdObjeto
    [in]
    Hace lo mismo que IRepository::CreateObject 
     
    IdVersiónExt
    [in]
    Éste es el identificador de la versión del objeto (20 bytes) que se va a asignar a la primera versión del objeto
     
    ppVersiónObjetoRep
    [out]
    Éste es el puntero IRepositoryObjectVersion hacia la versión recién creada

     

    Limitaciones conocidas de Microsoft Repository 2.0

    1. Limitaciones relacionadas con las interfaces y métodos asociados

    IRepositoryObjectVersion

    IRelationshipCol y ITargetObjectCol

    IVersionAdminInfo

    IRepository2

    IClassDef e IInterfaceDef

     

    2. Constantes de Repository

    En la documentación de Repository, se menciona que la longitud máxima, en bytes, del nombre que una relación asigna a su objeto de destino es 260, como se define en la constante RELSHIPNAMESIZE. Este valor es realmente 249.

     

    3. Convenciones para nombres

    Los nombres de relaciones y objetos deben seguir estas convenciones:

    1. Los nombres no pueden tener más de 249 caracteres.
    2. Se puede utilizar cualquier carácter en un nombre.
    3. El nombre puede contener espacios en blanco al principio o en medio. También puede ser una cadena vacía.
    4. Si el nombre es todo espacios en blanco, se trata como una cadena vacía.

    Esto se aplica a los nombres que se utilizan entre comillas o se almacenan en variables. Por ejemplo, la interfaz "ICarpeta" siguiente debe cumplir estas restricciones:

    oFolder("ICarpeta").FolderName

            -o bien-

    oFolder(sICarpeta).FolderName

           where: sICarpeta = "ICarpeta"

    Sin embargo, las normas no son para los nombres que se especifican fuera de comillas (como los nombres de propiedad o los nombres de relación). Por ejemplo, la colección de relaciones "RcCarpetaContiene" below:

    oFolder("IFolder").RcFolderContains.Count

    se debe ajustar a las normas de nombres de Microsoft Visual Basic, excepto en el límite que es de 127 caracteres en lugar de los 255 caracteres que permite Visual Basic.

     

    4. Procedimientos almacenados

    El nombre del procedimiento almacenado de una tabla se genera precediendo al nombre de la tabla con la cadena "R_i". Puesto que los nombres de tabla son únicos, así se generarán nombres de procedimiento almacenado únicos. Sin embargo, si la longitud del nombre de la tabla es mayor que MaxIdentifierLength-3, al algoritmo de generación de nombre de la tabla produce un error. Por esta razón, un usuario no puede proporcionar un nombre de tabla con una longitud mayor que MaxIdentifierLength-3. Si se proporciona un nombre más largo se produce el error EREP_BADNAME.

    Cuando el usuario no proporciona ningún nombre de tabla para una interfaz, el motor genera automáticamente el nombre de tabla a partir del nombre de la interfaz. Si el nombre de la interfaz, sin la letra "I" inicial, es menor que MaxIdentifierLength-4, el nombre de la interfaz se utilizará como nombre de tabla. En cualquier otro caso, el nombre de la interfaz se trunca a MaxIdentifierLength-7, y se agrega al nombre un número de 4 caracteres (denominado "uniquificador") para hacerlo único, antes de anexar el prefijo R_i.

    El motor utiliza argumentos con nombre para llamar a los procedimientos almacenados. Un argumento con nombre comienza con el carácter "@" y no puede tener una longitud mayor que MaxIdentifierLength. De esta manera, los nombres de propiedad, que también son nombres de columna, no pueden tener una longitud mayor que MaxIdentifierLength-1.

    Los valores de MaxIdentifierLength son:

     

    5. Definiciones de tablas

    Las tablas siguientes no se incluyen en el archivo de ayuda de Repository:

    • RTblSumInfo
    • RTblNamedObj
    • RTblVersionAdminInfo

    Estas tablas se explican junto con los nombres de columna y los tipos de datos.

     

    RTblSumInfo

    RTblSumInfo es una tabla específica de interfaz; sus columnas corresponden a las propiedades expuestas mediante la interfaz ISummaryInformation. De manera predeterminada, ninguna clase del Modelo de información de tipos de Repository implementa ISummaryInformation. Por lo tanto la base de datos de Repository no incluye de manera predeterminada la tabla RTblSumInfo. Repository omite la tabla de la base de datos para ahorrar espacio. Sin embargo, tan pronto como inserte en Repository cualquier clase que implemente ISummaryInformation, Repository creará la tabla.

    Nombre de columna Tipo de dato Descripción
    IntID RTIntID Identificador interno de la clase.
    Z_BranchID_Z RTBrID Indica la bifurcación del gráfico de versión que contiene el intervalo de elementos a los que se van a aplicar los valores de propiedad de esta fila.
    Z_VS_Z RTVerID Identificador de versión en bifurcación que indica el límite inferior del intervalo de elementos a los que se van a aplicar los valores de propiedad de esta fila.
    Z_VE_Z RTVerID Identificador de versión en bifurcación que indica el límite superior del intervalo de elementos a los que se van a aplicar los valores de propiedad de esta fila.
    Comments RTLongString Campo que se utiliza para comentarios.
    ShortDesc RTLongString Descripción del objeto.

     

    RTblNamedObj

    RTblNamedObj es una tabla específica de interfaz; sus columnas corresponden a las propiedades expuestas mediante la interfaz INamedObject. De manera predeterminada, ninguna clase del Modelo de información de tipos de Repository implementa INamedObject. Por lo tanto la base de datos de Repository no incluye de manera predeterminada la tabla RTblNamedObj. Repository omite la tabla de la base de datos para ahorrar espacio. Sin embargo, tan pronto como inserte en Repository cualquier clase que implemente INamedObject, Repository creará la tabla.

    Nombre de columna Tipo de datos Descripción
    IntID RTIntID Identificador interno de la clase.
    Z_BranchID_Z RTBrID Indica la bifurcación del gráfico de versión que contiene el intervalo de elementos a los que se van a aplicar los valores de propiedad de esta fila.
    Z_VS_Z RTVerID Número de versión en bifurcación que indica el límite inferior del intervalo de elementos a los que se van a aplicar los valores de propiedad de esta fila.
    Z_VE_Z RTVerID Número de versión en bifurcación que indica el límite superior del intervalo de elementos a los que se van a aplicar los valores de propiedad de esta fila.
    Name RTLongString Nombre del objeto.

     

    RTblVersionAdminInfo

    RTblVersionAdminInfo es una tabla específica de interfaz; sus columnas corresponden a las propiedades expuestas mediante la interfaz IVersionAdminInfo. De manera predeterminada, ninguna clase del Modelo de información de tipos de Repository implementa IVersionAdminInfo. Por lo tanto la base de datos de Repository no incluye de manera predeterminada la tabla RTblVersionAdminInfo. Repository omite la tabla de la base de datos para ahorrar espacio. Sin embargo, tan pronto como inserte en Repository cualquier clase que implemente IVersionAdminInfo, Repository creará la tabla.

    Nombre de columna Tipo de dato Descripción
    IntID RTIntID Identificador interno de la clase.
    Z_BranchID_Z RTBrID Indica la bifurcación del gráfico de versión que contiene el intervalo de elementos a los que se van a aplicar los valores de propiedad de esta fila.
    Z_VS_Z RTVerID Identificador de versión en bifurcación que indica el límite inferior del intervalo de elementos a los que se van a aplicar los valores de propiedad de esta fila.
    Z_VE_Z RTVerID Identificador de versión en bifurcación que indica el límite superior del intervalo de elementos a los que se van a aplicar los valores de propiedad de esta fila.
    VersionCreateTime Date/Time Hora en que se creó la versión.
    VersionModifyTime Date/Time Hora en que se modificó la versión.
    CreateByUser RTLongString Usuario que creó la versión.
    ModifyByUser RTLongString Usuario que modificó la versión.

     

    6. Otras limitaciones

    • El Asistente para migración (MigRepV2.exe), el Explorador de depósito (Repbrows.exe) y el Administrador de componentes visuales (VCM) no son compatibles con archivos DSN (Nombres de orígenes de datos). Estas herramientas sólo funcionan con un DSN de tipo Access o SQL Server.
    • En el Asistente para migración, si trabaja con un DSN de tipo SQL Server, se le pedirá que escriba un nombre y una contraseña a menos que el DSN está configurado para utilizar la opción de autenticación de Windows NT (en el Administrador de orígenes de datos ODBC).
    • En el tema "Ejemplos de combinación de versiones," hay una imprecisión en el segundo gráfico. Las propiedades de la versión V8 podrían cambiar tras la combinación, de (Grande, rojo, null) a (Medio, rojo, null).
    • La documentación de la lista de CollectionDefFlags no mencionaba el siguiente indicador:

      COLLECTION_NEWORGVERSIONSDONOTPARTICIPATE = 64

      Este indicador está relacionado con otro indicador de la misma enumeración:

      COLLECTION_NEWORGVERSIONSPARTICIPATE = 32

    Los dos indicadores tienen significados opuestos. Por lo tanto, no se pueden activar al mismo tiempo. Sin embargo, puesto que la configuración predeterminada de cada uno de ellos es no establecido, es posible que ambos indicadores estén no activados al mismo tiempo. Si ambos indicadores están no activados, el depósito funciona como si estuviese activado el indicador COLLECTION_NEWORGVERSIONSPARTICIPATE. Es decir, durante la creación de una nueva versión de un objeto de depósito, Microsoft Repository no copia colecciones origen nuevas desde una versión creada anteriormente a una versión posterior.

     

    Para obtener más información

    Puede dirigirse a los siguientes orígenes para obtener más información sobre Microsoft Repository:

    • Compruebe las noticias más recientes del sitio Web de Microsoft Repository (http://www.microsoft.com/repository). También puede descargar la documentación de Repository desde este sitio.
    • En la documentación de Microsoft Visual Studio 6.0, encontrará Guía del programador de Repository para Visual Basic, Referencia del complemento Repository, Explorador de Repository y Convertir bases de datos de Repository 1.0. Para localizar estos documentos comience en la parte superior y siga esta ruta de acceso:

      MSDN Library de Visual Studio 6.0
          Documentación de Visual Studio
              Herramientas de componentes, diseño y anális
                   Documentos de Microsoft Repository 2.0

    • En la documentación de Microsoft Visual Basic 6.0, encontrará la Guía del programador de Repository para Visual Basic y Referencia del complemento Repository. Para localizar estos documentos comience en la parte superior y siga esta ruta:

      MSDN Library de Visual Studio 6.0
          Documentación de Visual Basic
              Uso de Repository con Visual Basic