From 53f5d223551880f41af518508e9d2048ea00cce5 Mon Sep 17 00:00:00 2001 From: "S.Listl" <S.Listl@SLISTL.aditosoftware.local> Date: Thu, 23 Jul 2020 16:53:01 +0200 Subject: [PATCH] #1058714 Workflow forms with conditional fields --- .../WorkflowTask_entity.aod | 5 ++-- .../formdefinition/valueProcess.js | 9 +++++++ .../entityfields/formresult/onValueChange.js | 25 +++++++++++++++++++ .../recordcontainers/jdito/contentProcess.js | 1 - 4 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 entity/WorkflowTask_entity/entityfields/formdefinition/valueProcess.js create mode 100644 entity/WorkflowTask_entity/entityfields/formresult/onValueChange.js diff --git a/entity/WorkflowTask_entity/WorkflowTask_entity.aod b/entity/WorkflowTask_entity/WorkflowTask_entity.aod index f5bcf99498..938fbcdc99 100644 --- a/entity/WorkflowTask_entity/WorkflowTask_entity.aod +++ b/entity/WorkflowTask_entity/WorkflowTask_entity.aod @@ -27,9 +27,11 @@ </entityField> <entityField> <name>FORMDEFINITION</name> + <valueProcess>%aditoprj%/entity/WorkflowTask_entity/entityfields/formdefinition/valueProcess.js</valueProcess> </entityField> <entityField> <name>FORMRESULT</name> + <onValueChange>%aditoprj%/entity/WorkflowTask_entity/entityfields/formresult/onValueChange.js</onValueChange> </entityField> <entityField> <name>NAME</name> @@ -257,9 +259,6 @@ <isFilterable v="true" /> <isLookupFilter v="true" /> </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>FORMDEFINITION.value</name> - </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> <name>FORMRESULT.value</name> </jDitoRecordFieldMapping> diff --git a/entity/WorkflowTask_entity/entityfields/formdefinition/valueProcess.js b/entity/WorkflowTask_entity/entityfields/formdefinition/valueProcess.js new file mode 100644 index 0000000000..8fc3f05f70 --- /dev/null +++ b/entity/WorkflowTask_entity/entityfields/formdefinition/valueProcess.js @@ -0,0 +1,9 @@ +import("system.result"); +import("system.vars"); +import("system.workflow"); +import("system.neon"); + +//the value of this field can be set by the onValueChange process of FORMRESULT + +if (vars.get("$this.value") == null) + result.string(workflow.getFormProperties(vars.get("$field.UID"))); \ No newline at end of file diff --git a/entity/WorkflowTask_entity/entityfields/formresult/onValueChange.js b/entity/WorkflowTask_entity/entityfields/formresult/onValueChange.js new file mode 100644 index 0000000000..9e42cd8ca7 --- /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)); +} \ No newline at end of file diff --git a/entity/WorkflowTask_entity/recordcontainers/jdito/contentProcess.js b/entity/WorkflowTask_entity/recordcontainers/jdito/contentProcess.js index de6e83f10c..ed15981f64 100644 --- a/entity/WorkflowTask_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/WorkflowTask_entity/recordcontainers/jdito/contentProcess.js @@ -96,7 +96,6 @@ result.object((function () task.processDefinitionId, task.processInstanceId, Date.parse(task.createTime).toString(), - workflow.getFormProperties(task.id) || "", "", variables.USER_ID || "", task.description || "", -- GitLab