Skip to content
Snippets Groups Projects
Commit 69be15b6 authored by S.Listl's avatar S.Listl Committed by Sebastian Listl
Browse files

WorkflowTask and WorkflowInstance improved

(cherry picked from commit 60a6486f)
parent b8305e9e
No related branches found
No related tags found
No related merge requests found
Showing
with 186 additions and 33 deletions
import("system.neon");
import("system.vars");
import("system.result");
if (vars.get("$field.ISACTIVE") != "true")
result.string(neon.READONLY_COLOR);
\ No newline at end of file
import("Context_lib");
import("system.result");
import("system.neon");
import("system.vars");
if (vars.get("$sys.viewmode") == neon.FRAME_VIEWMODE_DATASET)
result.string(ContextUtils.loadContentTitle("WorkflowInstance_entity", vars.get("$field.PROCESSINSTANCE_ID")));
import("system.result");
import("system.vars");
result.string(vars.get("$field.FORMDEFINITION") != "");
\ No newline at end of file
result.string(vars.get("$field.ISACTIVE") == "true");
\ No newline at end of file
import("system.vars");
import("system.result");
result.string(vars.get("$field.ICON"));
\ No newline at end of file
......@@ -18,32 +18,54 @@ result.object((function ()
return [];
var isOnlyForCurrentUser = vars.exists("$param.OnlyForCurrentUser_param") && vars.get("$param.OnlyForCurrentUser_param") == "true";
var processInstanceId = vars.exists("$param.WorkflowInstanceId_param") && vars.get("$param.WorkflowInstanceId_param");
var onlyFinished = vars.exists("$param.OnlyFinishedTasks_param") && vars.get("$param.OnlyFinishedTasks_param") == "true";
var includeServiceTasks = vars.exists("$param.IncludeServiceTasks_param") && vars.get("$param.IncludeServiceTasks_param") == "true";
var loadConfig = workflow.createConfigForLoadingTasks();
var tasks;
if (vars.get("$local.idvalues") && vars.get("$local.idvalues")[0])
var loadConfig = onlyFinished
? workflow.createConfigForLoadingHistoricTasks().finished(true)
: workflow.createConfigForLoadingTasks();
var taskIds = vars.get("$local.idvalues");
if (taskIds)
{
var taskId = vars.get("$local.idvalues")[0];
loadConfig = workflow.createConfigForLoadingTask()
.taskId(taskId);
//TODO: there shouldn't be an error
try {
tasks = [JSON.parse(workflow.getTask(loadConfig))];
}
catch (err)
{
//This can happen if the task is done, then it can't be loaded. If that's the case, return a dummy row
var taskTitle = vars.exists("$param.TaskTitle_param") && vars.get("$param.TaskTitle_param") || "";
return [[taskId, translate.text("Task done"), taskTitle, "", vars.get("$sys.date"), "", "", "", "", "", "", "", "", "", "", "", "", "", ""]];
}
loadConfig.taskIds(taskIds);
}
else
else
{
// if (isOnlyForCurrentUser)
// loadConfig.candidateIdentifier(EmployeeUtils.getCurrentUserId());
tasks = JSON.parse(workflow.getTasks(loadConfig));
if (processInstanceId)
loadConfig.processInstanceId(processInstanceId);
}
var tasks = JSON.parse(onlyFinished
? workflow.getHistoricTasks(loadConfig)
: workflow.getTasks(loadConfig));
//it is possible that a task is requested that was just finished -> if a task with given id could not be found, try to load it from historic tasks
if (tasks.length === 0 && taskIds && taskIds.length > 0 && !onlyFinished)
{
onlyFinished = true;
loadConfig = workflow.createConfigForLoadingHistoricTasks().taskIds(taskIds);
tasks = JSON.parse(workflow.getHistoricTasks(loadConfig));
}
if (includeServiceTasks && onlyFinished && processInstanceId)
{
JSON.parse(workflow.getFinishedActivities(processInstanceId)).forEach(function (activity)
{
if (activity.activityType == "serviceTask" && activity.activityName)
tasks.push({
id : activity.id,
name : activity.activityName,
createTime : activity.startTime,
processDefinitionId : activity.processDefinitionId,
processInstanceId : activity.processInstanceId,
icon : "VAADIN:AUTOMATION"
});
});
}
var assigneeCache = {
......@@ -59,7 +81,14 @@ result.object((function ()
tasks = tasks.map(function (task)
{
var variables = JSON.parse(workflow.getTaskVariables(task.id));
var variables = JSON.parse(workflow.getTaskVariables(task.id)) || {};
var icon = "NEON:STATUS_NOT_ASSIGNED";
if (task.icon)
icon = task.icon;
else if (onlyFinished)
icon = "NEON:STATUS_DONE";
else if (task.assignee)
icon = "NEON:STATUS_ASSIGNED";
return [
task.id,
......@@ -69,7 +98,7 @@ result.object((function ()
Date.parse(task.createTime).toString(),
workflow.getFormProperties(task.id),
"",
variables.USER_ID,
variables.USER_ID || "",
task.description || "",
task.category || "",
task.assignee || "",
......@@ -78,15 +107,18 @@ result.object((function ()
task.owner || "",
variables.targetContext || "",
variables.targetId || "",
task.claimTime,
task.active,
task.priority
task.claimTime || "",
task.active || "false",
task.priority || "",
icon
];
});
tasks = JditoFilterUtils.filterRecords(["UID", "NAME", "PROCESSDEFINITION_ID", "PROCESSINSTANCE_ID",
"CREATE_TIME", "FORMDEFINITION", "USER", "DESCRIPTION", "CATEGORY", "ASSIGNEE", "", "DUEDATE", "OWNER"], tasks, vars.get("$local.filter").filter);
//order by creation date
tasks.sort(function (a, b) {return b[4] - a[4];});
return tasks;
})());
\ No newline at end of file
......@@ -6086,6 +6086,15 @@
<entry>
<key>${ORDER_CANCELLED}</key>
</entry>
<entry>
<key>Claim task</key>
</entry>
<entry>
<key>${WORKFLOW_SUSPEND}</key>
</entry>
<entry>
<key>Resume</key>
</entry>
</keyValueMap>
<font name="Dialog" style="0" size="11" />
<sqlModels>
......
......@@ -74,6 +74,10 @@
<key>Claim task</key>
<value>Aufgabe annehmen</value>
</entry>
<entry>
<key>Finished tasks</key>
<value>Abgeschlossene Aufgaben</value>
</entry>
<entry>
<key>Data imported.</key>
<value>Daten wurden importiert.</value>
......@@ -145,6 +149,10 @@
<key>Education, Teaching and Reasearch</key>
<value>Bildung, Lehre und Forschung</value>
</entry>
<entry>
<key>${WORKFLOW_SUSPEND}</key>
<value>Anhalten</value>
</entry>
<entry>
<key>Start workflow</key>
<value>Vorgang starten</value>
......@@ -693,6 +701,10 @@
<key>The person is already associated with another employee!</key>
<value>Die Person ist bereits mit einem anderen Mitarbeiter verknüpft!</value>
</entry>
<entry>
<key>Resume</key>
<value>Fortsetzen</value>
</entry>
<entry>
<key>Transmission</key>
<value>Übermittlung</value>
......
......@@ -6143,6 +6143,16 @@
<entry>
<key>${CANCELLED}</key>
</entry>
<entry>
<key>Claim task</key>
</entry>
<entry>
<key>${WORKFLOW_SUSPEND}</key>
<value>Suspend</value>
</entry>
<entry>
<key>Resume</key>
</entry>
</keyValueMap>
<font name="Dialog" style="0" size="11" />
</language>
......@@ -3,7 +3,6 @@
<name>WorkflowTask</name>
<majorModelMode>DISTRIBUTED</majorModelMode>
<filterView>WorkflowTaskFilter_view</filterView>
<editView>WorkflowTaskForm_view</editView>
<previewView>WorkflowTaskPreview_view</previewView>
<entity>WorkflowTask_entity</entity>
<references>
......@@ -23,5 +22,13 @@
<name>c10f6321-3d85-4c95-b9ec-0f6d5b91fb95</name>
<view>WorkflowTaskOwn_view</view>
</neonViewReference>
<neonViewReference>
<name>bf1d15ff-a0dc-401f-874a-342e8195eb29</name>
<view>WorkflowTaskList_view</view>
</neonViewReference>
<neonViewReference>
<name>a86af6be-5e80-4e4c-8717-76976ff192b9</name>
<view>WorkflowTaskFinishedList_view</view>
</neonViewReference>
</references>
</neonContext>
......@@ -18,6 +18,10 @@
<name>1a8b8257-0502-4ac4-8cc9-7fb7734570b4</name>
<entityField>KEY</entityField>
</entityFieldLink>
<entityFieldLink>
<name>dc692ed7-3c26-42ab-b251-ce1f1e438e6b</name>
<entityField>NAME</entityField>
</entityFieldLink>
</fields>
</genericViewTemplate>
</children>
......
......@@ -13,12 +13,12 @@
<name>Table</name>
<entityField>#ENTITY</entityField>
<linkedColumns>
<element>PROCESSDEFINITION_ID</element>
<element>NAME</element>
</linkedColumns>
<columns>
<neonTableColumn>
<name>c5d2c47a-5b20-49c9-b49c-5aee951ce2db</name>
<entityField>PROCESSDEFINITION_ID</entityField>
<entityField>NAME</entityField>
</neonTableColumn>
<neonTableColumn>
<name>d8f5093e-d547-4276-ae46-536182bffbc0</name>
......
......@@ -11,8 +11,8 @@
<children>
<cardViewTemplate>
<name>Card</name>
<titleField>PROCESSDEFINITION_ID</titleField>
<subtitleField>KEY</subtitleField>
<titleField>NAME</titleField>
<subtitleField>PROCESSDEFINITION_ID</subtitleField>
<entityField>#ENTITY</entityField>
</cardViewTemplate>
<genericViewTemplate>
......@@ -39,5 +39,15 @@
</entityFieldLink>
</fields>
</genericViewTemplate>
<neonViewReference>
<name>def92a6c-f556-4e4f-917b-82c3940afcc4</name>
<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>
......@@ -11,11 +11,16 @@
<children>
<tableViewTemplate>
<name>Table</name>
<iconField>#IMAGE</iconField>
<entityField>#ENTITY</entityField>
<linkedColumns>
<element>NAME</element>
</linkedColumns>
<columns>
<neonTableColumn>
<name>54e2e8a6-98e5-4ab7-ac04-c29b10d3d662</name>
<entityField>ICON</entityField>
</neonTableColumn>
<neonTableColumn>
<name>e6c73b5b-1ae0-4337-9c83-39f9fc0b1469</name>
<entityField>NAME</entityField>
......
<?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.4" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.4">
<name>WorkflowTaskFinishedList_view</name>
<majorModelMode>DISTRIBUTED</majorModelMode>
<layout>
<drawerLayout>
<name>layout</name>
<layoutCaption>Finished tasks</layoutCaption>
</drawerLayout>
</layout>
<children>
<actionListViewTemplate>
<name>ActionList</name>
<titleField>NAME</titleField>
<descriptionField>DESCRIPTION</descriptionField>
<iconField>ICON</iconField>
<entityField>#ENTITY</entityField>
</actionListViewTemplate>
</children>
</neonView>
......@@ -13,6 +13,7 @@
<name>DynamicForm</name>
<formDefinition>FORMDEFINITION</formDefinition>
<formResult>FORMRESULT</formResult>
<editMode v="true" />
<entityField>#ENTITY</entityField>
</dynamicFormViewTemplate>
</children>
......
<?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.4" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.4">
<name>WorkflowTaskList_view</name>
<majorModelMode>DISTRIBUTED</majorModelMode>
<layout>
<drawerLayout>
<name>layout</name>
<layoutCaption>Tasks</layoutCaption>
</drawerLayout>
</layout>
<children>
<actionListViewTemplate>
<name>ActionList</name>
<titleField>NAME</titleField>
<descriptionField>DESCRIPTION</descriptionField>
<iconField>ICON</iconField>
<entityField>#ENTITY</entityField>
</actionListViewTemplate>
</children>
</neonView>
......@@ -32,11 +32,16 @@
<children>
<tableViewTemplate>
<name>Table</name>
<iconField>#IMAGE</iconField>
<entityField>#ENTITY</entityField>
<linkedColumns>
<element>NAME</element>
</linkedColumns>
<columns>
<neonTableColumn>
<name>6d59e221-bdca-49e9-9909-ed7a777e9116</name>
<entityField>ICON</entityField>
</neonTableColumn>
<neonTableColumn>
<name>2debfca6-7aaf-48b6-8b8f-2310c0513229</name>
<entityField>CREATE_TIME</entityField>
......
......@@ -12,8 +12,9 @@
<children>
<cardViewTemplate>
<name>Card</name>
<iconField>ICON</iconField>
<titleField>NAME</titleField>
<subtitleField>PROCESSDEFINITION_ID</subtitleField>
<subtitleField>PROCESSINSTANCE_ID</subtitleField>
<favoriteAction1>completeTask</favoriteAction1>
<entityField>#ENTITY</entityField>
</cardViewTemplate>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment