From 1ea4108e5caabaf53ae95b3834e8fe312fb40e2c Mon Sep 17 00:00:00 2001
From: Sebastian Listl <s.listl@adito.de>
Date: Fri, 27 Nov 2020 16:15:33 +0100
Subject: [PATCH] Newsletter workflow

---
 .../Data_alias/basic/2020.2.2/changelog.xml   |  1 +
 .../2020.2.2/insert_newsletterAttribute.xml   | 33 +++++++++++++++++
 .../synchronizedocuments/onActionProcess.js   |  2 +-
 .../MSTeamsDocument_entity.aod                | 35 ++++++++-----------
 .../importdocuments/onActionProcess.js}       |  8 ++---
 .../recordcontainers/jdito/contentProcess.js  |  9 -----
 process/Workflow_lib/process.js               | 10 ++++--
 7 files changed, 61 insertions(+), 37 deletions(-)
 create mode 100644 .liquibase/Data_alias/basic/2020.2.2/insert_newsletterAttribute.xml
 rename entity/MSTeamsDocument_entity/{recordcontainers/jdito/onInsert.js => entityfields/importdocuments/onActionProcess.js} (75%)
 delete mode 100644 entity/MSTeamsDocument_entity/recordcontainers/jdito/contentProcess.js

diff --git a/.liquibase/Data_alias/basic/2020.2.2/changelog.xml b/.liquibase/Data_alias/basic/2020.2.2/changelog.xml
index 052c3a8db2..7f5016480e 100644
--- a/.liquibase/Data_alias/basic/2020.2.2/changelog.xml
+++ b/.liquibase/Data_alias/basic/2020.2.2/changelog.xml
@@ -5,4 +5,5 @@
     <include relativeToChangelogFile="true" file="Knowledgemanagement/changelog_knowledgeManagement.xml"/>
     <include relativeToChangelogFile="true" file="insert_employeeCountAttribute.xml"/>
     <include relativeToChangelogFile="true" file="MSTeams/changelog.xml"/>
+    <include relativeToChangelogFile="true" file="insert_newsletterAttribute.xml"/>
 </databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/2020.2.2/insert_newsletterAttribute.xml b/.liquibase/Data_alias/basic/2020.2.2/insert_newsletterAttribute.xml
new file mode 100644
index 0000000000..af877f2324
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2020.2.2/insert_newsletterAttribute.xml
@@ -0,0 +1,33 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+  <changeSet author="s.listl" id="4b285b34-29bc-4446-8d95-37cfcff7bd58">
+      <insert tableName="AB_ATTRIBUTE">
+          <column name="AB_ATTRIBUTEID" value="cf985906-b4f9-443e-9d7b-edbeb60ca463"/>
+          <column name="ATTRIBUTE_NAME" value="Marketing"/>
+          <column name="ATTRIBUTE_TYPE" value="GROUP"/>
+          <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+      </insert>
+      <insert tableName="AB_ATTRIBUTE">
+          <column name="AB_ATTRIBUTEID" value="e196975c-6cfd-46dc-9cb2-053893ec2faa"/>
+          <column name="ATTRIBUTE_PARENT_ID" value="cf985906-b4f9-443e-9d7b-edbeb60ca463"/>
+          <column name="ATTRIBUTE_NAME" value="Newsletter"/>
+          <column name="ATTRIBUTE_TYPE" value="BOOLEAN"/>
+          <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+          <column name="SORTING" valueNumeric="0"/>
+      </insert>
+      <insert tableName="AB_ATTRIBUTEUSAGE">
+          <column name="AB_ATTRIBUTEUSAGEID" value="e9842896-628c-4c80-a0ef-811f35b8ae51"/>
+          <column name="AB_ATTRIBUTE_ID" value="cf985906-b4f9-443e-9d7b-edbeb60ca463"/>
+          <column name="OBJECT_TYPE" value="Person"/>
+          <column name="MAX_COUNT" valueNumeric="1"/>
+      </insert>
+      <insert tableName="AB_ATTRIBUTEUSAGE">
+          <column name="AB_ATTRIBUTEUSAGEID" value="fc594860-76c5-4acb-9758-44ea1a1db5d0"/>
+          <column name="AB_ATTRIBUTE_ID" value="e196975c-6cfd-46dc-9cb2-053893ec2faa"/>
+          <column name="OBJECT_TYPE" value="Person"/>
+          <column name="MAX_COUNT" valueNumeric="1"/>
+      </insert>
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js b/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js
index 2d87149229..841ff10b18 100644
--- a/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js
+++ b/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js
@@ -1,7 +1,7 @@
 import("system.neon");
 import("system.vars");
 
