cancel
Showing results for 
Search instead for 
Did you mean: 

¿Como utilizar un Parseador XML con Alfresco?

dreamcifra
Champ in-the-making
Champ in-the-making
Hola buenos días,

Tengo un par de dudas haber si alguien me puede orientar mejor.

Tengo un Parseador de XML codificado en java. Y tengo una regla que lanza un javaScript y debe obtener los datos del parseador de XML. ¿Cual sería la mejor solución?

a) ¿Redefinir el parseador en javaScript?
b) ¿Utilizar el parseador de java con un actionExecuter?
c) ¿Desde el propio javaScript llamar a la funcion codificada en java?
d) ¿Otra alternativa?

Muchas gracias y un saludo!!
27 REPLIES 27

fegor
Star Collaborator
Star Collaborator
Mejor llama a tu clase java desde una acción 😉

venzia
Star Collaborator
Star Collaborator

dreamcifra
Champ in-the-making
Champ in-the-making
Gracias por la info!!

No es que la funcin en java (el parseador) tengo que utilizarlo entonces habia pensado en dos cosas:

a) Utilizar web-scripts
b) Utilizar Actions

La duda es, ¿Como puedo desde un javaScript ejectuar una funcion que esta definida en un archivo.java.

Muchas gracias de nuevo!!

fegor
Star Collaborator
Star Collaborator
Hola, pues es "relativamente" muy fácil.

Aquí te dejo dos enlaces aunque en concreto el que te va a servir realmente es el segundo.

http://wiki.alfresco.com/wiki/Web_Scripts
http://wiki.alfresco.com/wiki/Java-backed_Web_Scripts_Samples

Un saludo.

dreamcifra
Champ in-the-making
Champ in-the-making
Hola compañero vuelvo a la carga. Os comento como esta la cosa. Ya tengo el web Script que me realiza el parseo del XML bien, pero el problema viene ahora (Os cuento todas la cosas que estoy haciendo para que se tenga una visión general del problema).

Me he definido una regla para transformar un tipo de contenido a otro al cual le he llamado NewXml. Esta transformación lo que digo que haga es que a todos los elementos que meto dentro de un directorio me los transforme a este tipo de contenido. NewXML lo único que hago es añadirle un par de aspectos (Nombre, Fecha, Localización).

La otra regla es lanzar un script. Este Script (el de la regla) llamara a otro Script que devolver los parámetros (Nombre, Fecha, Localización). Dichos valores han sido obtenidos de parsear el documento XML. Cuando devuelva estos parámetros se los meteré al los Aspectos que han sido definidos en la primera regla.

El problema es que no se como llamar a la función del Script de parseo, desde el propio Script de la regla.

He intentando utilizar directamente el codigo del Script de parseo sobre el Script de la regla, pero me ha dado fallos porque no me reconoce muchas cosas como por ejemplos windows….., document.write….., etc, etc, etc.

¿Sabríais como podríamos solucionar esto?

Muchas gracias y un saludo!!

fegor
Star Collaborator
Star Collaborator
Hola,

Que puedas ejecutar JavaScript en tu código de WebScript no significa que tengas los mismos objetos que en un navegador, evidentemente además no dispondrás de ellos y si de los própios del API de Alfresco. Si necesitas visualizar pantallas, cuadros de diálogo, etc. hazlo en las plantillas *.get.html.ftl que es lo suyo. Ahí si puedes usar JavaScript de cliente que se ejecutará en el navegador de cliente cuando reciba el resultado en html.

Un saludo.

dreamcifra
Champ in-the-making
Champ in-the-making
Me he liado, jejeje.

De echo no necesito que se me lance una pagina nueva ni nada. Solo necesito que el Script parseador me devuelva los datos, para que el Script de la regla pueda utilizar esos datos e introducirlo como aspectos.

Por ejemplo he estado buscando en internet como lanzar un JavaScript desde otro JavaScript y dicen que tengo que utilizar este código:

document.write("<script type='text/javascript' src='archivo.js'></script>"); pero cuando lo utilizo alfresco me dice que no reconoce la función write: lanzarme este error.

11:37:18,650 User:admin ERROR [ui.common.Utils] A system error happened during the operation: 07270014 Failed to execute script 'workspace://SpacesStore/9171def7-be09-4afa-b0fc-cf8ef0a8800c': 07270013 TypeError: Cannot find function write. (workspace://SpacesStore/9171def7-be09-4afa-b0fc-cf8ef0a8800c#3)
org.alfresco.scripts.ScriptException: 07270014 Failed to execute script 'workspace://SpacesStore/9171def7-be09-4afa-b0fc-cf8ef0a8800c': 07270013 TypeError: Cannot find function write. (workspace://SpacesStore/9171def7-be09-4afa-b0fc-cf8ef0a8800c#3)

Muchas gracias por la ayuda prestada!!

fegor
Star Collaborator
Star Collaborator
Hola,

Eso no tiene sentido, es decir, si usas un "write" o una asignación de variable, eso será el resultado a mostrar; es decir, imagina que es un simple JavaScript (ni siquiera WebScript) y haces lo siguiente:


var resultado;
resultado = "<html><head><script type='text/javascript' src='archivo.js'></script></head><body></body></html>";
resultado;

Cuando ejecutes ese JavaScript, este devolverá una página html como sigue:


<html>
  <head>
    <script type='text/javascript' src='archivo.js'></script>
  </head>
  <body>
  </body>
</html>

Y hará que tu navegador, al recibir esta, llame al fichero "archivo.js" pero desde el contexto del navegador.

Aún así, no creo que funcione la primera opción, la que has visto en internet, como document.write(), ya que esta es para el entorno de un JavaScript en el navegador pero no para el motor de JavaScript que lleva Alfresco.

Por tanto, para lanzar un JavaScript desde otro:

1. Dentro del motor de JavaScript (Rhino) de Alfresco, usa un "import" como he puesto más arriba y ya podrás llamar a las funciones JavaScript que quieras.
2. Dentro del contexto del navegador (Firefox), usa directamente los tags "<script src="…"></script>.

Espero que así te quede más claro el funcionamiento dentro de Alfresco de los ficheros con código JavaScript   Smiley Very Happy

Un saludo.
Getting started

Tags


Find what you came for

We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.