Изменения способа сортировки задач в Share

По умолчанию список задач в Share отсортирован по срокам выполнения (наиболее срочные находятся вверху). Иногда может возникнуть необходимость изменить этот порядок, но, к сожалению, разработчиками не предусмотрена возможность такой настройки. Ниже приведен патч, который позволяет сортировать задачи по их id (в таком случае самые старые задачи будут находиться сверху):

--- TaskInstancesGet.java
+++ TaskInstancesGet.java
@@ -57,7 +57,7 @@
     public static final String PARAM_POOLED_TASKS = "pooledTasks";
     public static final String VAR_WORKFLOW_INSTANCE_ID = "workflow_instance_id";
 
-    private WorkflowTaskDueAscComparator taskComparator = new WorkflowTaskDueAscComparator();
+    private WorkflowTaskIdAscComparator taskComparator = new WorkflowTaskIdAscComparator();
 
     @Override
     protected Map<String, Object> buildModel(WorkflowModelBuilder modelBuilder, WebScriptRequest req, Status status, Cache cache)
@@ -331,4 +331,20 @@
         }
         
     }
+
+    /**
+     * Comparator to sort workflow tasks by id in ascending order.
+     */
+    class WorkflowTaskIdAscComparator implements Comparator<WorkflowTask>
+    {
+        @Override
+        public int compare(WorkflowTask o1, WorkflowTask o2)
+        {
+            Long id1 = (Long)o1.getProperties().get(WorkflowModel.PROP_TASK_ID);
+            Long id2 = (Long)o2.getProperties().get(WorkflowModel.PROP_TASK_ID);
+
+            return (id1 > id2 ? 1 : 0);
 }
+        
+    }
+}

Патч определяет новый компаратор и использует его вместо стандартного. Патч написан для 3.4.c, но должен накладываться и на более свежие версии.

293