• Plantillas y workflows - RESUELTO

  • OpenKM tiene muchas características interesantes, pero es necesario un proceso de configuración para mostrar todo su potencial.
OpenKM tiene muchas características interesantes, pero es necesario un proceso de configuración para mostrar todo su potencial.
Forum rules: Por favor, antes de preguntar algo consulta el wiki de documentación o utiliza la función de búsqueda del foro. Recuerda que no tenemos una bola de cristal ni poderes mentales, o sea que que para informar sobre un error es necesario que nos indiques tanto la versión de OpenKM que usas como la del navegador y sistema operativo. Para más información consulta Cómo informar de fallos de forma efectiva.
 #47182  by tomsp
 
Hola! Realicé unas plantillas y varios workflows, por lo que ya estoy familiarizado con su funcionamiento.

Escribo para saber si me pueden ayudar con lo suigiente:
Necesito realizar un workflow en el cual se pida un solo dato (como por ejemplo la ID de una persona) y luego se cree un documento a partir de una plantila con los todos datos que se tengan de esa persona (nombre, direccion, etc). La plantilla ya está definida con su grupo de metadatos correspondiente y los datos se completan por medio de inputs del usuario.
Lo que necesito saber que cómo puedo lograr la creación del nuevo documento por medio de un workflow para así autocompletar los datos y facilitarle la vida al usuario.

Estaba pensando en ejecutar el TemplateWizard desde el workflow, pero no śe cómo.
¿O tal vez usar el método createFromTemplate? ¿Qué me recomiendan?

Saludos!
Last edited by tomsp on Thu Feb 07, 2019 3:37 pm, edited 2 times in total.
 #47189  by jllort
 
Tienes que utilizar el método del API createFromTemplate ( olvídate del wizard de la interfaz de usuario, que no te sirve para nada en este escenario ).
 #47200  by tomsp
 
Gracias! Encontré dos métodos createFromTemplate (estoy usando OpenKM Community v6.3.6):
  • el primero es GWTDocument createFromTemplate(String docPath, String destinationPath, List<GWTFormElement> formProperties, Map<String,List<Map<String,String>>> tableProperties)
    Aquí tengo dudas con el último parámetro, qué vendría a ser tableProperties?
  • el segundo es void createFromTemplate(String docPath, String fldPath, String name, GWTExtendedAttributes attributes)
    En este caso, attributes solamente debería tener como true el setPropertyGroup?
Tengo entendido que debo usar el primer método, pero tengo dudas respecto al último parámetro, como dije.
 #47210  by jllort
 
Tienes que mirar sobre la linea 845 del DocumentServlet. El tema de fondo es que los parametros en la plantilla tienen este format okp_consulting.name cuando el campo de metadatos tiene el valor okp:consulting.name en la definicion. La lista de formElement y el mapa en realidad son 2 formas de rellenar los valores en la plantilla ( puedes pasarle una lista de formElement vacia y todo en el Mapa o a la inversa ).
Code: Select all
for (GWTFormElement formElement : formProperties) {
	String key = formElement.getName().replace(".", "_").replace(":", "_");
	Object value = GWTUtil.getFormElementValue(formElement);
	values.put(key, value);
}

for (String key : tableProperties.keySet()) {
	values.put(key, tableProperties.get(key));
}
 #47216  by tomsp
 
Bien, ahora logré crear la platinlla, pero los metadatos no se completaron. Utilicé el mapa solamente:
Map<String,List<Map<String,String>>>.

La lista quedó, por ejemplo, lista.add("okp:consulting.name","Alicia") y el argumento final (quiźas aquí esté el error) Map<"okp:consulting.name", lista>
Aquí adjunto el código
Code: Select all
OKMPropertyGroup.getInstance().addGroup(token, template_path, "okg:consulting");
Map<String, String>  map = new HashMap<String, String>();
map.put("okp:consulting.name","Alicia");
OKMPropertyGroup.getInstance().setPropertiesSimple(token, template_path, "okg:consulting", map);
		
List<Map<String,String>> lista = new ArrayList<>();
lista.add(map);
	
List<GWTFormElement> elementos = new ArrayList<>();
	
Map<String,List<Map<String,String>>> mapa = new HashMap<>();
mapa.put("okp:consulting.name", lista);
				
ds.createFromTemplate(template_path, path_documento, elementos, mapa);
 #47224  by jllort
 
Igual lo mas sencillo para ti sea debugar la parte del servlet que se utiliza para crear un documento a partir de una plantilla.

Aquí tienes un ejemplo de una plantilla https://docs.openkm.com/kcenter/view/ok ... plate.html configurarlá en OpenKM. Y acto seguido ( en el entorno de desarrollo -> imagino que es lo que estas utilizando, sino desde la zona de descargas te aconsejo instalarlo https://www.openkm.com/en/download.html )

Una vez tengas la plantilla configurada te sugiero debugar la clase DocumentServlet -> https://github.com/openkm/document-mana ... .java#L610
 #47413  by tomsp
 
Ya logré hacerlo a través de un Workflow. Muchas gracias por la ayuda, pude hacerlo siguiendo el debug como recomendaste.

About Us

OpenKM is part of the management software. A management software is a program that facilitates the accomplishment of administrative tasks. OpenKM is a document management system that allows you to manage business content and workflow in a more efficient way. Document managers guarantee data protection by establishing information security for business content.