IBM Content Manager, Versión 8.5      Soporta:  Oracle, DB2, C++, Java

Creación de un elemento

Un elemento es el árbol completo de los DDO de componente, con al menos un componente raíz.

Un elemento o DDO debe tener asociada una propiedad de tipo genérico. Este tipo genérico del DDO es un documento, carpeta o elemento. Cuando se crean elementos, la propiedad item se especifica en el segundo parámetro de la función createDDO del almacén de datos, entremezclada con el tipo semántico. Se envía un solo valor, pero los valores de la propiedad item y del tipo semántico se derivan y se establecen en el DDO de forma separada. Los tipos de la propiedad item son un subconjunto de los tipos semánticos. Este valor se almacena en la propiedad DK_CM_PROPERTY_ITEM_TYPE del DDO. No confunda esta propiedad con la definición de tipo de elemento global que describe la estructura de este elemento. PROPERTY_ITEM_TYPE hace referencia a la propiedad item, no a la definición de tipo de elemento que describe completamente los valores y estructura del elemento.

La tabla siguiente muestra una lista de tipos de propiedad de elemento disponibles.

Tabla 1. Definiciones de propiedad de tipo de elemento
Tipo de propiedad Constante Definición
Documento DK_CM_DOCUMENT El elemento representa un documento o datos almacenados. La información contenida en este elemento puede formar un documento. Este elemento se puede considerar un documento común, porque no cumple estrictamente una implementación de un modelo de documento específico. El establecimiento de un tipo de documento no significa necesariamente un documento con partes que utilizan el modelo de documento de IBM® Content Manager Versión 8 que, en su lugar, está controlado por la clasificación "documento" en la definición de tipo de elemento.
Carpeta DK_CM_FOLDER El elemento representa una carpeta que puede contener otros elementos. Este elemento representa una colección DKFolder incorporada que puede incluir contenidos de carpeta que establezcan enlaces de carpeta con otros elementos. Se añade automáticamente una colección DKFolder vacía. Todos los elementos que tengan este valor pueden utilizar el mecanismo DKFolder. Sin embargo, este valor no implica necesariamente que una solución utilice el mecanismo DKFolder; puede implementar en su lugar su propia solución de carpetas. Este valor se corresponde con cualquier interpretación de una carpeta, pero el DKFolder incorporado está disponible para dichos elementos.
Consejo: Puede crear enlaces distintos a los de carpeta y referencias de elementos de cualquier tipo semántico o tipo de propiedad de elemento.
Item (valor predeterminado) DK_CM_ITEM Elemento genérico. Este es el tipo de propiedad de elemento para todos los tipos semánticos distintos de un documento o carpeta.

Los elementos se crean como DKDDO. Utilice siempre los métodos createDDO() del objeto DKDatastoreICM para crear objetos DKDDO puesto que el sistema utiliza el createDDO del objeto DKDatastoreICM para configurar automáticamente información importante en la estructura DKDDO. No se recomiendan los constructores DDO. Para crear instancias DKDDO (o subclases) se recomienda utilizar los distintos métodos DKDatastoreICM::createDDO(). No se recomienda la utilización de cualquier medio de instancializar un DDO o la creación de una nueva instancia de DDO desde una clase de DDO para crear los DDO. Los métodos createDDO() crean instancias con la subclase correcta y establecen cualquier otra información necesaria dentro de los DDO para que funcionen correctamente con otras operaciones.

Cuando se crean elementos, puede especificarse un tipo semántico en el segundo parámetro de la función createDDO del almacén de datos. Un tipo semántico es, en general, una metáfora de un elemento. Los tipos semánticos son principalmente una característica para su utilización por aplicaciones y no se refuerza típicamente o es especialmente significativo en el servidor IBM Content Manager. Los tipos semánticos dan a los elementos una característica aplicable para algunas operaciones básicas y proporcionan a las aplicaciones la capacidad de aplicar un tipo semántico. Allí donde sea aplicable, los tipos semánticos se refuerzan dentro de IBM Content Manager, pero principalmente el único tipo semántico que tiene algún significado, validación o refuerzo es FOLDER.

