From 31a0d0ecb37d9f2484cf00e877a2c6d165634aa5 Mon Sep 17 00:00:00 2001
From: "S.Listl" <S.Listl@SLISTL.aditosoftware.local>
Date: Wed, 25 Sep 2019 11:20:23 +0200
Subject: [PATCH] Workflow management

---
 .../WorkflowDefinition_entity.aod             | 17 ++++++++++++++
 .../entityfields/diagram/valueProcess.js      |  7 ++++++
 .../entityfields/fileupload/onValidation.js   | 10 +++++++++
 .../recordcontainers/jdito/contentProcess.js  |  5 ++++-
 .../WorkflowInstance_entity.aod               |  4 ++++
 .../WorkflowDefinition/WorkflowDefinition.aod |  4 ++++
 .../WorkflowInstance/WorkflowInstance.aod     | 11 ++++++++++
 .../WorkflowDefinitionDiagram_view.aod        | 18 +++++++++++++++
 .../WorkflowDefinitionFilter_view.aod         |  1 +
 .../WorkflowDefinitionMain_view.aod           | 10 +++++++++
 .../WorkflowDefinitionPreview_view.aod        |  1 +
 .../WorkflowInstanceFilter_view.aod           | 22 +++++++++++++++++++
 .../WorkflowInstancePreview_view.aod          | 10 +++++++++
 process/JditoFilter_lib/process.js            |  2 +-
 process/Workflow_lib/process.js               |  4 ++++
 15 files changed, 124 insertions(+), 2 deletions(-)
 create mode 100644 entity/WorkflowDefinition_entity/entityfields/diagram/valueProcess.js
 create mode 100644 entity/WorkflowDefinition_entity/entityfields/fileupload/onValidation.js
 create mode 100644 neonView/WorkflowDefinitionDiagram_view/WorkflowDefinitionDiagram_view.aod
 create mode 100644 neonView/WorkflowInstanceFilter_view/WorkflowInstanceFilter_view.aod
 create mode 100644 neonView/WorkflowInstancePreview_view/WorkflowInstancePreview_view.aod

diff --git a/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod b/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod
index 0c35d7ee8ef..dfeca41ef02 100644
--- a/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod
+++ b/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod
@@ -18,6 +18,8 @@
       <children>
         <entityActionField>
           <name>importWorkflow</name>
+          <isMenuAction v="false" />
+          <isObjectAction v="false" />
         </entityActionField>
       </children>
     </entityActionGroup>
@@ -33,6 +35,7 @@
     <entityField>
       <name>FILEUPLOAD</name>
       <contentType>FILE</contentType>
+      <onValidation>%aditoprj%/entity/WorkflowDefinition_entity/entityfields/fileupload/onValidation.js</onValidation>
     </entityField>
     <entityConsumer>
       <name>Instances</name>
@@ -53,10 +56,21 @@
       <name>NAME</name>
       <title>Name</title>
     </entityField>
+    <entityActionField>
+      <name>startNewInstance</name>
+      <title>Start workflow</title>
+      <iconId>VAADIN:PLAY</iconId>
+    </entityActionField>
+    <entityField>
+      <name>DIAGRAM</name>
+      <contentType>IMAGE</contentType>
+      <valueProcess>%aditoprj%/entity/WorkflowDefinition_entity/entityfields/diagram/valueProcess.js</valueProcess>
+    </entityField>
   </entityFields>
   <recordContainers>
     <jDitoRecordContainer>
       <name>jdito</name>
+      <isFilterable v="true" />
       <contentProcess>%aditoprj%/entity/WorkflowDefinition_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
       <onInsert>%aditoprj%/entity/WorkflowDefinition_entity/recordcontainers/jdito/onInsert.js</onInsert>
       <recordFieldMappings>
@@ -65,9 +79,11 @@
         </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
           <name>NAME.value</name>
+          <isFilterable v="true" />
         </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
           <name>CATEGORY.value</name>
+          <isFilterable v="true" />
         </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
           <name>KEY.value</name>
@@ -77,6 +93,7 @@
         </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
           <name>ISACTIVE.value</name>
+          <isFilterable v="true" />
         </jDitoRecordFieldMapping>
       </recordFieldMappings>
     </jDitoRecordContainer>
