Límite de Nodos importados en un webservice

cancel
Showing results for 
Search instead for 
Did you mean: 
sapodoble_3589
Member II

Límite de Nodos importados en un webservice

Hola,
En la siguiente función

function getNodeByPath($Store, $path, $node = null)
    {
        $bits = split('/', $path);

        if ($node == null) {
            $node = $Store->getCompanyHome();
        }
        /* @var $node Node */
        foreach ($bits as $bit) {
            // Skip up until we have the parts after the company home
            if (empty($bit) || $bit == 'Company Home') {
                continue;
            }
            // Get the node for the current bit. If the current
            // "bit" doesn't exist, then
            $children = $node->getChildren();
            foreach ($children as $child) {
                $childNode = $child->getChild();
                if ($childNode->cm_name == $bit) {
                    $node = $childNode;
                    // Cheat and skip to the next 'bit' to scan
                    continue 2;
                }
            }

            $node = null;
            break;
        }
        return $node;
    }
Me he dado cuenta que sólo me devuelve en la lista los primeros 1000 nodos de una carpeta (en la que tenemos unos 2500).
¿Este límite se fija en algún fichero de configuración de alfresco?
He estado buscando por la documentación y no lo he encontrado.

Un saludo y gracias.
4 Replies
ajv
Member II

Re: Límite de Nodos importados en un webservice

Hola sapodoble,

Échale un vistazo a este post, que muy posiblemente te sirva:
http://forums.alfresco.com/en/viewtopic.php?f=6&t=13381&p=43997

En el fichero repository.properties (tomcat\webapps\alfresco\WEB-INF\classes\alfresco) hay propiedades que limitan los recursos dedicados a búsquedas individuales…quizás por ahí se quede estancada tu búsqueda.
Hasta luego!
sapodoble_3589
Member II

Re: Límite de Nodos importados en un webservice

Ya he probado a modificar los valores del arschivo de configuración repository.properties , rearrancar alfresco , y me sigue retornando 1000 elementos.

En los logs aparece

Fetched next set of results:
   Total results count: 1212
   Batch size:          1000
   New Position:        1000

Otra alternativa sería continuar la consulta a partir del elemento 1000, ¿se puede?
ajv
Member II

Re: Límite de Nodos importados en un webservice

Hola de nuevo,

Mira a ver si este código te resulta:
    String sQuery = "TYPE:\"" + Constants.TYPE_CONTENT + "\"";

    // Establece el tamaño del batch en la cabecera de la query…
    int batchSize = 10;
    QueryConfiguration queryCfg = new QueryConfiguration();
    queryCfg.setFetchSize(batchSize);
    RepositoryServiceSoapBindingStub repositoryService = WebServiceFactory.getRepositoryService();
    repositoryService.setHeader(new RepositoryServiceLocator().getServiceName().getNamespaceURI(), "QueryHeader", queryCfg);

    //  Obtenemos los primeros resultados
    QueryResult result = repositoryService.query(STORE, getQuery(sQuery), true);
    //Procesamos el primer lote de resultados de la query
    String querySession = result.getQuerySession();
    while (querySession != null) {
        //  Accedemos al siguiente lote de resultados
        result = repositoryService.fetchMore(querySession);
        // Procesamos los siguientes resultados de la query
        querySession = result.getQuerySession();
    }

Me da que por defecto el batchSize está a 1000, y haciendo una única llamada, solo te devuelve esos mil primeros resultados…
Bueno, espero que te funcione.  Smiley Tongue

Hasta luego!
sapodoble_3589
Member II

Re: Límite de Nodos importados en un webservice

Gracias por la pronta respuesta, leyendo el post del enlace me ha dado una idea rápida.
Cómo me corre prisa hacer una importación  y además sólo lo voy a usar una vez, he modificado la clase org.alfresco.repo.webservice.Utils con el valor fijo a 10000, he hecho el proceso que necesitaba y he devuelto la clase original.

De todas formas haré un par de pruebas más y os cuento.