-neon.openContext("MSTTeamDocument", null, null, neon.OPERATINGSTATE_NEW, {
+neon.openContext("MSTTeamsDocument", "MSTeamsDocumentEdit_view", null, neon.OPERATINGSTATE_VIEW, {
     "MSTTeamId_param" : vars.get("$param.MSTTeamId_param"),
     "ObjectRowId_param" : vars.get("$param.AssignmentRowId_param"),
     "AssignmentName_param" : vars.get("$param.AssignmentName_param"),
diff --git a/entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod b/entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod
index 9929c440ae..ac694130ae 100644
--- a/entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod
+++ b/entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod
@@ -4,7 +4,6 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/MSTeamsDocument_entity/documentation.adoc</documentation>
   <siblings />
-  <recordContainer>jdito</recordContainer>
   <entityFields>
     <entityProvider>
       <name>#PROVIDER</name>
@@ -14,12 +13,14 @@
       <title>Documents</title>
       <dropDownProcess>%aditoprj%/entity/MSTeamsDocument_entity/entityfields/documents/dropDownProcess.js</dropDownProcess>
       <selectionMode>MULTI</selectionMode>
+      <state>EDITABLE</state>
     </entityField>
     <entityField>
       <name>CHANNEL</name>
       <title>Channel</title>
       <consumer>Channels</consumer>
       <mandatory v="true" />
+      <state>EDITABLE</state>
     </entityField>
     <entityParameter>
       <name>ObjectRowId_param</name>
@@ -38,17 +39,17 @@
     </entityParameter>
     <entityConsumer>
       <name>Channels</name>
-      <dependency>
-        <name>dependency</name>
-        <entityName>MSTeamsChannel_entity</entityName>
-        <fieldName>ChannelsByName</fieldName>
-      </dependency>
       <children>
         <entityParameter>
           <name>TeamId_param</name>
           <valueProcess>%aditoprj%/entity/MSTeamsDocument_entity/entityfields/channels/children/teamid_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
+      <dependency>
+        <name>dependency</name>
+        <entityName>MSTeamsChannel_entity</entityName>
+        <fieldName>ChannelsByName</fieldName>
+      </dependency>
     </entityConsumer>
     <entityParameter>
       <name>MSTTeamId_param</name>
@@ -59,21 +60,15 @@
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
+    <entityActionField>
+      <name>importDocuments</name>
+      <onActionProcess>%aditoprj%/entity/MSTeamsDocument_entity/entityfields/importdocuments/onActionProcess.js</onActionProcess>
+    </entityActionField>
   </entityFields>
   <recordContainers>
-    <jDitoRecordContainer>
-      <name>jdito</name>
-      <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
-      <contentProcess>%aditoprj%/entity/MSTeamsDocument_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
-      <onInsert>%aditoprj%/entity/MSTeamsDocument_entity/recordcontainers/jdito/onInsert.js</onInsert>
-      <recordFieldMappings>
-        <jDitoRecordFieldMapping>
-          <name>UID.value</name>
-        </jDitoRecordFieldMapping>
-        <jDitoRecordFieldMapping>
-          <name>DOCUMENTS.value</name>
-        </jDitoRecordFieldMapping>
-      </recordFieldMappings>
-    </jDitoRecordContainer>
+    <datalessRecordContainer>
+      <name>dataless</name>
+      <alias>Data_alias</alias>
+    </datalessRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/MSTeamsDocument_entity/recordcontainers/jdito/onInsert.js b/entity/MSTeamsDocument_entity/entityfields/importdocuments/onActionProcess.js
similarity index 75%
rename from entity/MSTeamsDocument_entity/recordcontainers/jdito/onInsert.js
rename to entity/MSTeamsDocument_entity/entityfields/importdocuments/onActionProcess.js
index d97ac448ef..7237c6c01d 100644
--- a/entity/MSTeamsDocument_entity/recordcontainers/jdito/onInsert.js
+++ b/entity/MSTeamsDocument_entity/entityfields/importdocuments/onActionProcess.js
@@ -9,7 +9,7 @@ import("system.logging");
 import("system.neon");
 
 var rowData = vars.get("$local.rowdata");
-var documents = text.decodeMS(rowData["DOCUMENTS.value"]);
+var documents = text.decodeMS(vars.get("$field.DOCUMENTS"));
 
 documents.forEach(function (document)
 {
@@ -20,8 +20,8 @@ documents.forEach(function (document)
     var assignmentName = vars.get("$param.AssignmentName_param");
     var assignmentRowId = vars.get("$param.ObjectRowId_param");
     var alias = SqlUtils.getBinariesAlias();
-
-    var uid = db.insertBinary(assignmentTable, assignmentName, assignmentRowId, null, 
-            file, documentName, "", "", alias, util.getNewUUID());    
+    
+    db.insertBinary(assignmentTable, assignmentName, assignmentRowId, null, 
+        file, documentName, "", "", alias, util.getNewUUID());    
 });
 
diff --git a/entity/MSTeamsDocument_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTeamsDocument_entity/recordcontainers/jdito/contentProcess.js
deleted file mode 100644
index af9ece7caa..0000000000
--- a/entity/MSTeamsDocument_entity/recordcontainers/jdito/contentProcess.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import("system.result");
-import("system.vars");
-
-//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003
-var rows = [];
-if (vars.get("$local.idvalues"))
-    rows = vars.get("$local.idvalues").map(function (id) {return [id, ""];});
-
-result.object(rows);
\ No newline at end of file
diff --git a/process/Workflow_lib/process.js b/process/Workflow_lib/process.js
index 0573080119..375b30cc06 100644
--- a/process/Workflow_lib/process.js
+++ b/process/Workflow_lib/process.js
@@ -633,7 +633,7 @@ WorkflowLinkActions.types.RECEIVE_TASK.execute = function (pParameters)
 {
     if (!pParameters.processInstanceId)
         return;
-    workflow.triggerReceiveTask(pParameters.processInstanceId, pParameters.receiveTask || null);
+    workflow.triggerReceiveTask(pParameters.processInstanceId, pParameters.receiveTask || null, pParameters.variables || null);
 }
 
 /**
@@ -643,7 +643,7 @@ WorkflowLinkActions.types.SIGNAL.execute = function (pParameters)
 {
     if (!pParameters.signal)
         return;
-    workflow.signalEventReceived(pParameters.signal);
+    workflow.signalEventReceived(pParameters.signal, pParameters.variables || null);
 }
 
 /**
@@ -653,7 +653,7 @@ WorkflowLinkActions.types.MESSAGE.execute = function (pParameters)
 {
     if (!pParameters.processInstanceId || !pParameters.message)
         return;
-    workflow.messageEventReceived(pParameters.message, pParameters.processInstanceId);
+    workflow.messageEventReceived(pParameters.message, pParameters.processInstanceId, pParameters.variables || null);
 }
 
 /**
@@ -679,6 +679,8 @@ WorkflowLinkActions.encodeAction = function (pType, pLink, pParams)
         actionObj.ms = pParams.message;
     if (pParams.receiveTask)
         actionObj.re = pParams.receiveTask;
+    if (pParams.variables)
+        actionObj.v = pParams.variables;
     actionObj.ty = pType;
     actionObj.ln = pLink;
     
@@ -721,6 +723,8 @@ WorkflowLinkActions.parseAction = function (pEncodedAction)
         actionParams.message = parsedAction.ms;
     if (parsedAction.re)
         actionParams.receiveTask = parsedAction.re;
+    if (parsedAction.v)
+        actionParams.variables = parsedAction.v;
     
     return {
         type: parsedAction.ty || null,
-- 
GitLab