¿Como utilizar un Parseador XML con Alfresco?

cancel
Showing results for 
Search instead for 
Did you mean: 
fegor
Senior Member

Re: ¿Como utilizar un Parseador XML con Alfresco?

Perdona, al final no te he puesto la forma de llamar a un JavaScript desde otro en el contexto de Alfresco; tienes que importarlo dentro de tu JavaScript como:


<import resource="classpath:alfresco/extension/templates/scripts/miprograma.js">

Una vez llamado, ejecutará el código o si lo tienes como funciones JavaScript, podrás llamarlas   :wink:

Un saludo.
dreamcifra
Member II

Re: ¿Como utilizar un Parseador XML con Alfresco?

Hola compañero gracias por la info, pero soy un autentico inútil. Le metido la ruta donde esta mi js y no lo detecta:

14:04:36,711 User:admin ERROR [ui.common.Utils] A system error happened during the operation: 07270038 Failed to execute script 'workspace://SpacesStore/80927dd6-ac1a-4977-ad2f-78af478f0eeb': 07270037 Unable to load included script classpath resource: classpath:home/german/calc/tomcat/webapps/lanzador/lanzador.js
org.alfresco.scripts.ScriptException: 07270038 Failed to execute script 'workspace://SpacesStore/80927dd6-ac1a-4977-ad2f-78af478f0eeb': 07270037 Unable to load included script classpath resource: classpath:home/german/calc/tomcat/webapps/lanzador/lanzador.js

Tambien le metido el js a través del navegador web de alfresco y lo metido en: Company home –>Data Dictionary –> Scripts, pero tampoco me lo encuentra en la ruta.

He estado buscando la ruta parecida a la que me has puesto y me creado esta: calc/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/templates/scripts pero tampoco la detecta.

¿Sabes que puede ser?

Muchas gracias de nuevo!!!
fegor
Senior Member

Re: ¿Como utilizar un Parseador XML con Alfresco?

A ver, si es un tomcat mételo en, p.e.:


tomcat/shared/classes/alfresco/extension/templetes/scripts

Y el import lo haces como:


<import resource="classpath:alfresco/extension/templates/scripts/lanzador.js">

Un saludo.
cesarista
Customer

Re: ¿Como utilizar un Parseador XML con Alfresco?

Hola:

Otra orientación si no lo he entendido mal y sin recurrir a java based webscripts (aunque no pretendo dispersar la orientación ya tomada), podría ser una regla que al añadir un contenido xml, este contenido se convierte al tipo definido con los aspectos (Nombre, Fecha, Localizacion…) que se extraen directamente del XML con un transformador de Alfresco via XPATH.

También una vez configurado el transformador, podríamos definir una acción para convertir un contenido a un tipò dado y ejecutar el transformador directamente en un webscript con el api js sin utilizar java.

Un saludo.

–C.

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!!
dreamcifra
Member II

Re: ¿Como utilizar un Parseador XML con Alfresco?

A ver, si es un tomcat mételo en, p.e.:


tomcat/shared/classes/alfresco/extension/templetes/scripts

Y el import lo haces como:


<import resource="classpath:alfresco/extension/templates/scripts/lanzador.js">

Un saludo.

Hola compañero,

