diff --git a/.liquibase/Data_alias/basic/2020.0.3/changelog.xml b/.liquibase/Data_alias/basic/2020.0.3/changelog.xml new file mode 100644 index 0000000000000000000000000000000000000000..495421b66bf5239d3189304c191e4a348c5fe02d --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.0.3/changelog.xml @@ -0,0 +1,5 @@ +<?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"> + <include relativeToChangelogFile="true" file="workflow/changelog.xml"/> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.0.3/workflow/changelog.xml b/.liquibase/Data_alias/basic/2020.0.3/workflow/changelog.xml new file mode 100644 index 0000000000000000000000000000000000000000..38bc2aca472b3ee723ac663a2ea3f1d2d2d4b5db --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.0.3/workflow/changelog.xml @@ -0,0 +1,5 @@ +<?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"> + <include relativeToChangelogFile="true" file="insert_workflowActivityType_keyword.xml"/> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.0.3/workflow/insert_workflowActivityType_keyword.xml b/.liquibase/Data_alias/basic/2020.0.3/workflow/insert_workflowActivityType_keyword.xml new file mode 100644 index 0000000000000000000000000000000000000000..9a7d0477cd652b93cfb98ddb0920354dcabbe093 --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.0.3/workflow/insert_workflowActivityType_keyword.xml @@ -0,0 +1,150 @@ +<?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="c48da681-5996-411f-9ab5-3b9e9f51931f"> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="579e1798-acd0-4fa6-8dbc-02c533e741f3"/> + <column name="KEYID" value="sequenceFlow"/> + <column name="TITLE" value="Sequence flow"/> + <column name="CONTAINER" value="WorkflowActivityType"/> + <column name="SORTING" valueNumeric="1"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="1"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="f472f6f9-d603-42d3-a413-6b549f4c2aa4"/> + <column name="KEYID" value="startEvent"/> + <column name="TITLE" value="Start event"/> + <column name="CONTAINER" value="WorkflowActivityType"/> + <column name="SORTING" valueNumeric="2"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="1"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="de02cd0d-b3ab-43e0-ae2f-f1b76e2323d1"/> + <column name="KEYID" value="endEvent"/> + <column name="TITLE" value="End event"/> + <column name="CONTAINER" value="WorkflowActivityType"/> + <column name="SORTING" valueNumeric="3"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="1"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="012f38fa-c7ee-4898-bed5-4652459dab23"/> + <column name="KEYID" value="userTask"/> + <column name="TITLE" value="User task"/> + <column name="CONTAINER" value="WorkflowActivityType"/> + <column name="SORTING" valueNumeric="4"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="1"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="4b9e19fb-0385-4033-8a03-6d37c43c6b01"/> + <column name="KEYID" value="serviceTask"/> + <column name="TITLE" value="Service task"/> + <column name="CONTAINER" value="WorkflowActivityType"/> + <column name="SORTING" valueNumeric="5"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="1"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="7e5ab737-a3e6-463c-974e-eb6021730d4a"/> + <column name="KEYID" value="scriptTask"/> + <column name="TITLE" value="Script task"/> + <column name="CONTAINER" value="WorkflowActivityType"/> + <column name="SORTING" valueNumeric="6"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="1"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="5e46546a-ee2e-41a2-b87f-a55e4c88df87"/> + <column name="KEYID" value="businessRuleTask"/> + <column name="TITLE" value="Business rule task"/> + <column name="CONTAINER" value="WorkflowActivityType"/> + <column name="SORTING" valueNumeric="7"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="1"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="ab66f18f-040d-44c1-b08c-949fa3928e37"/> + <column name="KEYID" value="receiveTask"/> + <column name="TITLE" value="Receive task"/> + <column name="CONTAINER" value="WorkflowActivityType"/> + <column name="SORTING" valueNumeric="8"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="1"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="4eba5820-4c2d-4a77-95d2-c6f12843d02c"/> + <column name="KEYID" value="manualTask"/> + <column name="TITLE" value="Manual task"/> + <column name="CONTAINER" value="WorkflowActivityType"/> + <column name="SORTING" valueNumeric="9"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="1"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="7fff1c17-66a0-44ec-a6f1-f0364602c0de"/> + <column name="KEYID" value="exclusiveGateway"/> + <column name="TITLE" value="Exclusive gateway"/> + <column name="CONTAINER" value="WorkflowActivityType"/> + <column name="SORTING" valueNumeric="10"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="1"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="7a32adf8-13ac-4943-a443-4d2f5340a8a5"/> + <column name="KEYID" value="parallelGateway"/> + <column name="TITLE" value="Parallel gateway"/> + <column name="CONTAINER" value="WorkflowActivityType"/> + <column name="SORTING" valueNumeric="11"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="1"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="22c13c1e-1c26-42b6-8e24-c522ec7f16a9"/> + <column name="KEYID" value="inclusiveGateway"/> + <column name="TITLE" value="Inclusive gateway"/> + <column name="CONTAINER" value="WorkflowActivityType"/> + <column name="SORTING" valueNumeric="12"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="1"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="50cb1b5f-2215-40e8-aa1e-daf34dc8a06b"/> + <column name="KEYID" value="eventBasedGateway"/> + <column name="TITLE" value="Event gateway"/> + <column name="CONTAINER" value="WorkflowActivityType"/> + <column name="SORTING" valueNumeric="13"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="1"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="f7f73dec-b461-4bb4-8d72-4cb63909dbba"/> + <column name="KEYID" value="boundaryEvent"/> + <column name="TITLE" value="Boundary event"/> + <column name="CONTAINER" value="WorkflowActivityType"/> + <column name="SORTING" valueNumeric="14"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="1"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="bd4300ce-8e9b-4efc-b995-8477ab374fc3"/> + <column name="KEYID" value="intermediateCatchEvent"/> + <column name="TITLE" value="Intermediate catching event"/> + <column name="CONTAINER" value="WorkflowActivityType"/> + <column name="SORTING" valueNumeric="15"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="1"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="5534a8d8-da1d-4448-835a-97cdcfee8907"/> + <column name="KEYID" value="intermediateThrowEvent"/> + <column name="TITLE" value="Intermediate throwing event"/> + <column name="CONTAINER" value="WorkflowActivityType"/> + <column name="SORTING" valueNumeric="16"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="1"/> + </insert> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/changelog.xml b/.liquibase/Data_alias/changelog.xml index 73081af173b773b44a7a3c3a6f05a881581d50c7..eee29581d9dcafac77aceb7875c2a9c0a1a00c36 100644 --- a/.liquibase/Data_alias/changelog.xml +++ b/.liquibase/Data_alias/changelog.xml @@ -10,6 +10,7 @@ <include relativeToChangelogFile="true" file="basic/2020.0.0/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2020.0.1/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2020.0.2/changelog.xml"/> + <include relativeToChangelogFile="true" file="basic/2020.0.3/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2020.1.0/changelog.xml"/> <!--enable this only when you definetly want to overwrite the existing data with demo records:--> diff --git a/.liquibase/_____SYSTEMALIAS/basic/2020.0.2/changelog.xml b/.liquibase/_____SYSTEMALIAS/basic/2020.0.2/changelog.xml new file mode 100644 index 0000000000000000000000000000000000000000..953f0a414ac0746d874fea860fc99e189b9f06d5 --- /dev/null +++ b/.liquibase/_____SYSTEMALIAS/basic/2020.0.2/changelog.xml @@ -0,0 +1,7 @@ +<?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="" id=""> + + </changeSet> +</databaseChangeLog> diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod index 972a7077db68804ac53f33d460c1c39d0db62b83..3e73f653b31260438edca188ff41c6b06d595c76 100644 --- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod +++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod @@ -589,6 +589,12 @@ <fieldName>KeywordPermissionCalendarTypes</fieldName> <isConsumer v="false" /> </entityDependency> + <entityDependency> + <name>7c05378a-c50f-4f94-bd18-e256baf86e31</name> + <entityName>WorkflowInstanceHistory_entity</entityName> + <fieldName>ActivityTypeKeyword</fieldName> + <isConsumer v="false" /> + </entityDependency> </dependencies> <children> <entityParameter> diff --git a/entity/WorkflowInstanceHistory_entity/WorkflowInstanceHistory_entity.aod b/entity/WorkflowInstanceHistory_entity/WorkflowInstanceHistory_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..d42c45821c74375bddb318328b46a0a703ff03eb --- /dev/null +++ b/entity/WorkflowInstanceHistory_entity/WorkflowInstanceHistory_entity.aod @@ -0,0 +1,143 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.13" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.13"> + <name>WorkflowInstanceHistory_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <title>History</title> + <grantCreate v="false" /> + <grantUpdate v="false" /> + <grantDelete v="false" /> + <titlePlural>Activites</titlePlural> + <recordContainer>jdito</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>UID</name> + </entityField> + <entityField> + <name>PROCESSINSTANCE_ID</name> + </entityField> + <entityField> + <name>START_TIME</name> + <title>Start time</title> + <contentType>DATE</contentType> + </entityField> + <entityField> + <name>END_TIME</name> + <title>End time</title> + <contentType>DATE</contentType> + </entityField> + <entityField> + <name>PROCESSDEFINITION_ID</name> + </entityField> + <entityField> + <name>DURATION</name> + <title>Duration</title> + <contentType>NUMBER</contentType> + </entityField> + <entityField> + <name>ACTIVITY_TYPE</name> + <title>Type</title> + <consumer>ActivityTypeKeyword</consumer> + </entityField> + <entityParameter> + <name>ProcessInstanceId_param</name> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> + <entityProvider> + <name>HistoryForWorkflowInstance</name> + <targetContextField>TARGET_CONTEXT</targetContextField> + <targetIdField>TASK_ID</targetIdField> + <titlePlural>History</titlePlural> + <dependencies> + <entityDependency> + <name>dae4ffad-5627-46b5-bf4c-b3b8490d4a29</name> + <entityName>WorkflowInstance_entity</entityName> + <fieldName>History</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + </entityProvider> + <entityField> + <name>ICON</name> + <contentType>IMAGE</contentType> + </entityField> + <entityField> + <name>TASK_ID</name> + </entityField> + <entityField> + <name>ACTIVITY_NAME</name> + <title>Name</title> + </entityField> + <entityField> + <name>TARGET_CONTEXT</name> + </entityField> + <entityConsumer> + <name>ActivityTypeKeyword</name> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> + <children> + <entityParameter> + <name>ContainerName_param</name> + <valueProcess>%aditoprj%/entity/WorkflowInstanceHistory_entity/entityfields/activitytypekeyword/children/containername_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>jdito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <isFilterable v="true" /> + <contentProcess>%aditoprj%/entity/WorkflowInstanceHistory_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>END_TIME.value</name> + <isFilterable v="true" /> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>START_TIME.value</name> + <isFilterable v="true" /> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>PROCESSDEFINITION_ID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>PROCESSINSTANCE_ID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>DURATION.value</name> + <isFilterable v="true" /> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ACTIVITY_TYPE.value</name> + <isFilterable v="true" /> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ACTIVITY_TYPE.displayValue</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ICON.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ACTIVITY_NAME.value</name> + <isFilterable v="true" /> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>TASK_ID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>TARGET_CONTEXT.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/entity/WorkflowInstanceHistory_entity/entityfields/activitytypekeyword/children/containername_param/valueProcess.js b/entity/WorkflowInstanceHistory_entity/entityfields/activitytypekeyword/children/containername_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..63f481d638580a67443558be82be50c10145ebd0 --- /dev/null +++ b/entity/WorkflowInstanceHistory_entity/entityfields/activitytypekeyword/children/containername_param/valueProcess.js @@ -0,0 +1,4 @@ +import("KeywordRegistry_basic"); +import("system.result"); + +result.string($KeywordRegistry.workflowActivityType()); \ No newline at end of file diff --git a/entity/WorkflowInstanceHistory_entity/recordcontainers/jdito/contentProcess.js b/entity/WorkflowInstanceHistory_entity/recordcontainers/jdito/contentProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..8d6c63918f747b83892fa9b2c25577f79822aea5 --- /dev/null +++ b/entity/WorkflowInstanceHistory_entity/recordcontainers/jdito/contentProcess.js @@ -0,0 +1,57 @@ +import("KeywordData_lib"); +import("KeywordRegistry_basic"); +import("Util_lib"); +import("JditoFilter_lib"); +import("system.result"); +import("system.workflow"); +import("system.vars"); + +var instanceId = vars.get("$param.ProcessInstanceId_param"); + +var historicActivities = JSON.parse(workflow.getFinishedActivities(instanceId)); +var history = []; + +var typeNameMap = KeywordData.getKeyIdMap($KeywordRegistry.workflowActivityType()); + +var _isRelevant = function (pActivity) +{ + return pActivity.activityType != $KeywordRegistry.workflowActivityType$sequenceFlow(); +} + +var _getIcon = function (pType) +{ + var typeIconMap = { + startEvent : "VAADIN:PLAY_CIRCLE_O", + userTask : "VAADIN:USER", + serviceTask : "VAADIN:AUTOMATION" + }; + return typeIconMap[pType] || ""; +} + +historicActivities.forEach(function (activity) +{ + if (_isRelevant(activity)) + { + history.push([ + activity.id, + Date.parse(activity.endTime).toString(), + Date.parse(activity.startTime).toString(), + activity.processDefinitionId, + activity.processInstanceId, + activity.durationInMillis, + activity.activityType, + typeNameMap[activity.activityType] || activity.activityType, + _getIcon(activity.activityType), + activity.activityName || activity.activityType, + activity.taskId || "", + activity.taskId ? "WorkflowTask" : "" + ]); + } +}); + +history = JditoFilterUtils.filterRecords(["UID", "END_TIME", "START_TIME", "PROCESSDEFINITION_ID", "PROCESSINSTANCE_ID", "DURATION", "ACTIVITY_TYPE", + "ICON", "ACTIVITY_NAME", "TASK_ID", "TARGET_CONTEXT"], history, vars.get("$local.filter").filter) + +ArrayUtils.sort2d(history, 2, false, true); + +result.object(history); \ No newline at end of file diff --git a/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod b/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod index 047ae63262a32fc49c81b618685b27a4b3e5d5f2..da870aa1abc3295fecc49a2b4aee503b3016845d 100644 --- a/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod +++ b/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod @@ -151,6 +151,20 @@ <name>ICON</name> <contentType>IMAGE</contentType> </entityField> + <entityConsumer> + <name>History</name> + <dependency> + <name>dependency</name> + <entityName>WorkflowInstanceHistory_entity</entityName> + <fieldName>HistoryForWorkflowInstance</fieldName> + </dependency> + <children> + <entityParameter> + <name>ProcessInstanceId_param</name> + <valueProcess>%aditoprj%/entity/WorkflowInstance_entity/entityfields/history/children/processinstanceid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/WorkflowInstance_entity/entityfields/history/children/processinstanceid_param/valueProcess.js b/entity/WorkflowInstance_entity/entityfields/history/children/processinstanceid_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..16c85500b5355a72548030867e3d300661e9d4aa --- /dev/null +++ b/entity/WorkflowInstance_entity/entityfields/history/children/processinstanceid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.UID")); \ No newline at end of file diff --git a/entity/WorkflowInstance_entity/recordcontainers/jdito/onInsert.js b/entity/WorkflowInstance_entity/recordcontainers/jdito/onInsert.js index 3975809ce4509fe845840bb112b3c80d857f996f..290743ac21a825b2d5974187299f25e14b46d2df 100644 --- a/entity/WorkflowInstance_entity/recordcontainers/jdito/onInsert.js +++ b/entity/WorkflowInstance_entity/recordcontainers/jdito/onInsert.js @@ -12,27 +12,46 @@ var rowdata = vars.get("$local.rowdata"); var processKey = rowdata["KEY.value"]; var instanceName = rowdata["NAME.value"]; -if (Array.isArray(variables.targetId) && variables.targetId.length > 0) - _startForIds(variables.targetId.slice(), variables); +var titlePlaceholder = "{title}"; +var fetchContentTitle = instanceName && instanceName.includes(titlePlaceholder); + +var targetIds = []; +if (Array.isArray(variables.targetId) && variables.targetId.length !== 0) +{ + targetIds = variables.targetId.slice(); + targetIdFilter = null; +} else if (!Array.isArray(variables.targetId) && variables.targetId) - _startForIds([variables.targetId], variables); -else if (targetIdFilter) +{ + targetIds = [variables.targetId]; + targetIdFilter = null; +} + +if (targetIdFilter || fetchContentTitle) { var entity = ContextUtils.getEntity(variables.targetContext); var loadConfig = entities.createConfigForLoadingRows() .entity(entity) - .fields(["#UID"]); + .fields(["#UID", "#CONTENTTITLE"]); - if (targetIdFilter.filter) + if (targetIdFilter && targetIdFilter.filter) loadConfig.filter(JSON.stringify(targetIdFilter.filter)); + else if (targetIds.length !== 0) + loadConfig.uids(targetIds); var rowCount = entities.getRowCount(loadConfig); var pageSize = 1000; for (let startRow = 0; startRow < rowCount; startRow += pageSize) { loadConfig.startrow(startRow).count(pageSize); - let targetIds = entities.getRows(loadConfig).map(function (row) {return row["#UID"];}); - _startForIds(targetIds, variables); + let targetIdsAndNames = entities.getRows(loadConfig).map(function (row) + { + var name = instanceName; + if (fetchContentTitle) + name = name.replace(titlePlaceholder, row["#CONTENTTITLE"]); + return [row["#UID"], name]; + }); + _startForIds(targetIdsAndNames, variables); } //TODO: entities.getRows currently doesn't work on the server @@ -42,15 +61,17 @@ else if (targetIdFilter) // entityFilter : targetIdFilter.filter ? JSON.stringify(targetIdFilter.filter) : "" // }, false, EmployeeUtils.getCurrentUserName(), process.THREADPRIORITY_NORM, process.TIMERTYPE_SERVER); } +else + _startForIds(targetIds.map(function (id) {return [id, instanceName];}), variables); -function _startForIds (pTargetIds, pVariables) +function _startForIds (pTargets, pVariables) { - pTargetIds.forEach(function (id) + pTargets.forEach(function ([id, name]) { pVariables.targetId = id; var instanceId = workflow.startProcessByKey(processKey, pVariables); - if (instanceName) - workflow.setProcessInstanceName(instanceId, instanceName); + if (name) + workflow.setProcessInstanceName(instanceId, name); }); } diff --git a/entity/WorkflowTask_entity/WorkflowTask_entity.aod b/entity/WorkflowTask_entity/WorkflowTask_entity.aod index a75709aeee37d17392236086c0d0211aa4592153..9f69534cfc5614ba25444d5db0b315dd1ecbdf87 100644 --- a/entity/WorkflowTask_entity/WorkflowTask_entity.aod +++ b/entity/WorkflowTask_entity/WorkflowTask_entity.aod @@ -212,6 +212,20 @@ </entityParameter> </children> </entityConsumer> + <entityActionGroup> + <name>tableActions</name> + <children> + <entityActionField> + <name>completeMultipleTasks</name> + <title>Complete tasks</title> + <onActionProcess>%aditoprj%/entity/WorkflowTask_entity/entityfields/tableactions/children/completemultipletasks/onActionProcess.js</onActionProcess> + <isObjectAction v="false" /> + <isSelectionAction v="true" /> + <iconId>VAADIN:CHECK</iconId> + <stateProcess>%aditoprj%/entity/WorkflowTask_entity/entityfields/tableactions/children/completemultipletasks/stateProcess.js</stateProcess> + </entityActionField> + </children> + </entityActionGroup> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/WorkflowTask_entity/entityfields/tableactions/children/completemultipletasks/onActionProcess.js b/entity/WorkflowTask_entity/entityfields/tableactions/children/completemultipletasks/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..9fa595c8bf0544f090698fef65fec5141f44d9c3 --- /dev/null +++ b/entity/WorkflowTask_entity/entityfields/tableactions/children/completemultipletasks/onActionProcess.js @@ -0,0 +1,23 @@ +import("Employee_lib"); +import("system.workflow"); +import("system.neon"); +import("system.vars"); + +var tasks = vars.get("$sys.selectionRows"); +var currentUserId = EmployeeUtils.getCurrentUserId(); +var refreshRequired = false; +tasks.forEach(function (task) +{ + //tasks requiring form data can't be completed here + if ((!task["FORMDEFINITION"] || task["FORMDEFINITION"] == "null") && task["ISACTIVE"] == "true") + { + var taskId = task["#UID"]; + if (!task["ASSIGNEE"]) + workflow.setTaskAssignee(taskId, currentUserId); + workflow.completeTask(taskId, {}); + refreshRequired = true; + } +}); + +if (refreshRequired) + neon.refreshAll(); \ No newline at end of file diff --git a/entity/WorkflowTask_entity/entityfields/tableactions/children/completemultipletasks/stateProcess.js b/entity/WorkflowTask_entity/entityfields/tableactions/children/completemultipletasks/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..5014ae2e217af1a01e13eaebf0b5366f6b1019e1 --- /dev/null +++ b/entity/WorkflowTask_entity/entityfields/tableactions/children/completemultipletasks/stateProcess.js @@ -0,0 +1,11 @@ +import("system.result"); +import("system.neon"); +import("system.vars"); + +var tasks = vars.get("$sys.selectionRows"); +var isActive = tasks.every(function (task) +{ + return (!task["FORMDEFINITION"] || task["FORMDEFINITION"] == "null") && task["ISACTIVE"] == "true"; +}); + +result.string(isActive ? neon.COMPONENTSTATE_EDITABLE : neon.COMPONENTSTATE_DISABLED); \ 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 50cb3e1f44669ebcf3bb5e1088a672d170dd72a6..3f0a86614d65af76d64576147c7fef0f8063a345 100644 --- a/entity/WorkflowTask_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/WorkflowTask_entity/recordcontainers/jdito/contentProcess.js @@ -96,7 +96,7 @@ result.object((function () task.processDefinitionId, task.processInstanceId, Date.parse(task.createTime).toString(), - workflow.getFormProperties(task.id), + workflow.getFormProperties(task.id) || "", "", variables.USER_ID || "", task.description || "", diff --git a/neonContext/WorkflowInstance/WorkflowInstance.aod b/neonContext/WorkflowInstance/WorkflowInstance.aod index 87ae3990144024edb6f8c5045571b13547c78de9..6f44fbb1aa90e67918f7dc203f5dbbbfec6383d8 100644 --- a/neonContext/WorkflowInstance/WorkflowInstance.aod +++ b/neonContext/WorkflowInstance/WorkflowInstance.aod @@ -2,6 +2,7 @@ <neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> <name>WorkflowInstance</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <mainView>WorkflowInstanceMain_view</mainView> <filterView>WorkflowInstanceFilter_view</filterView> <editView>WorkflowInstanceEdit_view</editView> <previewView>WorkflowInstancePreview_view</previewView> @@ -23,5 +24,13 @@ <name>1b36d7c5-af14-4cb6-9e68-99d738def562</name> <view>WorkflowInstanceMain_view</view> </neonViewReference> + <neonViewReference> + <name>e701f4bc-29f4-4e93-98b5-d7d2cee1787e</name> + <view>WorkflowInstanceVariables_view</view> + </neonViewReference> + <neonViewReference> + <name>98e9064c-466c-43eb-a72a-c369e7eb28a4</name> + <view>WorkflowInstanceTasks_view</view> + </neonViewReference> </references> </neonContext> diff --git a/neonContext/WorkflowInstanceHistory/WorkflowInstanceHistory.aod b/neonContext/WorkflowInstanceHistory/WorkflowInstanceHistory.aod new file mode 100644 index 0000000000000000000000000000000000000000..4d3193c81e9588263f537bf197b406f501540c09 --- /dev/null +++ b/neonContext/WorkflowInstanceHistory/WorkflowInstanceHistory.aod @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> + <name>WorkflowInstanceHistory</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <entity>WorkflowInstanceHistory_entity</entity> + <references> + <neonViewReference> + <name>30e6ce24-1a8d-42b2-b6d7-c56f28d1a30f</name> + <view>WorkflowInstanceHistoryFilter_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/WorkflowTask/WorkflowTask.aod b/neonContext/WorkflowTask/WorkflowTask.aod index 43d132be624cda19f5b5575b6b380b6902c17bbf..44582796f63544784cfc3bca1e3fa3ba1bfc794c 100644 --- a/neonContext/WorkflowTask/WorkflowTask.aod +++ b/neonContext/WorkflowTask/WorkflowTask.aod @@ -30,5 +30,9 @@ <name>a86af6be-5e80-4e4c-8717-76976ff192b9</name> <view>WorkflowTaskFinishedList_view</view> </neonViewReference> + <neonViewReference> + <name>ad4bd316-3da9-4fe4-845b-b37249c26979</name> + <view>WorkflowTaskFinishedDrawer_view</view> + </neonViewReference> </references> </neonContext> diff --git a/neonView/WorkflowInstanceHistoryFilter_view/WorkflowInstanceHistoryFilter_view.aod b/neonView/WorkflowInstanceHistoryFilter_view/WorkflowInstanceHistoryFilter_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..00bb4cd5bcee01aa787819a874eec305c8b05069 --- /dev/null +++ b/neonView/WorkflowInstanceHistoryFilter_view/WorkflowInstanceHistoryFilter_view.aod @@ -0,0 +1,47 @@ +<?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.5" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.5"> + <name>WorkflowInstanceHistoryFilter_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <filterable v="true" /> + <layout> + <groupLayout> + <name>layout</name> + </groupLayout> + </layout> + <children> + <timelineViewTemplate> + <name>Timeline</name> + <dateField>END_TIME</dateField> + <titleField>ACTIVITY_NAME</titleField> + <descriptionField>ACTIVITY_TYPE</descriptionField> + <iconIdField>ICON</iconIdField> + <entityField>#ENTITY</entityField> + </timelineViewTemplate> + <tableViewTemplate> + <name>Table</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTableColumn> + <name>2d8bc4b5-d27d-47ce-b5fe-be0354a332ee</name> + <entityField>ICON</entityField> + </neonTableColumn> + <neonTableColumn> + <name>8f743b3f-4c50-4a6a-a530-11b2c43fa0ff</name> + <entityField>ACTIVITY_NAME</entityField> + </neonTableColumn> + <neonTableColumn> + <name>5a66e63f-1db1-45ec-8aaa-85268e131d86</name> + <entityField>ACTIVITY_TYPE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>bc6674d4-c808-4adb-ad8d-5853a2af6f1e</name> + <entityField>START_TIME</entityField> + </neonTableColumn> + <neonTableColumn> + <name>5625386c-67d1-4235-a1b7-53d390370cc5</name> + <entityField>END_TIME</entityField> + </neonTableColumn> + </columns> + </tableViewTemplate> + </children> +</neonView> diff --git a/neonView/WorkflowInstanceMain_view/WorkflowInstanceMain_view.aod b/neonView/WorkflowInstanceMain_view/WorkflowInstanceMain_view.aod index f69bf34dea59b892933b479a1d5f1acda6260181..35b1c80acbe1d3e543a3eb5d60b1436c1ea81d54 100644 --- a/neonView/WorkflowInstanceMain_view/WorkflowInstanceMain_view.aod +++ b/neonView/WorkflowInstanceMain_view/WorkflowInstanceMain_view.aod @@ -14,5 +14,15 @@ <entityField>#ENTITY</entityField> <view>WorkflowInstancePreview_view</view> </neonViewReference> + <neonViewReference> + <name>f7d21117-8664-49f1-b1d1-eb46ad989271</name> + <entityField>History</entityField> + <view>WorkflowInstanceHistoryFilter_view</view> + </neonViewReference> + <neonViewReference> + <name>785ccba6-b9ac-4a03-983c-574ac28c5f1a</name> + <entityField>#ENTITY</entityField> + <view>WorkflowInstanceTasks_view</view> + </neonViewReference> </children> </neonView> diff --git a/neonView/WorkflowInstancePreview_view/WorkflowInstancePreview_view.aod b/neonView/WorkflowInstancePreview_view/WorkflowInstancePreview_view.aod index 2301ba07139ae31314f2958dc4c6b2050f296c86..c3615039fed7ac37b45a554c0ad5741b8bf9d93c 100644 --- a/neonView/WorkflowInstancePreview_view/WorkflowInstancePreview_view.aod +++ b/neonView/WorkflowInstancePreview_view/WorkflowInstancePreview_view.aod @@ -44,10 +44,5 @@ <entityField>Tasks</entityField> <view>WorkflowTaskList_view</view> </neonViewReference> - <neonViewReference> - <name>908012ad-82d7-45c0-9a4b-ba6e00cc1e8c</name> - <entityField>FinishedTasks</entityField> - <view>WorkflowTaskFinishedList_view</view> - </neonViewReference> </children> </neonView> diff --git a/neonView/WorkflowInstanceTasks_view/WorkflowInstanceTasks_view.aod b/neonView/WorkflowInstanceTasks_view/WorkflowInstanceTasks_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..3cf4210ae1c479971e4b0262c48ad1a7ccab87a7 --- /dev/null +++ b/neonView/WorkflowInstanceTasks_view/WorkflowInstanceTasks_view.aod @@ -0,0 +1,23 @@ +<?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.5" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.5"> + <name>WorkflowInstanceTasks_view</name> + <title>Tasks</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <neonViewReference> + <name>608add51-09cc-4c94-a7b1-8bb23f4c1a07</name> + <entityField>Tasks</entityField> + <view>WorkflowTaskFilter_view</view> + </neonViewReference> + <neonViewReference> + <name>0e5efa21-ee28-4256-9722-e01d3329db48</name> + <entityField>FinishedTasks</entityField> + <view>WorkflowTaskFinishedDrawer_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/neonView/WorkflowTaskFilter_view/WorkflowTaskFilter_view.aod b/neonView/WorkflowTaskFilter_view/WorkflowTaskFilter_view.aod index 07cc8d75dd242d8dd7cf31a164c81125b5976867..e9ea47e30645195dbcd33fab0fe84b5f8559be1e 100644 --- a/neonView/WorkflowTaskFilter_view/WorkflowTaskFilter_view.aod +++ b/neonView/WorkflowTaskFilter_view/WorkflowTaskFilter_view.aod @@ -4,11 +4,19 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> + <timelineViewTemplate> + <name>Timeline</name> + <dateField>CREATE_TIME</dateField> + <titleField>NAME</titleField> + <descriptionField>DESCRIPTION</descriptionField> + <iconIdField>ICON</iconIdField> + <entityField>#ENTITY</entityField> + </timelineViewTemplate> <tableViewTemplate> <name>Table</name> <iconField>#IMAGE</iconField> diff --git a/neonView/WorkflowTaskFinishedDrawer_view/WorkflowTaskFinishedDrawer_view.aod b/neonView/WorkflowTaskFinishedDrawer_view/WorkflowTaskFinishedDrawer_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..2baf75b6af26f31ae83c7202d21f0576a30ba4ed --- /dev/null +++ b/neonView/WorkflowTaskFinishedDrawer_view/WorkflowTaskFinishedDrawer_view.aod @@ -0,0 +1,19 @@ +<?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.5" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.5"> + <name>WorkflowTaskFinishedDrawer_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <drawerLayout> + <name>layout</name> + <layoutCaption>Finished tasks</layoutCaption> + <fixedDrawer v="true" /> + </drawerLayout> + </layout> + <children> + <neonViewReference> + <name>f05af6b0-7e2c-4578-b99b-5c35a6c162be</name> + <entityField>#ENTITY</entityField> + <view>WorkflowTaskFilter_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/neonView/WorkflowTaskOwn_view/WorkflowTaskOwn_view.aod b/neonView/WorkflowTaskOwn_view/WorkflowTaskOwn_view.aod index a5dbe2b78a75ed3aa0968d559dca2a582b3a9d17..9e0e3392f9574849928895ee78ac1cdea5d68aa7 100644 --- a/neonView/WorkflowTaskOwn_view/WorkflowTaskOwn_view.aod +++ b/neonView/WorkflowTaskOwn_view/WorkflowTaskOwn_view.aod @@ -32,6 +32,7 @@ <children> <timelineViewTemplate> <name>Timeline</name> + <favoriteActionGroup1>tableActions</favoriteActionGroup1> <dateField>CREATE_TIME</dateField> <titleField>NAME</titleField> <descriptionField>DESCRIPTION</descriptionField> @@ -40,6 +41,7 @@ </timelineViewTemplate> <tableViewTemplate> <name>Table</name> + <favoriteActionGroup1>tableActions</favoriteActionGroup1> <iconField>#IMAGE</iconField> <entityField>#ENTITY</entityField> <linkedColumns> diff --git a/process/KeywordRegistry_basic/process.js b/process/KeywordRegistry_basic/process.js index 801b54f6451ac4f0547b7b24bd8a51c74955ea97..5e6b5753b4bff46b55f0336e907b7bc4c2647654 100644 --- a/process/KeywordRegistry_basic/process.js +++ b/process/KeywordRegistry_basic/process.js @@ -157,8 +157,6 @@ $KeywordRegistry.documentTemplateTypeCategory$single = function(){return "1";}; $KeywordRegistry.documentTemplateTypeCategory$serial = function(){return "2";}; $KeywordRegistry.documentTemplateTypeCategory$htmlTemplate = function(){return "7";}; -$KeywordRegistry.documentTemplatePlaceOfUse = function(){return "DocumentTemplatePlaceOfUse";}; - $KeywordRegistry.classificationType = function(){return "ClassificationType";}; $KeywordRegistry.classificationType$salesproject = function(){return "SALESPROJ";}; @@ -184,6 +182,8 @@ $KeywordRegistry.dsgvoDeadline$complex = function(){return "DSGVODEADLINECOMPLEX $KeywordRegistry.dsgvoDeadline$count = function(){return "DSGVODEADLINECOUNT";}; $KeywordRegistry.dsgvoGuarantee = function() {return "DSGVOGuarantee";}; +$KeywordRegistry.textPlaceholder = function(){return "textPlaceholder";}; + $KeywordRegistry.communicationMediumCampaign = function(){return "CommunicationMediumCampaign";}; $KeywordRegistry.communicationMediumCampaign$mail = function(){return "CAMPAIGNEMAIL";}; $KeywordRegistry.communicationMediumCampaign$letter = function(){return "CAMPAIGNLETTER";}; diff --git a/process/Placeholder_lib/process.js b/process/Placeholder_lib/process.js index d3d4fca7aea97df4a891abee264d57242d6ab8f4..afd607a53ec214b144eedc4b59d63543f6c99b1f 100644 --- a/process/Placeholder_lib/process.js +++ b/process/Placeholder_lib/process.js @@ -127,7 +127,7 @@ PlaceholderUtils.getRegexpMatchAll = function (pSpecialCharFilterRegexpPart) pSpecialCharFilterRegexpPart = ""; } - return "{" + pSpecialCharFilterRegexpPart + "@(.|(\\r?\\n))+?@" + pSpecialCharFilterRegexpPart + "}"; + return "{" + pSpecialCharFilterRegexpPart + "@(.(?!{@)|(\\r?\\n))+?@" + pSpecialCharFilterRegexpPart + "}"; } /** diff --git a/process/workflowServiceTaskParams_rest/process.js b/process/workflowServiceTaskParams_rest/process.js new file mode 100644 index 0000000000000000000000000000000000000000..cae8e4445ce45153b2953c3873f5cd85fd4a6aae --- /dev/null +++ b/process/workflowServiceTaskParams_rest/process.js @@ -0,0 +1,121 @@ +import("system.tools"); +import("system.logging"); +import("Attribute_lib"); +import("system.entities"); +import("Sql_lib"); +import("system.project"); +import("system.process"); + +function restget (pRequest) +{ + var request = JSON.parse(pRequest); + var jditoProcess = request.header.Jditoprocess; + + /* this is an object containing the values currently set in the modeler, it looks like this: + * { + * myParam1 : {value : "paramValue"}, + * myParam2 : {value : 420} + * } + */ + var currentValues = JSON.parse(request.header.Currentvalues); + + /** + * Object representing a parameter + * + * @param {String} pId id of the parameter, this is the name of the variable in the serviceTask-jDitoProcess + * @param {String} pName name of the parameter that is displayed in the modeler + * @param {String} pType type of the parameter, refer to the "Types" object below + * @param {Object[]} [pItems] items that can be selected if the type is "enum", each row looks like this: {id : "iWillBeStored", name : "iWillBeDisplayed"} + * @param {Boolean} [pRelational] if set to true, a change of the parameter value will cause a re-load of all parameters + * -> use this if a parameter depends on the value of another parameter (see "currentValues") + */ + function Parameter (pId, pName, pType, pItems, pRelational) + { + this.id = pId; + this.name = pName; + this.type = pType; + this.items = pItems; + this.relational = pRelational; + } + + /** + * enum containing all possible parameter types + */ + var Types = { + STRING : "string", + BOOLEAN : "boolean", + NUMBER : "number", + DATE : "date", + ENUM : "enum" + }; + + function _mapToItemArray (pData, pIdIndex, pNameIndex) + { + if (pIdIndex == undefined) + pIdIndex = 0; + if (pNameIndex == undefined) + pNameIndex = 1; + return pData.map(function (item) + { + return {id : item[pIdIndex], name : item[pNameIndex]}; + }); + } + + var parameterConfiguration = { + CreateActivity_workflowService : function (pCurrentValues) + { + return [ + new Parameter("activityResponsible", "Responsible", Types.STRING), + new Parameter("activityDirection", "Direction", Types.STRING), + new Parameter("activityCategory", "Category", Types.STRING), + new Parameter("activityEntryDate", "Entry date", Types.DATE), + new Parameter("activityContent", "Content", Types.STRING), + new Parameter("activityTitle", "Title", Types.STRING) + ]; + }, + CreateNotification_workflowService : function (pCurrentValues) + { + return [ + new Parameter("notificationCaption", "Caption", Types.STRING), + new Parameter("notificationDescription", "Description", Types.STRING), + new Parameter("notificationUser", "User", Types.STRING) + ]; + }, + SendEmail_workflowService : function (pCurrentValues) + { + var templates = newSelect("DOCUMENTTEMPLATEID, NAME") + .from("DOCUMENTTEMPLATE") + .table(); + return [ + new Parameter("documentTemplateId", "Document template", Types.ENUM, _mapToItemArray(templates)), + new Parameter("recipientContactId", "Recipient", Types.ENUM) + ]; + }, + SetAttribute_workflowService : function (pCurrentValues) + { +// var attrLoadConfig = entities.createConfigForLoadingRows().entity("Attribute_entity").fields(["#UID", "#CONTENTTITLE"]); +// var attributes = entities.getRows(attrLoadConfig).map(function (attribute) +// { +// return {id : attribute["#UID"], name : attribute["#CONTENTTITLE"]}; +// }); + return [ + new Parameter("attributeId", "Attribute", Types.ENUM) + ]; + }, + UpdateOffer_workflowService : function (pCurrentValues) + { + return []; + } + }; + + var parameters; + if (jditoProcess in parameterConfiguration && typeof parameterConfiguration[jditoProcess] === "function") + parameters = parameterConfiguration[jditoProcess](); + + if (!parameters) + parameters = []; + + request.response.body = JSON.stringify(parameters); + + return JSON.stringify(request); +} diff --git a/process/workflowServiceTaskParams_rest/workflowServiceTaskParams_rest.aod b/process/workflowServiceTaskParams_rest/workflowServiceTaskParams_rest.aod new file mode 100644 index 0000000000000000000000000000000000000000..266ba1f462adb5b6a46d65630017baa7ca2c4358 --- /dev/null +++ b/process/workflowServiceTaskParams_rest/workflowServiceTaskParams_rest.aod @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>workflowServiceTaskParams_rest</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/workflowServiceTaskParams_rest/process.js</process> + <publishAsWebservice v="true" /> + <style>REST</style> + <restAcceptedMimeType>application/json</restAcceptedMimeType> + <restDeliveredMimeType>application/json</restDeliveredMimeType> + <jditoWebserviceUser>flowableIdmService</jditoWebserviceUser> + <alias>Data_alias</alias> + <variants> + <element>EXECUTABLE</element> + </variants> +</process>