Okay. So not sure what was causing the IOUtils to not function…
but here is a working code example for anyone going forward:
So in this use case i was dealing with a large email that needed to be rendered by freemarker
The html content is stored in a file called content.txt
. You can see this on line 3 of the script.
var processDefinitionId = execution.getProcessDefinitionId();
var deploymentId = execution.getProcessEngineServices().getRepositoryService().getProcessDefinition(processDefinitionId).getDeploymentId();
var resource = execution.getProcessEngineServices().getRepositoryService().getResourceAsStream(deploymentId, 'content.txt');
var IOUtils = Java.type('org.apache.commons.io.IOUtils');
var String = Java.type('java.lang.String');
var content = new String(IOUtils.toByteArray(resource), 'UTF-8');
// Placeholder content that will be binded into the freemarker bindings.
// in Freemarker, you access these with ${placeholders.firstName}
var placeholderValues= {
"firstName": "Someones First Name",
"id": "123456789",
"time": "5",
"name": "A Name"
}
// Render the html into the freemarker engine
var ScriptEngine= new JavaImporter(javax.script);
var emailContent = "";
with (ScriptEngine) {
var manager = new ScriptEngineManager();
var engine = manager.getEngineByName("freemarker");
var bindings = engine.createBindings();
bindings.put("placeholders", placeholderValues);
var rendered = engine.eval(content, bindings);
emailContent = rendered;
};
The emailContent
variable will contain the rendered/processed content