diff --git a/entity/WorkflowDefinition_entity/entityfields/diagram/valueProcess.js b/entity/WorkflowDefinition_entity/entityfields/diagram/valueProcess.js
new file mode 100644
index 00000000000..7d8f58e356d
--- /dev/null
+++ b/entity/WorkflowDefinition_entity/entityfields/diagram/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+import("system.workflow");
+
+if (vars.get("$sys.viewmode") == neon.FRAME_VIEWMODE_DATASET)
+    result.string(workflow.getProcessDiagram(vars.get("$field.UID")));
\ No newline at end of file
diff --git a/entity/WorkflowDefinition_entity/entityfields/fileupload/onValidation.js b/entity/WorkflowDefinition_entity/entityfields/fileupload/onValidation.js
new file mode 100644
index 00000000000..867d24c7332
--- /dev/null
+++ b/entity/WorkflowDefinition_entity/entityfields/fileupload/onValidation.js
@@ -0,0 +1,10 @@
+import("system.logging");
+import("system.result");
+import("system.vars");
+import("Document_lib");
+import("MimeType_lib");
+
+var mimetype = DocumentUtil.getMimeTypeFromUpload(vars.get("$local.value"));
+
+if (mimetype != MimeTypes.XML())
+    result.string("yeeeeeet");
\ No newline at end of file
diff --git a/entity/WorkflowDefinition_entity/recordcontainers/jdito/contentProcess.js b/entity/WorkflowDefinition_entity/recordcontainers/jdito/contentProcess.js
index f858d71640f..48ccb38fca8 100644
--- a/entity/WorkflowDefinition_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/WorkflowDefinition_entity/recordcontainers/jdito/contentProcess.js
@@ -1,7 +1,8 @@
+import("system.vars");
 import("system.result");
 import("Workflow_lib");
 import("system.workflow");
-
+import("JditoFilter_lib");
 
 var workflowDefObj = WorkflowDefinitionUtils.getDeployedDefinitions();
 var workflowDefs = [];
@@ -18,4 +19,6 @@ for (let i = 0, l = workflowDefObj.length; i < l; i++)
     ]);
 }
 
+workflowDefs = JditoFilterUtils.filterRecords(["UID", "NAME", "CATEGORY", "KEY", "VERSION", "ACTIVE"], workflowDefs, vars.get("$local.filter").filter);
+
 result.object(workflowDefs);
\ No newline at end of file
diff --git a/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod b/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod
index 71db007610e..492ca5a5c69 100644
--- a/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod
+++ b/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod
@@ -23,6 +23,10 @@
         </entityDependency>
       </dependencies>
     </entityProvider>
+    <entityParameter>
+      <name>WorkflowDefinitionId_param</name>
+      <expose v="true" />
+    </entityParameter>
   </entityFields>
   <recordContainers>
     <jDitoRecordContainer>
diff --git a/neonContext/WorkflowDefinition/WorkflowDefinition.aod b/neonContext/WorkflowDefinition/WorkflowDefinition.aod
index 1d0fcb58176..7270f1a656f 100644
--- a/neonContext/WorkflowDefinition/WorkflowDefinition.aod
+++ b/neonContext/WorkflowDefinition/WorkflowDefinition.aod
@@ -25,5 +25,9 @@
       <name>c3f4a104-c72f-40c2-a7a3-e2dcb3df35d1</name>
       <view>WorkflowDefinitionPreview_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>92c166cc-ccb3-4ce0-8cb8-315925350fb8</name>
+      <view>WorkflowDefinitionDiagram_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/WorkflowInstance/WorkflowInstance.aod b/neonContext/WorkflowInstance/WorkflowInstance.aod
index 8a865caa694..166a101fd70 100644
--- a/neonContext/WorkflowInstance/WorkflowInstance.aod
+++ b/neonContext/WorkflowInstance/WorkflowInstance.aod
@@ -2,5 +2,16 @@
 <neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.0">
   <name>WorkflowInstance</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <filterview>WorkflowInstanceFilter_view</filterview>
   <entity>WorkflowInstance_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>db8314f5-c171-4793-968f-ee32891467f8</name>
+      <view>WorkflowInstanceFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>f80251a2-25e3-41f3-a933-6663e733ed7a</name>
+      <view>WorkflowInstancePreview_view</view>
+    </neonViewReference>
+  </references>
 </neonContext>
