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?
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)
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.
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.
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.
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é.
Bonitasoft empowers development teams with Bonita, the open-source and extensible platform to solve the most demanding process automation use cases. The Bonita platform accelerates delivery of complex applications with clear separation between capabilities for visual programming and for coding. Bonita integrates with existing solutions, orchestrates heterogeneous systems, and provides deep visibility into processes across the organization.