AnsweredAssumed Answered

Actualizando Web Scripts

Question asked by gabri124 on May 12, 2011
Latest reply on May 17, 2011 by gabri124
Hola gente, soy bastante nuevo en temas de Alfresco y Web Scripts y en el trabajo donde estoy he tenido que realizar una actualización de su Alfresco 2.2 a la 3.4 community.

He Exportado los webScripts propios del proyecto y luego importado como paquetes ACP a la nueva versión.

Pero a la hora de ejecutarlos a cada paso que doy siempre me da un problema de definición de variables, de web scripts que en la versión anterior están funcionando.

No sé si es que tengo que compilar los web scripts o cambiar alguna librería. Os dejo el error por si os habeis encontrado con ello y el código del web script que me da problemas.

El fichero getExpReviewers.post.js:
var myexp, i, users;
var users = new Array();
exp = args.exp;

exps = search.luceneSearch("+TYPE:\"exp:expediente\" +@cm\\:name:\"" + exp + "\"");
myexp = exps[0];

interiorexp = myexp.childrenByXPath(".//*");
j=0;
for(i=0;i<interiorexp.length;i++)
{
if(interiorexp[i].type == "{http://www.unav.es/model/expedientes/1.0}reviewer")
{
   users[j] = interiorexp[i];
   j++;  
}
}
model.users = users;

el fichero getExpReviewers.post.desc.xml

<webscript>
<shortname>Expediente Get Reviewers</shortname>
<description>WebScript que saca la lista de revisores del expediente</description>
<url format="xml" template="/unav/getExpReviewers?exp={exp}"/>
<format default="xml">extension</format>
<authentication>user</authentication>
<transaction>none</transaction>
</webscript>

Y el ftl getExpReviewers.post.xml.ftl.xml
<?xml version="1.0" encoding="utf-8"?>
<userlist>  
<#list users ?sort_by(['properties','exp:order']) as user>  
<user>
    <order>${user.properties["exp:order"]}</order>
    <userName>${user.assocs["exp:user"][0].properties["cm:userName"]}</userName>   
    <#if user.assocs["exp:user"][0].properties["cm:firstName"]?exists>
    <firstName>${user.assocs["exp:user"][0].properties["cm:firstName"]}</firstName>
    <#else>
    <firstName></firstName>
    </#if>
    <#if user.assocs["exp:user"][0].properties["cm:lastName"]?exists>
    <lastName>${user.assocs["exp:user"][0].properties["cm:lastName"]}</lastName>
    <#else>
    <lastName></lastName>
    </#if>
    <#if user.assocs["exp:user"][0].properties["cm:homeFolder"]?exists>
    <homeFolder>${user.assocs["exp:user"][0].properties["cm:homeFolder"]}</homeFolder>
    <#else>
    <homeFolder></homeFolder>
    </#if>
    <#if user.assocs["exp:user"][0].properties["cm:email"]?exists>
    <email>${user.assocs["exp:user"][0].properties["cm:email"]}</email>
    <#else>
    <email></email>
    </#if>
</user>   
</#list>
</userlist>


Y cuando intento utilizar desde mi código dicho web script me salta este error de undefined expression

15:55:40,353 User:rclau ERROR [freemarker.runtime] Expression user.assocs["exp:user"] is undefined on line 6, column 17 in unav/getExpReviewers.post.xml.ftl.

Expression user.assocs["exp:user"] is undefined on line 6, column 17 in unav/getExpReviewers.post.xml.ftl.
The problematic instruction:
———-
==> ${user.assocs["exp:user"][0].properties["cm:userName"]} [on line 6, column 15 in unav/getExpReviewers.post.xml.ftl]
———-

Java backtrace for programmers:
———-
freemarker.core.InvalidReferenceException: Expression user.assocs["exp:user"] is undefined on line 6, column 17 in unav/getExpReviewers.post.xml.ftl.
   at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:124)
   at freemarker.core.DynamicKeyName._getAsTemplateModel(DynamicKeyName.java:75)
   at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
   at freemarker.core.Dot._getAsTemplateModel(Dot.java:74)
   at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
   at freemarker.core.DynamicKeyName._getAsTemplateModel(DynamicKeyName.java:74)
   at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
   at freemarker.core.Expression.getStringValue(Expression.java:93)
   at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
   at freemarker.core.Environment.visit(Environment.java:210)
   at freemarker.core.MixedContent.accept(MixedContent.java:92)
   at freemarker.core.Environment.visit(Environment.java:210)
   at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179)
   at freemarker.core.Environment.visit(Environment.java:417)
   at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)
   at freemarker.core.Environment.visit(Environment.java:210)
   at freemarker.core.MixedContent.accept(MixedContent.java:92)
   at freemarker.core.Environment.visit(Environment.java:210)
   at freemarker.core.Environment.process(Environment.java:190)
   at freemarker.template.Template.process(Template.java:237)
   at org.alfresco.repo.template.FreeMarkerProcessor.process(FreeMarkerProcessor.java:197)
   at org.springframework.extensions.webscripts.AbstractWebScript.renderTemplate(AbstractWebScript.java:589)
   at org.springframework.extensions.webscripts.DeclarativeWebScript.renderFormatTemplate(DeclarativeWebScript.java:267)
   at org.springframework.extensions.webscripts.DeclarativeWebScript.execute(DeclarativeWebScript.java:147)
   at org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecute(RepositoryContainer.java:336)
   at org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecuteAs(RepositoryContainer.java:466)
   at org.alfresco.repo.web.scripts.RepositoryContainer.executeScript(RepositoryContainer.java:304)
   at org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:333)
   at org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:189)
   at org.springframework.extensions.webscripts.servlet.WebScriptServlet.service(WebScriptServlet.java:118)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.alfresco.web.app.servlet.GlobalLocalizationFilter.doFilter(GlobalLocalizationFilter.java:58)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
   at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
   at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
   at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
   at java.lang.Thread.run(Thread.java:619)


Si alguien puede ayudarme, lo agradecería.

Outcomes