Freemarker Script: Greater than 4000 char, exceeding historic variable instance DB insert

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

1 Like