AnsweredAssumed Answered

Notification par email

Question asked by jeanjot on Nov 11, 2013
Latest reply on Dec 4, 2013 by jeanjot
Bonjour

Je rencontre une difficulté sur la notification par email via un règle déposé sur un dossier.

en premier lieu voici le paramétrage du outbound dans le fichier : alfresco-global.properties

### License location ###
dir.license.external=/home/app/alfresco42d

### Email Outbound ###
mail.host=smtp.gmail.com
mail.port=465
mail.username=xxxxxxx@gmail.com
mail.password=xxxxxxxxxx
mail.protocol=smtps
mail.smtps.starttls.enable=true
mail.smtps.auth=true
mail.encoding=UTF-8


1. Je n'ai pas de soucis pour faire une invitation d'une personne à partie d'un site. Le email est bien envoyé à l'utilisateur.
Et celui-ci peut répondre en retour au lien via le message reçu pour s'abonner au site.

2. Dans la librairie su site, je mets en place une règle sur le dossier "A".

3. La règle contient les information suivante :
   a. Quand : Des éléments sont créés ou entrent dans ce dossier
   b. Si tous les critères sont remplis : Tous les éléments
   c. Executer une action : Envoyer un email
   d. paramétrage de l'email choix d'un utilisateur pour réception de la notification, puis mise en place d'un template de modèle à partir du dictionnaire de données : notify_user_email_fr.html.ftl
Pour finir validation de la règle en ayant coché : Appliquer la règle au sous-dossier.

Voilà pour la mise en place.

Maintenant, je teste la notification.
Je dépose dans le dossier "A" un document : test.txt

Résultat : Aucun email n'arrive à l'utilisateur.