Recuerde: No dependa de valores de tipo semántico si su aplicación lee elementos creados por otras aplicaciones o herramientas porque el significado y refuerzo puede variar de una aplicación a otra. Por ejemplo, no dependa de los distintos tipos semánticos de parte porque las partes pueden tener cualquier valor de tipo semántico. En su lugar, dependa en primer lugar del tipo de objeto del PID, que identifica el tipo exacto de elemento o puede recuperar la definición para conseguir información adicional, por ejemplo la clasificación como parte, clase XDO, etc. Puede depender del tipo semántico como una medida secundaria si no reconoce el tipo de objeto.

El valor se guarda en la propiedad DKConstantICM.DK_ICM_PROPERTY_SEMANTIC_TYPE del DDO, que podría contener el mismo valor que el tipo de propiedad del elemento. La tabla siguiente lista los tipos semánticos disponibles.

Tabla 2. Tipos semánticos predefinidos
Tipo semántico Constante Definición
Cualquiera Definido por el usuario CreateDDO asigna cualquier valor especificado al valor de tipo semántico. Dado que las aplicaciones pueden aplicar la semántica de la forma que deseen, ningún valor está prohibido excepto para los tipos de elementos clasificados como "documento" (modelo de documento).
Documento DK_ICM_SEMANTIC_TYPE _DOCUMENT El elemento representa genéricamente a un documento. El establecimiento de tipo semántico en un documento no significa necesariamente un documento con partes que utilizan el modelo de documento de IBM Content Manager V8 que, en su lugar, está controlado por la clasificación "documento" en la definición de tipo de elemento. Equivale al tipo de propiedad de elemento DK_CM_DOCUMENT.
Carpeta DK_ICM_SEMANTIC_TYPE _FOLDER El elemento representa una carpeta que puede contener otros elementos. Este elemento representa una colección DKFolder incorporada que puede incluir contenidos de carpeta que establezcan enlaces de carpeta con otros elementos. Se añade automáticamente una colección DKFolder vacía. Todos los elementos que tengan este valor pueden utilizar el mecanismo DKFolder. Sin embargo, este valor no implica necesariamente que una solución utilice el mecanismo DKFolder y puede implementar en su lugar su propia solución de carpetas. Este valor se corresponde con cualquier interpretación de una carpeta, pero el DKFolder incorporado está disponible para dichos elementos. Puede crear enlaces distintos a los de carpeta y referencias de elementos de cualquier tipo semántico o tipo de propiedad de elemento. Equivale al tipo de propiedad de elemento DK_CM_FOLDER.
Contenedor DK_ICM_SEMANTIC_TYPE _CONTAINER El elemento representa un elemento o contenedor genéricos. Equivale al tipo de propiedad de elemento DK_CM_ITEM. Las soluciones pueden implementar una relación de contenido a través de cualquier solución que elijan excepto mediante el mecanismo DKFolder integrado (enlaces de carpeta). Puede utilizar enlaces de cualquier otro tipo, atributos de referencia o cualquier solución personalizada de su elección.
Base DK_ICM_SEMANTIC_TYPE _BASE La parte más parecida a una parte de documento de tipo "BASE" para utilizar en el modelo de documento incorporado donde las partes se crean y añaden para constituir un documento. Sin embargo, únicamente con este valor no se constituye o identifica una parte BASE. Este valor no se valida o fuerza. El tipo de elemento de la parte (identificado por el tipo de objeto del PID para el DDO de la parte) es lo que define esta parte como una parte BASE. Las partes BASE pueden crearse con cualquier tipo semántico que se desee. Defina las partes BASE con este tipo semántico, pero para detectar tipos de parte utilice antes el tipo de objeto del PID. Utilice este valor, si ha creado tipos de elemento de parte personalizados, para que otras aplicaciones que no conozcan su tipo de parte personalizado puedan asociarlo al tipo de parte más similar que entiendan.
BaseText DK_ICM_SEMANTIC_TYPE_BASETEXT Lo mismo que BASE (Vea la documentación de "Base" para más detalles) y lo que más se asemeja a "BASETEXT".
BaseStream DK_ICM_SEMANTIC_TYPE_BASESTREAM Lo mismo que BASE (Vea la documentación de "Base" para más detalles) y lo que más se asemeja a "BASETSTREAM".
Anotación DK_ICM_SEMANTIC_TYPE _ANNOTATION Lo mismo que BASE (Vea la documentación de "Base" para más detalles) y lo que más se asemeja a "ANNOTATION".
Archivo histórico DK_ICM_SEMANTIC_TYPE _HISTORY Lo mismo que BASE (Vea la documentación de "Base" para más detalles) y lo que más se asemeja a "HISTORY".
Nota DK_ICM_SEMANTIC_TYPE _NOTE Lo mismo que BASE (Vea la documentación de "Base" para más detalles) y lo que más se asemeja a "NOTE".
Definido por el usuario Definido por el usuario Tipo semántico definido por el usuario. Consulte los Ejemplos de tipo semántico para obtener más información.

