Código de ejemplo para crear una entidad en una jerarquía y obtener los descendientes y ascendientes

Utilice el fragmento de código y los gráficos de datos de ejemplo para crear una entidad en una jerarquía y obtener los descendientes y ascendientes de una entidad utilizando el método get().

El fragmento de código y los gráficos de datos de ejemplo incluyen los pasos siguientes:

  1. Crear una jerarquía con entidades del tipo de entidad OrgContainer en la esfera predeterminada.
  2. Crear entidades hijas debajo de la jerarquía de OrgContainer.
  3. Obtener los descendientes de una entidad padre utilizando el método get() y DescendantControl.
  4. Obtener los ascendientes de una entidad hija utilizando el método get() y AscendantControl.

Requisitos previos

Asegúrese de leer la información y completar los pasos que se describen en el tema Requisitos previos de programación.

Código de ejemplo

Añada el siguiente fragmento de código al código de aplicación y sustituya las variables por los valores reales que desea utilizar.

/**
 *  testDescendantsAndAncestorsSnippet realiza lo siguiente:
 *  Crea una jerarquía de OrgContainer en la esfera predeterminada
 *  Crea usuarios hijo de esta jerarquía de OrgContainer
 *  Obtiene los descendientes de una entidad padre
 *  Obtiene el ascendiente de una entidad hija
 */
public static void testDescendantsAndAncestorsSnippet()
{
    //Crear una entidad de tipo OrgContainer
    DataObject rt = addOrgContainer("cn", "users", null);
    // Crear subentidad bajo cn=users
    DataObject rt1 = addOrgContainer("o", "SWG", rt);
    // Crear subentidad bajo o=SWG,cn=users
    DataObject rt2 = addOrgContainer("ou", "India", rt1);
    //Recuperar la entidad padre para los usuarios que se crean a continuación
    DataObject parentEntity = (DataObject) rt2.getList(SchemaConstants.DO_ENTITIES).get(0);
    //Añadir dos usuarios user1 y user2
    DataObject usr1 = addPersonAccountWithNonDefaultParent("user1","user1cn","user1sn",parentEntity);
    DataObject usr2 = addPersonAccountWithNonDefaultParent("user2","user2cn","user2sn",parentEntity);
    //Obtener los descendientes
    getDescendant();
    //Obtener los ascendientes de user1
    getAncestor(usr1);
}

/**
 * addOrgContainer añade una entrada en el padre indicado
 * @param   prefix es rdnProperty
 * @param   value es el valor de rdnProperty
 * @param   obj es el dataObject a partir del cual se identifica el padre
 * @return  DataObject	
 */
public static DataObject addOrgContainer (String prefix, String value, DataObject obj)
{
    DataObject parentEntity;
    boolean first = false; 
    try
    {
        if (obj == null) {
            obj = SDOHelper.createRootDataObject();
            first = true;
        }
        DataObject entity = SDOHelper.createEntityDataObject(obj, null, SchemaConstants.DO_ORGCONTAINER);
        if (!first) {
            // Establecer el padre de la entidad OrgContainer
            parentEntity = (DataObject) obj.getList(SchemaConstants.DO_ENTITIES).get(0);
            entity.set("parent",parentEntity);
        }
        // Establecer la propiedad OrgContainer
        entity.set(prefix, value);
        System.out.println("Input datagraph before creating OrgContainer"+ printDO(obj));
        // Crear la entidad OrgContainer
        obj = service.create(obj);
        System.out.println("Output datagraph after creating OrgContainer"+ printDO(obj));
    }
    		catch(Exception e)
    {
        		e.printStackTrace();
    }
    return obj;
}

/**
 *  addPersonAccountWithNonDefaultParent 
 *  Añade una entidad de tipo de entidad PersonAccount bajo el padre especificado
 *  @param uid valor que debe establecerse
 *  @param cn valor que debe establecerse
 *  @param sn valor que debe establecerse
 *  @param parent valor que debe establecerse
 *  @return   DataObject
 */