Message dans le fichier de log catalina.out dans le dossier : HOME_ALFRESCO/tomcat/logs/

     2013-11-11 19:41:33,133  ERROR [freemarker.runtime] [http-apr-8080-exec-1] Template processing error: "Expression person is undefined on line 38, column 57 in workspace://SpacesStore/c21134fe-da56-4ff8-94b1-194bde03f6e0."
    
    Expression person is undefined on line 38, column 57 in workspace://SpacesStore/c21134fe-da56-4ff8-94b1-194bde03f6e0.
    The problematic instruction:
    ———-
    ==> ${person.properties.firstName} [on line 38, column 55 in workspace://SpacesStore/c21134fe-da56-4ff8-94b1-194bde03f6e0]
    ———-
    
    Java backtrace for programmers:
    ———-
    freemarker.core.InvalidReferenceException: Expression person is undefined on line 38, column 57 in workspace://SpacesStore/c21134fe-da56-4ff8-94b1-194bde03f6e0.
            at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:125)
            at freemarker.core.TemplateObject.invalidTypeException(TemplateObject.java:135)
            at freemarker.core.Dot._getAsTemplateModel(Dot.java:78)
            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.Expression.getStringValue(Expression.java:93)
            at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
            at freemarker.core.Environment.visit(Environment.java:221)
            at freemarker.core.MixedContent.accept(MixedContent.java:92)
            at freemarker.core.Environment.visit(Environment.java:221)
            at freemarker.core.Environment.process(Environment.java:199)
            at org.alfresco.repo.template.FreeMarkerProcessor.process(FreeMarkerProcessor.java:218)
            at org.alfresco.repo.processor.TemplateServiceImpl.processTemplate(TemplateServiceImpl.java:177)
            at org.alfresco.repo.processor.TemplateServiceImpl.processTemplate(TemplateServiceImpl.java:240)
            at org.alfresco.repo.action.executer.MailActionExecuter$3.prepare(MailActionExecuter.java:847)
            at org.alfresco.repo.action.executer.MailActionExecuter.prepareEmail(MailActionExecuter.java:908)
            at org.alfresco.repo.action.executer.MailActionExecuter.prepareEmails(MailActionExecuter.java:540)
            at org.alfresco.repo.action.executer.MailActionExecuter.executeImpl(MailActionExecuter.java:458)
            at org.alfresco.repo.action.executer.ActionExecuterAbstractBase.execute(ActionExecuterAbstractBase.java:258)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:606)
            at org.alfresco.repo.management.subsystems.SubsystemProxyFactory$1.invoke(SubsystemProxyFactory.java:72)
            at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
            at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
            at com.sun.proxy.$Proxy316.execute(Unknown Source)
            at org.alfresco.repo.action.ActionServiceImpl.directActionExecution(ActionServiceImpl.java:838)
            at org.alfresco.repo.action.executer.CompositeActionExecuter.executeImpl(CompositeActionExecuter.java:66)
            at org.alfresco.repo.action.executer.ActionExecuterAbstractBase.execute(ActionExecuterAbstractBase.java:258)
            at org.alfresco.repo.action.ActionServiceImpl.directActionExecution(ActionServiceImpl.java:838)
            at org.alfresco.repo.action.ActionServiceImpl.executeActionImpl(ActionServiceImpl.java:738)
            at org.alfresco.repo.action.ActionServiceImpl.executeAction(ActionServiceImpl.java:572)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:606)
            at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
            at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
            at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
            at org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor.invoke(AlwaysProceedMethodInterceptor.java:34)
            at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
            at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:46)
            at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
            at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:161)
            at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
            at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
            at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
            at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
            at com.sun.proxy.$Proxy42.executeAction(Unknown Source)
            at org.alfresco.repo.rule.RuleServiceImpl.executeAction(RuleServiceImpl.java:1250)
            at org.alfresco.repo.rule.RuleServiceImpl.executeRule(RuleServiceImpl.java:1244)
            at org.alfresco.repo.rule.RuleServiceImpl.executePendingRule(RuleServiceImpl.java:1190)
            at org.alfresco.repo.rule.RuleServiceImpl.executePendingRulesImpl(RuleServiceImpl.java:1119)
            at org.alfresco.repo.rule.RuleServiceImpl.executePendingRules(RuleServiceImpl.java:1092)
            at org.alfresco.repo.rule.RuleTransactionListener.beforeCommit(RuleTransactionListener.java:57)
            at org.alfresco.repo.transaction.AlfrescoTransactionSupport$TransactionSynchronizationImpl.doBeforeCommit(AlfrescoTransactionSupport.java:737)
            at org.alfresco.repo.transaction.AlfrescoTransactionSupport$TransactionSynchronizationImpl.doBeforeCommit(AlfrescoTransactionSupport.java:717)
            at org.alfresco.repo.transaction.AlfrescoTransactionSupport$TransactionSynchronizationImpl.beforeCommit(AlfrescoTransactionSupport.java:683)
            at org.springframework.transaction.support.TransactionSynchronizationUtils.triggerBeforeCommit(TransactionSynchronizationUtils.java:95)
            at org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerBeforeCommit(AbstractPlatformTransactionManager.java:927)
            at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:737)
            at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723)
            at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:393)
            at org.alfresco.util.transaction.SpringAwareUserTransaction.commit(SpringAwareUserTransaction.java:472)
            at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:474)
            at org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecute(RepositoryContainer.java:491)
            at org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecuteAs(RepositoryContainer.java:529)
            at org.alfresco.repo.web.scripts.RepositoryContainer.executeScript(RepositoryContainer.java:341)
            at org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:378)
            at org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:209)
            at org.springframework.extensions.webscripts.servlet.WebScriptServlet.service(WebScriptServlet.java:132)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            at org.alfresco.web.app.servlet.GlobalLocalizationFilter.doFilter(GlobalLocalizationFilter.java:61)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
            at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
            at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
            at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
            at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
            at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
            at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1852)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
            at java.lang.Thread.run(Thread.java:724)


l'erreur se trouve sur les premières lignes :

     2013-11-11 19:41:33,133  ERROR [freemarker.runtime] [http-apr-8080-exec-1] Template processing error: "Expression person is undefined on line 38, column 57 in workspace://SpacesStore/c21134fe-da56-4ff8-94b1-194bde03f6e0."
    
    Expression person is undefined on line 38, column 57 in workspace://SpacesStore/c21134fe-da56-4ff8-94b1-194bde03f6e0.
    The problematic instruction:
    ———-
    ==> ${person.properties.firstName} [on line 38, column 55 in workspace://SpacesStore/c21134fe-da56-4ff8-94b1-194bde03f6e0]
    ———-


J'ai comme l'impression qu'il y a eu une régression lors du passage en 4.2.d non corrigé 4.2.e, alors qu'il me semble que celle-ci a été corrigé dans JIRA en version 4.2.0 entreprise.
Mais je ne retouve pas le post sous JIRA, désolé.

Si quelqu'un peut confirmer mon message …
et occasionnelement comment corriger le problème. je suis preneur…

EDIT :
Le problème n'existe pas si je n'ai que du texte dans mon email. Le problème est bien du aux expressions freemarker.

Outcomes