En Java™, las constantes están definidas en DKConstantICM.java. En C++, las constantes están definidas en DKConstantICM.h..

Cuando cree un elemento, debe crear también los componentes hijo que lo forman, si los hay.

  1. Utilizando los métodos createDDO y createChildDDO del servidor de contenido, cree un DDO de elemento y defina todos sus atributos y otra información necesaria. Este ejemplo utiliza un objeto DKDatastoreICM conectado denominado dsICM.
  2. Cree un componente raíz.
    Java Ejemplo 1
    DKDDO myDocumentDDO = dsICM.createDDO("EmployeeDoc",
       DKConstantICM.DK_CM_DOCUMENT);
    Java Ejemplo 2
    DKDDO myFolderDDO   = dsICM.createDDO("DeptFolder",
       DKConstantICM.DK_CM_FOLDER);
    Ejemplo 1 para C++
    DKDDO* myDocumentDDO = dsICM->createDDO("EmployeeDoc",DK_CM_DOCUMENT);
    Ejemplo 2 para C++
    DKDDO* myFolderDDO = dsICM->createDDO("DeptFolder",DK_CM_FOLDER);
  3. Cree un componente hijo bajo el componente raíz "EmployeeDoc", por ejemplo, "Dependent".
    Java
    DKDDO myDDO =dsICM.createChildDDO("EmployeeDoc","Dependent");
    C++
    DKDDO* myDDO = dsICM.createChildDDO("EmployeeDoc","Dependent");
  4. Añada el componente hijo al padre.
    Java
    short dataid = myDocumentDDO.dataId(DK_CM_NAMESPACE_CHILD,"Dependent");
    DKChildCollection children = 
      (DKChildCollection) myDocumentDDO.getData(dataid);
    children.addElement(myDDO);
    C++
    short dataid = myDocumentDDO->dataId(DK_CM_NAMESPACE_CHILD,"Dependent");
    DKChildCollection* children = 
      (DKChildCollection*)(dkCollection*)
    myDocumentDDO->getData(dataid);
    children->addElement(myDDO);
  5. Utilice el método setData para llenar el DDO con los valores apropiados.
    Java
    myDDO.setData(.....);
    C++
    myDDO->setData(.....);
  6. Guarde el elemento en el almacén persistente.
    Java
    myDocumentDDO.add();
    C++
    myDocumentDDO->add();

En el ejemplo anterior, el último paso ha creado un documento en el servidor de contenido. Cuando se añade un DDO de documento a un servidor de contenido, se añaden todos sus atributos, incluidas todas las partes contenidas en la colección DKParts. Cuando se añade un DDO de documento a un servidor de contenido, se añaden todos sus atributos, incluidos todos los hijos y todas las partes contenidas en la colección DKParts.

Si crea un elemento en un tipo de elemento que se ha definido como tipo de elemento de recurso, se devuelve el XDO correcto. Para obtener más información sobre recursos, consulte el ejemplo SResourceItemCreationICM. Puede también serle útil repasar la información sobre creación de elementos contenida en el ejemplo SItemCreationICM.



Comentarios

Última actualización: Diciembre de 2013
dcmcm014.htm

© Copyright IBM Corp. 2013.