<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Performance problem with task listing in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/performance-problem-with-task-listing/m-p/168600#M122050</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;This is not necessarily a problem of Activiti. It's more of a problem of the underlying database. I want to know if there is any recommendation for this problem or if others have faced similar problem and how they may have handled it.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here is the scenario.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;We have about 300K unassigned tasks in the system. We want to list those in our task lists ordered by priority descending and due date ascending. Activiti generates the query per our criteria and the query is like this&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;select distinct RES.* &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from ACT_RU_TASK RES inner join ACT_RU_IDENTITYLINK I on I.TASK_ID_ = RES.ID_ &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE RES.ASSIGNEE_ IS NULL &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and RES.ASSIGNEE_ is null &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and I.TYPE_ = 'candidate' &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and ( I.GROUP_ID_ IN ( ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ? ) &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; order by RES.PRIORITY_ desc, RES.DUE_DATE_ asc &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LIMIT 60 OFFSET 0&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Due to the different orders of the order by, mysql cannot use index and does filesort and this operation takes 90 seconds on a decent windows hardware (8 gb ram, quadcore cpu etc)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;One suggested solution by our dbas was adding a new column InvertedPriority so we can order by in the same order. Is there a way to do this with Activiti's support? Are there any better solutions?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 31 Mar 2014 20:10:32 GMT</pubDate>
    <dc:creator>mrbean</dc:creator>
    <dc:date>2014-03-31T20:10:32Z</dc:date>
    <item>
      <title>Performance problem with task listing</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/performance-problem-with-task-listing/m-p/168600#M122050</link>
      <description>This is not necessarily a problem of Activiti. It's more of a problem of the underlying database. I want to know if there is any recommendation for this problem or if others have faced similar problem and how they may have handled it.Here is the scenario.We have about 300K unassigned tasks in the sy</description>
      <pubDate>Mon, 31 Mar 2014 20:10:32 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/performance-problem-with-task-listing/m-p/168600#M122050</guid>
      <dc:creator>mrbean</dc:creator>
      <dc:date>2014-03-31T20:10:32Z</dc:date>
    </item>
    <item>
      <title>Re: Performance problem with task listing</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/performance-problem-with-task-listing/m-p/168601#M122051</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Is there a way to do this with Activiti's support?&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;You can add new colum to the DB table. There are DB scripts to create DB and to upgrade DB in activiti sources. Just to modify them for your&amp;nbsp; purposes.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Are there any better solutions?&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;I would vote for DB changes( as you did) or limit the query scope.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Martin&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 01 Apr 2014 06:44:32 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/performance-problem-with-task-listing/m-p/168601#M122051</guid>
      <dc:creator>martin_grofcik</dc:creator>
      <dc:date>2014-04-01T06:44:32Z</dc:date>
    </item>
    <item>
      <title>Re: Performance problem with task listing</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/performance-problem-with-task-listing/m-p/168602#M122052</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Is there a way to do this with Activiti's support?&lt;/BLOCKQUOTE&gt;You can add new colum to the DB table. There are DB scripts to create DB and to upgrade DB in activiti sources. Just to modify them for your purposes.&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;Thanks Martin&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;We will investigate this approach further. We will update the db creation scripts to create this new column. I will need to figure out how this change will be kept when we upgrade activiti from 5.11 to 5.15 and beyond. Question is how do we insert the value in this new column. I can think of some db mechanism (trigger that sets value for this column when a new row is created) or some event mechanism in activiti which updates the task record with a value for this column. Thanks&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 01 Apr 2014 14:35:32 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/performance-problem-with-task-listing/m-p/168602#M122052</guid>
      <dc:creator>mrbean</dc:creator>
      <dc:date>2014-04-01T14:35:32Z</dc:date>
    </item>
    <item>
      <title>Re: Performance problem with task listing</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/performance-problem-with-task-listing/m-p/168603#M122053</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;&amp;gt; some event mechanism in activiti which updates the task record with a value for this column.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In Activiti 5.15, you can now listen for entity creation events, see &lt;/SPAN&gt;&lt;A href="http://activiti.org/userguide/index.html#eventDispatcher" rel="nofollow noopener noreferrer"&gt;http://activiti.org/userguide/index.html#eventDispatcher&lt;/A&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 01 Apr 2014 20:36:20 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/performance-problem-with-task-listing/m-p/168603#M122053</guid>
      <dc:creator>jbarrez</dc:creator>
      <dc:date>2014-04-01T20:36:20Z</dc:date>
    </item>
    <item>
      <title>Re: Performance problem with task listing</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/performance-problem-with-task-listing/m-p/168604#M122054</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thanks Joram.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;In the process of improving the performance of the query, we are also modifying Task.xml file to remove the "distinct" from the select statement. "distinct" seems to go to table scan instead of using the index. I noticed that there are insert and update statements in that file. I am wondering if I can modify those to change my insert and update instead of triggers or events. Both triggers and events will slow down creation/modification of task where as modification of insert statement/update statement will have no effect on performance.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am thinking something like this (additions bolded) - I think I need to figure out mybatis syntax to make it work correctly.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;insert id="insertTask" parameterType="org.activiti.engine.impl.persistence.entity.TaskEntity"&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; insert into ${prefix}ACT_RU_TASK (ID_, REV_, NAME_, PARENT_TASK_ID_, DESCRIPTION_, PRIORITY_, &lt;/SPAN&gt;&lt;STRONG&gt;InvertedPriority_&lt;/STRONG&gt;&lt;SPAN&gt;, CREATE_TIME_, OWNER_,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ASSIGNEE_, DELEGATION_, EXECUTION_ID_, PROC_INST_ID_, PROC_DEF_ID_, TASK_DEF_KEY_, DUE_DATE_, SUSPENSION_STATE_)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; values (#{id, jdbcType=VARCHAR},&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #{name, jdbcType=VARCHAR},&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #{parentTaskId, jdbcType=VARCHAR},&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #{description, jdbcType=VARCHAR},&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #{priority, jdbcType=INTEGER},&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;#{0-priority, jdbcType=INTEGER},&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #{createTime, jdbcType=TIMESTAMP},&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #{owner, jdbcType=VARCHAR},&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #{assignee, jdbcType=VARCHAR},&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #{delegationStateString, jdbcType=VARCHAR},&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #{executionId, jdbcType=VARCHAR},&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #{processInstanceId, jdbcType=VARCHAR},&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #{processDefinitionId, jdbcType=VARCHAR},&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #{taskDefinitionKey, jdbcType=VARCHAR},&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #{dueDate, jdbcType=TIMESTAMP},&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #{suspensionState, jdbcType=INTEGER}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/insert&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 02 Apr 2014 18:29:29 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/performance-problem-with-task-listing/m-p/168604#M122054</guid>
      <dc:creator>mrbean</dc:creator>
      <dc:date>2014-04-02T18:29:29Z</dc:date>
    </item>
    <item>
      <title>Re: Performance problem with task listing</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/performance-problem-with-task-listing/m-p/168605#M122055</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Directly changing the query is not possible, however you can write your own mybatis query: &lt;/SPAN&gt;&lt;A href="http://www.jorambarrez.be/blog/2014/01/17/execute-custom-sql-in-activiti/" rel="nofollow noopener noreferrer"&gt;http://www.jorambarrez.be/blog/2014/01/17/execute-custom-sql-in-activiti/&lt;/A&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 22 Apr 2014 08:26:04 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/performance-problem-with-task-listing/m-p/168605#M122055</guid>
      <dc:creator>jbarrez</dc:creator>
      <dc:date>2014-04-22T08:26:04Z</dc:date>
    </item>
  </channel>
</rss>

