Connecteur courriel

Bonjour,

Lorsque je fais appel à ma varialble metier dans le contenu de mon courriel avec un attribut de type INTEGER, mon connecteur echoue par contre lorsque j'utilise le reste de type d'attribut, il passe.

Juste savoir, est-ce une erreur dans l'ecriture de l'expression ci-dessous de ma part?

${cloture.getNombreComptes}

 

Merci,

Hi,

You need to convert it into an String. It is enough to set a toString, for example as mail body

Hi,

For this product ${l.getLabel()} the cost is

${l.getCost().toString()}

 

Cheers

When you do in your way you get this exception

28-Apr-2020 11:10:59.229 GRAVE [Bonita-Worker-1-09] org.bonitasoft.engine.log.technical.TechnicalLoggerSLF4JImpl.log THREAD_ID=164 | HOSTNAME=LAP-00249 | TENANT_ID=1 | org.bonitasoft.engine.expression.exception.SExpressionEvaluationException : "PROCESS_DEFINITION_ID=9060518237361500220 | PROCESS_NAME=Pool | PROCESS_VERSION=1.0 | PROCESS_INSTANCE_ID=8 | ROOT_PROCESS_INSTANCE_ID=8 | FLOW_NODE_DEFINITION_ID=5024848533131228938 | FLOW_NODE_INSTANCE_ID=16 | FLOW_NODE_NAME=Étape1 | CONNECTOR_IMPLEMENTATION_CLASS_NAME=asdasd | CONNECTOR_INSTANCE_ID=4 | Declared return type class java.lang.String is not compatible with evaluated type class java.lang.Double for expression l.getCost()"
    org.bonitasoft.engine.expression.exception.SExpressionEvaluationException: PROCESS_DEFINITION_ID=9060518237361500220 | PROCESS_NAME=Pool | PROCESS_VERSION=1.0 | PROCESS_INSTANCE_ID=8 | ROOT_PROCESS_INSTANCE_ID=8 | FLOW_NODE_DEFINITION_ID=5024848533131228938 | FLOW_NODE_INSTANCE_ID=16 | FLOW_NODE_NAME=Étape1 | CONNECTOR_IMPLEMENTATION_CLASS_NAME=asdasd | CONNECTOR_INSTANCE_ID=4 | Declared return type class java.lang.String is not compatible with evaluated type class java.lang.Double for expression l.getCost()
        at org.bonitasoft.engine.expression.impl.ReturnTypeChecker.checkReturnType(ReturnTypeChecker.java:82)
        at org.bonitasoft.engine.expression.impl.ExpressionServiceImpl.evaluate(ExpressionServiceImpl.java:100)
        at org.bonitasoft.engine.core.expression.control.api.impl.ExpressionResolverServiceImpl.evaluateExpressionWithResolvedDependencies(ExpressionResolverServiceImpl.java:234)
        at org.bonitasoft.engine.core.expression.control.api.impl.ExpressionResolverServiceImpl.evaluateExpressionWithResolvedDependencies(ExpressionResolverServiceImpl.java:228)
        at org.bonitasoft.engine.core.expression.control.api.impl.ExpressionResolverServiceImpl.evaluateExpressionsFlatten(ExpressionResolverServiceImpl.java:127)
        at org.bonitasoft.engine.core.expression.control.api.impl.ExpressionResolverServiceImpl.evaluate(ExpressionResolverServiceImpl.java:86)
        at org.bonitasoft.engine.core.connector.impl.ConnectorServiceImpl.evaluateInputParameters(ConnectorServiceImpl.java:344)
        at org.bonitasoft.engine.connector.ConnectorServiceDecorator.evaluateInputParameters(ConnectorServiceDecorator.java:112)
        at org.bonitasoft.engine.execution.work.ExecuteConnectorWork$EvaluateParameterAndGetConnectorInstance.call(ExecuteConnectorWork.java:260)
        at org.bonitasoft.engine.execution.work.ExecuteConnectorWork$EvaluateParameterAndGetConnectorInstance.call(ExecuteConnectorWork.java:218)
        at org.bonitasoft.engine.transaction.JTATransactionServiceImpl.executeInTransaction(JTATransactionServiceImpl.java:286)
        at org.bonitasoft.engine.execution.work.ExecuteConnectorWork.work(ExecuteConnectorWork.java:148)
        at org.bonitasoft.engine.execution.work.failurewrapping.TxInHandleFailureWrappingWork.work(TxInHandleFailureWrappingWork.java:40)
        at org.bonitasoft.engine.execution.work.failurewrapping.TxInHandleFailureWrappingWork.work(TxInHandleFailureWrappingWork.java:40)
        at org.bonitasoft.engine.execution.work.failurewrapping.TxInHandleFailureWrappingWork.work(TxInHandleFailureWrappingWork.java:40)
        at org.bonitasoft.engine.execution.work.failurewrapping.TxInHandleFailureWrappingWork.work(TxInHandleFailureWrappingWork.java:40)
        at org.bonitasoft.engine.execution.work.InSessionBonitaWork.work(InSessionBonitaWork.java:60)
        at org.bonitasoft.engine.work.BonitaThreadPoolExecutor.lambda$submit$1(BonitaThreadPoolExecutor.java:131)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

 

Bonjour,

Pourriez vous joindre le log?

Que voulez vous dire par "j'utilise le reste de type attribut il passe".

J'imagine que vous avez un BDM nommé cloture, et un attribut nommé "nombreComptes" ? 

A priori, il faudrait mettre "${cloture.nombreComptes} (le nom de l'attribut, pas le getter) - sans vérification de ma part, cela fait un moment que je n'ai plus fait cela.

 

 

Bonjour, 

Je voulais dire qu'avec des attributs de type long, Sting, text,... J'obtiens les résultats recherchés. C'est à dire que lorsque je fais, par exemple, ${clôture.getNom} , avec "nom" un attribut type string. 

C'est plutôt ma variable métier qui est nommé cloture. 

Le problème c'est juste lorsque je fais appel à un attribut de type long, pour le reste ça marche avec la même synthaxe. 

 

Merci, 

 

Etrange.
J'essayerais à l'occasion.

Vous avez la possibilité de passer en mode "Groovy Script" mais l'écriture est beaucoup plus laborieuse.

peut etre pouvez vous joindre un process d'example plus simple, qui inclu votre BDM, cree un enregistrement et essaye d'envoyer le nom ? Ainsi, on pourra regarder plus facilement.

Cordialement

Juste savoir comment pourrais-je joindre un fichier ici?

Il faut le deposer sur un dropbox publique, et mettre le lien ici.

Bonjour,

Ci-dessous.

https://www.dropbox.com/transfer/AAAAALSCuoFtdEAGuN0Nrnp-7cPBwms2-jW20P5p87LLtFhgQioJ66o

Cdt,

Hello,

J'avais un peu de temps aujourd'hui pour regarder votre point, mais malheureusement le lien n'est plus actif. J'espere que vous avez résolu votre problème ! Désolé pour le délai de réactivité.