Page 1 of 1

Plantillas y workflows - RESUELTO

PostPosted:Tue Dec 18, 2018 3:58 pm
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!

Re: Plantillas y workflows

PostPosted:Wed Dec 19, 2018 6:07 pm
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 ).

Re: Plantillas y workflows

PostPosted:Thu Dec 20, 2018 2:05 pm
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.

Re: Plantillas y workflows

PostPosted:Mon Dec 24, 2018 3:33 pm
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));
}

Re: Plantillas y workflows

PostPosted:Thu Dec 27, 2018 2:01 pm
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);

Re: Plantillas y workflows

PostPosted:Sat Dec 29, 2018 12:37 pm
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

Re: Plantillas y workflows

PostPosted:Thu Feb 07, 2019 3:37 pm
by tomsp
Ya logré hacerlo a través de un Workflow. Muchas gracias por la ayuda, pude hacerlo siguiendo el debug como recomendaste.