diff --git a/neonView/WorkflowDefinitionDiagram_view/WorkflowDefinitionDiagram_view.aod b/neonView/WorkflowDefinitionDiagram_view/WorkflowDefinitionDiagram_view.aod
new file mode 100644
index 00000000000..b74e1c472c7
--- /dev/null
+++ b/neonView/WorkflowDefinitionDiagram_view/WorkflowDefinitionDiagram_view.aod
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.2">
+  <name>WorkflowDefinitionDiagram_view</name>
+  <title>Diagram</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <pictureViewTemplate>
+      <name>Diagram</name>
+      <pictureField>DIAGRAM</pictureField>
+      <entityField>#ENTITY</entityField>
+    </pictureViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/WorkflowDefinitionFilter_view/WorkflowDefinitionFilter_view.aod b/neonView/WorkflowDefinitionFilter_view/WorkflowDefinitionFilter_view.aod
index 745c817d7ff..5d978a33632 100644
--- a/neonView/WorkflowDefinitionFilter_view/WorkflowDefinitionFilter_view.aod
+++ b/neonView/WorkflowDefinitionFilter_view/WorkflowDefinitionFilter_view.aod
@@ -2,6 +2,7 @@
 <neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.2">
   <name>WorkflowDefinitionFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <filterable v="true" />
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/WorkflowDefinitionMain_view/WorkflowDefinitionMain_view.aod b/neonView/WorkflowDefinitionMain_view/WorkflowDefinitionMain_view.aod
index 083dda24d5c..3f1788cc60b 100644
--- a/neonView/WorkflowDefinitionMain_view/WorkflowDefinitionMain_view.aod
+++ b/neonView/WorkflowDefinitionMain_view/WorkflowDefinitionMain_view.aod
@@ -14,5 +14,15 @@
       <entityField>#ENTITY</entityField>
       <view>WorkflowDefinitionPreview_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>17dd244c-fe9b-4df6-a6c0-7ebcfea04ec8</name>
+      <entityField>Instances</entityField>
+      <view>WorkflowInstanceFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>ffea2e5b-1f53-42ee-b845-9f06e4d23b30</name>
+      <entityField>#ENTITY</entityField>
+      <view>WorkflowDefinitionDiagram_view</view>
+    </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/WorkflowDefinitionPreview_view/WorkflowDefinitionPreview_view.aod b/neonView/WorkflowDefinitionPreview_view/WorkflowDefinitionPreview_view.aod
index 0e301c9834b..98ff813a0dc 100644
--- a/neonView/WorkflowDefinitionPreview_view/WorkflowDefinitionPreview_view.aod
+++ b/neonView/WorkflowDefinitionPreview_view/WorkflowDefinitionPreview_view.aod
@@ -11,6 +11,7 @@
     <cardViewTemplate>
       <name>Card</name>
       <titleField>NAME</titleField>
+      <subtitleField>CATEGORY</subtitleField>
       <entityField>#ENTITY</entityField>
     </cardViewTemplate>
   </children>
diff --git a/neonView/WorkflowInstanceFilter_view/WorkflowInstanceFilter_view.aod b/neonView/WorkflowInstanceFilter_view/WorkflowInstanceFilter_view.aod
new file mode 100644
index 00000000000..c3724e16f21
--- /dev/null
+++ b/neonView/WorkflowInstanceFilter_view/WorkflowInstanceFilter_view.aod
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.2">
+  <name>WorkflowInstanceFilter_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>Table</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTableColumn>
+          <name>c5d2c47a-5b20-49c9-b49c-5aee951ce2db</name>
+          <entityField>UID</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/WorkflowInstancePreview_view/WorkflowInstancePreview_view.aod b/neonView/WorkflowInstancePreview_view/WorkflowInstancePreview_view.aod
new file mode 100644
index 00000000000..c786a1ca2ef
--- /dev/null
+++ b/neonView/WorkflowInstancePreview_view/WorkflowInstancePreview_view.aod
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.2">
+  <name>WorkflowInstancePreview_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <headerFooterLayout>
+      <name>layout</name>
+    </headerFooterLayout>
+  </layout>
+</neonView>
diff --git a/process/JditoFilter_lib/process.js b/process/JditoFilter_lib/process.js
index a5641323c48..8f8b15f3a86 100644
--- a/process/JditoFilter_lib/process.js
+++ b/process/JditoFilter_lib/process.js
@@ -131,7 +131,7 @@ JditoFilterUtils.filterRecords = function (pColumns, pRecords, pFilter, pCustomC
     if (!pFilter)
         return pRecords;
     
-    var filter = new JditoFilterHelper(pColumns, pFilter, pCustomCheckFns, pCheckFnThisArg);
+    var filter = new JditoFilterHelper(pColumns, pFilter, pCustomCheckFns || {}, pCheckFnThisArg);
     
     return pRecords.filter(function (row)
         {
diff --git a/process/Workflow_lib/process.js b/process/Workflow_lib/process.js
index 2d1fcbf93d2..4fa7dc51ec6 100644
--- a/process/Workflow_lib/process.js
+++ b/process/Workflow_lib/process.js
@@ -1,3 +1,4 @@
+import("system.logging");
 import("system.workflow");
 
 
@@ -14,6 +15,9 @@ WorkflowDefinitionUtils.getDeployedDefinitions = function (pCategory, pActive)
     var workflowDefs = workflow.getProcessDefinitions(loadConfig);
     workflowDefs = JSON.parse(workflowDefs);
     
+//    logging.log(JSON.stringify(workflowDefs, null, "\t"))
+//    workflow.startProcessByKey("offerVerification", [])
+    
     return workflowDefs;
 }
 
-- 
GitLab