Page 2 of 2

Re: Automatizacion

PostPosted:Thu Jun 19, 2014 9:20 am
by gcosta
Buenos días, finalmente he conseguido montar el entorno de developer y funcionando correctamente. He echo distintas pruebas entre ellas algún que otro workflow y todo funciona correctamente.

Bien, ahora centrándonos en el tema del "Automation" referente al "move" no hay manera de que consiga hacerlo funcionar. Tal y como comentasteis en el post anterior he realizado los cambios en la clase PathConatins.java. La he compilado pero al intentar añadir la "keyword" al hacer un "move" no funciona y me da error.

Lo que si he podido comprobar es que la clase que me disteis de referencia apunta a un "import com.openkm.dao.bean.Automation;" clase que no existe en el paquete "svn" ni en versión 6.2 ni en versión 6.3 por lo que hice las modificaciones partiendo de la clase original "PathContains.java" que viene en el "svn".

Bien a continuación os dejo el código de mi clase modificada a ver si podéis ayudarme en que es lo que hago mal.

Gracias.
Code: Select all
/**
 *  OpenKM, Open Document Management System (http://www.openkm.com)
 *  Copyright (c) 2006-2014  Paco Avila & Josep Llort
 *
 *  No bytes were intentionally harmed during the development of this application.
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *  
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License along
 *  with this program; if not, write to the Free Software Foundation, Inc.,
 *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */

package com.openkm.automation.validation;

import java.util.HashMap;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.openkm.api.OKMRepository;
import com.openkm.automation.AutomationUtils;
import com.openkm.automation.Validation;

/**
 * Check if the current parent path contains a designed one. The only
 * parameter is a path and will test if this one is included in the
 * actual parent.
 * 
 * @author pavila
 */
public class PathContains implements Validation {
	private static Logger log = LoggerFactory.getLogger(PathContains.class);
	
	@Override
	public boolean isValid(HashMap<String, Object> env, Object... params) {
		String uuid = AutomationUtils.getString(0, params);
		
		try {
			String docUuid = AutomationUtils.getUuid(env);
	        String parentPath = OKMRepository.getInstance().getNodePath(null, docUuid);
			String path = OKMRepository.getInstance().getNodePath(null, uuid);
			
			if (parentPath.startsWith(path)) {
				return true;
			} else {
			 return false;
			}
		} catch (Exception e) {
			log.error(e.getMessage(), e);
		}
		
		return false;
	}
}

Re: Automatizacion

PostPosted:Fri Jun 20, 2014 9:27 am
by jllort
La clase que te pusimos en el post se corresponde con la 6.4 es probable que no sea exactamente igual ( aunque si muy parecida ). Tienes que utilizar la que viene en el svn como base.
- Lo primero es que yo la llamaría de otra forma PathContainsOnMove.java
- El código parece correcto ( debuga para ver que esta pasando, no hay otra ).

Re: Automatizacion

PostPosted:Fri Jun 20, 2014 11:24 am
by gcosta
Buenos días, finalmente he conseguido que funcione perfectamente. Muchas gracias. Eso ha permitido que puede realizar muchísimas acciones que tenía previstas al realizar un movimiento de documento.

Aprovecho para comentaros que la acción "revokeKeyword" no funciona, yo lo he solucionado realizando la acción a través de un script. Os lo comento por si lo queréis revisar para futuras actualizaciones.

Muchas gracias por la ayuda y tiempo dedicado.

Re: Automatizacion

PostPosted:Sun Jun 22, 2014 10:04 am
by jllort
El revokeKeyword no funciona en que escenario ( pre / post ), indicanos un poco como reproducir el problema.

Re: Automatizacion

PostPosted:Mon Jun 23, 2014 7:58 am
by gcosta
Buenos días en el post.

Re: Automatizacion

PostPosted:Mon Jun 23, 2014 8:39 pm
by jllort
Para confirmar exactamente lo que haces, sobre que evento estas ejecutando el eliminar la keyword ( ya me queda claro que es un post ). Y esta es la única acción que realizas o realizas alguna otra mas ?

Re: Automatizacion

PostPosted:Wed Jun 25, 2014 9:01 am
by gcosta
Buenos días, el procedimiento que hago es el siguiente.

1. Creo una automatización de "document move" en "post".
2. Utilizo la validación "PathContainsOnMove" (modificada por mi ya que la "PathContains" recordat que no captura bien la carpeta destino)
3. Utilizo la acción "RevokeKeyword"

Al hacer el "move" del documento el OpenKM genera un error del "Automatition".

Si ese mismo procedimiento lo realizamos con la acción "addKeyword" no hay problema alguna, funciona a la perfección.

Como ya os he comentado yo lo he solucionado utilizando la acción "scriptExecute" de esa forma funciona correctamente.

Re: Automatizacion

PostPosted:Fri Jun 27, 2014 6:27 pm
by jllort
Tiene alguna mayúscula la palabra clave ? es la unica diferencia que veo entra la implementacion del addkeyword y el removekeyword, en esta url tienes el código fuente de esta parte, tu mismo lo puedes comprobar http://sourceforge.net/p/openkm/code/HE ... on/action/ me estraña mucho que el add funcione y el remove no. A no ser claro que intentes eliminar una keyword que no tiene el documento, cosa que obviamente hará que de un error.