public static DataObject addPersonAccountWithNonDefaultParent(String uid, String cn, String sn, DataObject parent)
{
    DataObject root = null;
    try
    {
        root = SDOHelper.createRootDataObject();
        DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_PERSON_ACCOUNT);
        // Establecer las propiedades de la entidad
        entity.set("uid", uid);
        entity.set("cn", cn);
        entity.set("sn", sn);
        entity.set("parent", parent);
        System.out.println("Input datagraph before creating user"+ printDO(root));
        // Crear la entidad PersonAccount
        root = service.create(root); 
        System.out.println("Output datagraph after creating user"+ printDO(root));
    }
    		catch(Exception e)
    {
        		e.printStackTrace();
    }
    return root;
}
/**
 *  getDescendant recupera las entidades descendientes de una entidad
 */
public static void getDescendant()
{
    try
    {
        DataObject root = SDOHelper.createRootDataObject();
        DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_ENTITY);
        //Establecer el nombre exclusivo de entidad cuyos descendientes deben encontrarse
        entity.createDataObject(SchemaConstants.DO_IDENTIFIER).setString(SchemaConstants.PROP_UNIQUE_NAME,
                "cn=users,o=defaultWIMFileBasedRealm");
        //Crear el objeto de control de descendientes
        DataObject descCtrl = SDOHelper.createControlDataObject(root, null, 
                SchemaConstants.DO_DESCENDANT_CONTROL);
        // Establecer el nivel de propiedad para recuperar todos los descendientes anidados
        descCtrl.setInt(SchemaConstants.PROP_LEVEL, SchemaConstants.PROP_LEVEL_NESTED);
        // Establecer las propiedades que deben recuperarse de los descendientes
        descCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("uid");
        descCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("o");
        descCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("ou");
        System.out.println("Input datagraph before getting descendants"+ printDO(root));
        // Obtener las entidades
        root = service.get(root);		        System.out.println("Output datagraph after getting descendants"+ printDO(root));
    }
    		catch(Exception e)
    {
        		e.printStackTrace();
    }
}

/**
 * getAncestor recupera las entidades ascendientes de una entidad
 * @param entity    Nombre de la entidad cuyo ascendiente debe recuperarse
 */
public static void getAncestor(DataObject entity)
{
    try
    {
        // Establecer objeto de control de ascendientes
        DataObject ancesCtrl = SDOHelper.createControlDataObject(entity, null, 
                SchemaConstants.DO_ANCESTOR_CONTROL);
        // Establecer el nivel de propiedad para recuperar todos los ascendientes anidados
        ancesCtrl.setInt(SchemaConstants.PROP_LEVEL, SchemaConstants.PROP_LEVEL_NESTED); 
        // Establecer las propiedades que deben recuperarse de los ascendientes
        ancesCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("cn");
        ancesCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("o");
        ancesCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("ou");
        System.out.println("Input datagraph before getting ancestors"+ printDO(entity));
        // Obtener las entidades
        entity = service.get(entity);
        System.out.println("Output datagraph after getting ancestors"+ printDO(entity));
    }
    		catch(Exception e)
    {
        		e.printStackTrace();
    }
} 

Gráficos de datos de entrada y salida

Gráfico de datos de entrada para crear una entidad padre, OrgContainer, cn:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:OrgContainer">
      <wim:cn>users</wim:cn>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>

Gráfico de datos de salida después de crear una entidad padre, OrgContainer, cn:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:OrgContainer">
      <wim:identifier externalName="cn=users,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
          uniqueId="ecf1d16b-9ab8-4de6-a2a5-7eb48fd2fe7c" uniqueName="cn=users,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>

