diff --git a/entity/WorkflowTask_entity/WorkflowTask_entity.aod b/entity/WorkflowTask_entity/WorkflowTask_entity.aod index 3ffbe846c77cc3e4d64c7ed734ff2399dc30450a..938fbcdc991e33b51be6bc7134499438ac1fbabd 100644 --- a/entity/WorkflowTask_entity/WorkflowTask_entity.aod +++ b/entity/WorkflowTask_entity/WorkflowTask_entity.aod @@ -31,6 +31,7 @@ </entityField> <entityField> <name>FORMRESULT</name> + <onValueChange>%aditoprj%/entity/WorkflowTask_entity/entityfields/formresult/onValueChange.js</onValueChange> </entityField> <entityField> <name>NAME</name> diff --git a/entity/WorkflowTask_entity/entityfields/formresult/onValueChange.js b/entity/WorkflowTask_entity/entityfields/formresult/onValueChange.js new file mode 100644 index 0000000000000000000000000000000000000000..249aba04bbb279e4e8ae4dc4f7164fbeee463fe5 --- /dev/null +++ b/entity/WorkflowTask_entity/entityfields/formresult/onValueChange.js @@ -0,0 +1,25 @@ +import("system.result"); +import("system.vars"); +import("system.workflow"); +import("system.neon"); + +var taskId = vars.get("$field.UID"); +var newResult = vars.get("$local.value"); +var oldResult = vars.get("$field.FORMRESULT"); + +if (newResult && newResult !== oldResult) +{ + /* + * fieldListeners = all fields that are used inside a visibility expression + * -> if one of these fields is changed, set the new FORMDEFINITION + */ + var fieldListeners = JSON.parse(workflow.getFormFieldListeners(taskId)); + newResult = newResult ? JSON.parse(newResult) : {}; + oldResult = oldResult ? JSON.parse(oldResult) : {}; + var isRefreshRequired = fieldListeners.some(function (fieldId) + { + return newResult[fieldId] !== oldResult[fieldId]; + }); + if (isRefreshRequired) + neon.setFieldValue("$field.FORMDEFINITION", workflow.getFormProperties(taskId, newResult)); +}