Hi everyone
I have tuned up a little the usage of variables in Mail Templates.
usually when you want to use a variable like that
<mail-templates>
<variable name="defaultSubject" value="Mail" />
<mail-template name='default'>
<actors>#{taskInstance.actorId}</actors>
<subject>#{defaultSubject}</subject>
<text><![CDATA[Mail von Geppi:
#{mailMessage}]]>
</text>
</mail-template>
the variable is evaluated correctly and the value of Subject is set to "Mail"
but if you want to use variable references within the variables like this
<mail-templates>
<variable name="defaultSubject" value="[#{processDefinition.name} #{processInstance.id}] generated Mail" />
<mail-template name='default'>
<actors>#{taskInstance.actorId}</actors>
<subject>#{defaultSubject}</subject>
<text><![CDATA[Mail von Geppi:
#{mailMessage}]]>
</text>
</mail-template>
the value within the variable is not evaluated.
So i added a loop which evaluates the variable value until all references are solved.
In class org.jbpm.mail.Mail:
public String getSubject() {
if (subject==null) return null;
Object parsedValue = null;
String ret = subject;
do {
ret = evaluate(ret);
ret = JbpmExpressionEvaluator.translateExpressionToDollars(ret);
parsedValue = new ExpressionEvaluatorImpl().parseExpressionString(ret);
} while (!(parsedValue instanceof String));
return ret;
}
public String getText() {
if (text==null) return null;
Object parsedValue = null;
String ret = text;
do {
ret = evaluate(ret);
ret = JbpmExpressionEvaluator.translateExpressionToDollars(ret);
parsedValue = new ExpressionEvaluatorImpl().parseExpressionString(ret);
} while (!(parsedValue instanceof String));
return ret;
}
i will post a Jira Patch for this too
regards
Matthias