Gráfico de datos de entrada para crear una entidad padre, OrgContainer, o:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:OrgContainer">
      <wim:parent xsi:type="wim:OrgContainer">
        <wim:identifier externalName="cn=users,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
            uniqueId="ecf1d16b-9ab8-4de6-a2a5-7eb48fd2fe7c" uniqueName="cn=users,o=defaultWIMFileBasedRealm"/>
      </wim:parent>
      <wim:o>SWG</wim:o>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>

Gráfico de datos de salida después de crear una entidad padre, OrgContainer, o:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:OrgContainer">
      <wim:identifier externalName="o=SWG,cn=users,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
          uniqueId="e6fc7e62-7492-44f9-8db6-4bccbc40429e" uniqueName="o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>

Gráfico de datos de entrada para crear una entidad padre, OrgContainer, ou:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:OrgContainer">
      <wim:parent xsi:type="wim:OrgContainer">
        <wim:identifier externalName="o=SWG,cn=users,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
            uniqueId="e6fc7e62-7492-44f9-8db6-4bccbc40429e" uniqueName="o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
      </wim:parent>
      <wim:ou>India</wim:ou>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>

Gráfico de datos de salida después de crear una entidad padre, OrgContainer, ou:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:OrgContainer">
      <wim:identifier externalName="ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"
          repositoryId="InternalFileRepository" uniqueId="2c281163-3daf-4223-bc63-6cf3f6502c4d"
          uniqueName="ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>

Gráfico de datos de entrada para crear una entidad hija, user1:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:PersonAccount">
      <wim:parent xsi:type="wim:OrgContainer">
        <wim:identifier externalName="ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"
            repositoryId="InternalFileRepository" uniqueId="2c281163-3daf-4223-bc63-6cf3f6502c4d"
            uniqueName="ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
      </wim:parent>
      <wim:uid>user1</wim:uid>
      <wim:cn>user1cn</wim:cn>
      <wim:sn>user1sn</wim:sn>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>

Gráfico de datos de salida después de crear una entidad hijo, user1:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:PersonAccount">
      <wim:identifier externalName="uid=user1,ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"
          repositoryId="InternalFileRepository" uniqueId="664e4422-d9b6-4b0e-a9e8-62620c6c710f"
          uniqueName="uid=user1,ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>

Gráfico de datos de entrada para crear una entidad hija, user2:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:PersonAccount">
      <wim:parent xsi:type="wim:OrgContainer">
        <wim:identifier externalName="ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"
            repositoryId="InternalFileRepository" uniqueId="2c281163-3daf-4223-bc63-6cf3f6502c4d"
            uniqueName="ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
      </wim:parent>
      <wim:uid>user2</wim:uid>
      <wim:cn>user2cn</wim:cn>
      <wim:sn>user2sn</wim:sn>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>

Gráfico de datos de salida después de crear una entidad hija, user2:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:PersonAccount">
      <wim:identifier externalName="uid=user2,ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"
          repositoryId="InternalFileRepository" uniqueId="664e4422-d9b6-4b0e-a9e8-62620c6c710f"
          uniqueName="uid=user2,ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>

Gráfico de datos de entrada para obtener los descendientes de la entidad padre:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities>
      <wim:identifier uniqueName="cn=users,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
    <wim:controls xsi:type="wim:DescendantControl" level="0">
      <wim:properties>uid</wim:properties>
      <wim:properties>ou</wim:properties>
      <wim:properties>o</wim:properties>
    </wim:controls>
  </wim:Root>
</sdo:datagraph>

