I would like to create a list inside an activiti expression like in the following example:
<serviceTask activiti:class="com.example.workflow.servicetask.Foo" activiti:exclusive="true" id="foo" >
<extensionElements>
<activiti:field expression="${list
f(host1, host2, host3)}" name="hosts"/>
</extensionElements>
</serviceTask>
This seems to be not supported by default, but JUEL (the unified expression language implementation used by Activiti) provides some methods for adding custom functions.
In the debugger I was able to come up with some code that could evaluate a list expression:
org.activiti.engine.impl.juel.SimpleContext c = new org.activiti.engine.impl.juel.SimpleContext();
c.setFunction("list", "of", Arrays.class.getMethod("asList", Object[].class));
Context.getProcessEngineConfiguration().getExpressionManager()
.expressionFactory
.createValueExpression(c, "${list
f(host1, host2)}", Object.class)
.getValue(((ExecutionEntity) activityExecution).cachedElContext)
How can I configure Activiti to use custom functions like this?