Gracias por la ayuda, pero sigue dando fallos. He colocado el directorio donde me dijiste y en la interfaz web de alfresco me dice:
A system error happened during the operation: 07310006 Failed to execute script 'workspace://SpacesStore/13b45f03-a30b-4b5a-a0ca-bbbb1f0b9bd3': 07310005 ReferenceError: "window" is not defined. (workspace://SpacesStore/13b45f03-a30b-4b5a-a0ca-bbbb1f0b9bd3#8)

y en el log del tomcat: User:admin ERROR [ui.common.Utils] A system error happened during the operation: 07310004 Failed to execute script 'workspace://SpacesStore/13b45f03-a30b-4b5a-a0ca-bbbb1f0b9bd3': 07310003 ReferenceError: "window" is not defined. (workspace://SpacesStore/13b45f03-a30b-4b5a-a0ca-bbbb1f0b9bd3#8)
org.alfresco.scripts.ScriptException: 07310004 Failed to execute script 'workspace://SpacesStore/13b45f03-a30b-4b5a-a0ca-bbbb1f0b9bd3': 07310003 ReferenceError: "window" is not defined. (workspace://SpacesStore/13b45f03-a30b-4b5a-a0ca-bbbb1f0b9bd3#8)

Cuando coje el segundo Script falla. Adjunto los dos Script por si pueden ser de ayuda, para encontrar el problema:

Script prueba.js
<import resource="classpath:alfresco/extension/templates/scripts/lanzador.js">
var xml=prueba();
var titulo = xml.getElementsByTagName('titulo');
document.properties["{prueba.model}Nombre"]=titulo;
document.save();

Script lanzador.js
function prueba (){
  var req;
  var res;
  // Llama objeto XMLHttpRequest
  if (window.XMLHttpRequest) {
    req = new XMLHttpRequest();   
    res = new String();
  // Si no funciona intenta utiliar el objeto IE/Windows ActiveX
  } else if (window.ActiveXObject) {
    req = new ActiveXObject("Microsoft.XMLHTTP");
  }
  if(req!=null){
   var path = '/home/german/Escritorio/Alacarta/13915629.xml';
   var url = 'http://localhost:8080/alfresco/service/alacarta/parser?xmlAParsear=' + encodeURIComponent(path);
   
    req.open("GET",url,true);
    req.send(null);

req.onreadystatechange = function ()
{
if (req.readyState == 4 && (req.status == 200 || window.location.href.indexOf ("http") == - 1))
document.getElementById ("info").innerHTML = req.responseText;
var xml = req.responseXML.documentElement;
return xml;
}
}
}

Muchas gracias y un saludo!!
dreamcifra
Member II

Re: ¿Como utilizar un Parseador XML con Alfresco?

Hola:

Otra orientación si no lo he entendido mal y sin recurrir a java based webscripts (aunque no pretendo dispersar la orientación ya tomada), podría ser una regla que al añadir un contenido xml, este contenido se convierte al tipo definido con los aspectos (Nombre, Fecha, Localizacion…) que se extraen directamente del XML con un transformador de Alfresco via XPATH.

También una vez configurado el transformador, podríamos definir una acción para convertir un contenido a un tipò dado y ejecutar el transformador directamente en un webscript con el api js sin utilizar java.

Un saludo.

–C.

Hola gracias por la respuesta. Si es mucho mas facil como tu dices, esta claro. Pero necesito integrar el parseador en Java, por eso no puedo utilizarlo con esta alternativa. Aunque con tu forma es la sencilla de realizar.

Muchas gracias y un saludo!!
fegor
Senior Member

Re: ¿Como utilizar un Parseador XML con Alfresco?

Hola,

Verás, sigues confundiendo la parte que se ejecuta en el motor de JavaScript de Alfresco del que usan los navegadores. Los objetos window.XMLHttpRequest y ActiveXObject() son propios de los navegadores, este último incluso solo de IE. Estos objetos no pueden existir en la parte que ejecuta el motor de Alfresco porque no tienen capacidad de visualizar como tal.

¿Solución?, claro, siempre hay solución; tienes un WebScript llamado "parser" ¿como es?, ahí podrías meter también la lectura del fichero xml sobre todo si antes se ha subido a Alfresco y asignar el valor al documento por defecto. Creo que lo estás complicando mucho más de lo que es ya que en realidad toda la funcionalidad está en ese código del WebScript (que no has puesto) y que realmente es quien debe terminar el trabajo.

Un saludo.
cesarista
Customer

Re: ¿Como utilizar un Parseador XML con Alfresco?

Hola:

Hola gracias por la respuesta. Si es mucho mas facil como tu dices, esta claro. Pero necesito integrar el parseador en Java, por eso no puedo utilizarlo con esta alternativa. Aunque con tu forma es la sencilla de realizar.

Muchas gracias y un saludo!!

No se si me he explicado bien. Definiendo un transformador que utilice XPATH, parseas un xml, y los nodos obtenidos/parseados se mapean directamente a metadatos de tu tipo de contenido.

Un saludo.

–C.
dreamcifra
Member II

Re: ¿Como utilizar un Parseador XML con Alfresco?

Hola,

Verás, sigues confundiendo la parte que se ejecuta en el motor de JavaScript de Alfresco del que usan los navegadores. Los objetos window.XMLHttpRequest y ActiveXObject() son propios de los navegadores, este último incluso solo de IE. Estos objetos no pueden existir en la parte que ejecuta el motor de Alfresco porque no tienen capacidad de visualizar como tal.

¿Solución?, claro, siempre hay solución; tienes un WebScript llamado "parser" ¿como es?, ahí podrías meter también la lectura del fichero xml sobre todo si antes se ha subido a Alfresco y asignar el valor al documento por defecto. Creo que lo estás complicando mucho más de lo que es ya que en realidad toda la funcionalidad está en ese código del WebScript (que no has puesto) y que realmente es quien debe terminar el trabajo.

Un saludo.

Ejectivamente, creo que me estoy complicando demasiado y creo que voy a desistir de usar el parseador de Java y estoy abierto a nuevas soluciones mas sencillas, jejeje.

Creo que lo de la utilizacio nde sentencias XPATH, puede ser mas sencillo. Muchas gracias por la ayuda prestada.

Un saludo!!
dreamcifra
Member II

Re: ¿Como utilizar un Parseador XML con Alfresco?

No se si me he explicado bien. Definiendo un transformador que utilice XPATH, parseas un xml, y los nodos obtenidos/parseados se mapean directamente a metadatos de tu tipo de contenido.
Un saludo.
–C.

Gracias por tu respuesta. Creo que me voy a decantar por tu solucion sobre todo si es mas facil,  me olvido de utilizar el parseador que tengo escrito codificado en java.

¿Exactacmente como dices que lo haga? ¿Desde el propio javacript utilizar sentencias XPATH para obtener el valor de los datos de XML?

Muchas gracias y un saludo!