Gráfico de datos de salida después de obtener los descendientes de la entidad padre:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:OrgContainer">
      <wim:identifier externalName="cn=users,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
          uniqueId="c9218bab-2444-4c56-8697-88a83a1d82f9" uniqueName="cn=users,o=defaultWIMFileBasedRealm"/>
      <wim:children xsi:type="wim:OrgContainer">
        <wim:identifier externalId="14126738-5bbe-4d3f-8589-ef71b8724696" 
            externalName="o=SWG,cn=users,o=defaultWIMFileBasedRealm"
            repositoryId="InternalFileRepository" uniqueId="14126738-5bbe-4d3f-8589-ef71b8724696"
            uniqueName="o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
        <wim:o>SWG</wim:o>
      </wim:children>
      <wim:children xsi:type="wim:OrgContainer">
        <wim:identifier externalId="22200d23-5fec-4d5f-9033-5c8c925e7a82" 
            externalName="ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"
            repositoryId="InternalFileRepository" uniqueId="22200d23-5fec-4d5f-9033-5c8c925e7a82"
            uniqueName="ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
        <wim:ou>India</wim:ou>
      </wim:children>
      <wim:children xsi:type="wim:PersonAccount">
        <wim:identifier externalId="63cbb4ca-a629-4a64-9681-98154ec877b6" 
            externalName="uid=user2,ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"
            repositoryId="InternalFileRepository" uniqueId="63cbb4ca-a629-4a64-9681-98154ec877b6"
            uniqueName="uid=user2,ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
        <wim:uid>user2</wim:uid>
      </wim:children>
      <wim:children xsi:type="wim:PersonAccount">
        <wim:identifier externalId="7f421b09-e22a-4311-9e2f-7b59f77b6d21" 
            externalName="uid=user1,ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"
            repositoryId="InternalFileRepository" uniqueId="7f421b09-e22a-4311-9e2f-7b59f77b6d21"
            uniqueName="uid=user1,ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
        <wim:uid>user1</wim:uid>
      </wim:children>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>

Gráfico de datos de entrada para obtener los ascendientes de la entidad hija:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:PersonAccount">
      <wim:identifier externalName="uid=user1,ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"
          repositoryId="InternalFileRepository" uniqueId="9f57af27-573b-4924-a405-7e35e7be012a"
          uniqueName="uid=user1,ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
    <wim:controls xsi:type="wim:AncestorControl" level="0">
      <wim:properties>cn</wim:properties>
      <wim:properties>ou</wim:properties>
      <wim:properties>o</wim:properties>
    </wim:controls>
  </wim:Root>
</sdo:datagraph>

Gráfico de datos de salida después de obtener los ascendientes de la entidad hija:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:PersonAccount">
      <wim:identifier externalName="uid=user1,ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"
          repositoryId="InternalFileRepository" uniqueId="9f57af27-573b-4924-a405-7e35e7be012a"
          uniqueName="uid=user1,ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
      <wim:parent xsi:type="wim:OrgContainer">
        <wim:identifier externalId="127bac7a-50da-4616-907b-f7345873c087" 
            externalName="ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"
            repositoryId="InternalFileRepository" uniqueId="127bac7a-50da-4616-907b-f7345873c087"
            uniqueName="ou=India,o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
        <wim:parent xsi:type="wim:OrgContainer">
          <wim:identifier externalId="7e1c0b12-e45b-4595-bfb6-5d39e5741642" 
              externalName="o=SWG,cn=users,o=defaultWIMFileBasedRealm"
              repositoryId="InternalFileRepository" uniqueId="7e1c0b12-e45b-4595-bfb6-5d39e5741642"
              uniqueName="o=SWG,cn=users,o=defaultWIMFileBasedRealm"/>
          <wim:parent xsi:type="wim:OrgContainer">
            <wim:identifier externalId="ef168b8d-baed-4cd1-9f10-999866ea4c29" 
                externalName="cn=users,o=defaultWIMFileBasedRealm"
                repositoryId="InternalFileRepository" uniqueId="ef168b8d-baed-4cd1-9f10-999866ea4c29"
                uniqueName="cn=users,o=defaultWIMFileBasedRealm"/>
            <wim:cn>users</wim:cn>
          </wim:parent>
          <wim:o>SWG</wim:o>
        </wim:parent>
        <wim:ou>India</wim:ou>
      </wim:parent>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>


Condiciones de uso | Comentarios