<?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 Re: Re-Try user task in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/re-try-user-task/m-p/194596#M147726</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi Tijs,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for your response. As per the suggestion, I have followed below logic but still could not come back to previous user task.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I was able to change execution activity using below code, but only 'ACT_RUn_EXECUTION' is updated with the activity details, corresponding changes to ACT_RU_TASK table did not happen.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;List&amp;lt;Execution&amp;gt; executionList = runtimeService.createExecutionQuery().executionId("id").list();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;List&amp;lt;HistoricTaskInstance&amp;gt; historyTaskList = historyService.createHistoricTaskInstanceQuery().processInstanceId("id").orderByTaskCreateTime().desc().list();&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;– get execution entity for a particular process instance&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;ExecutionEntity executionEntity = (ExecutionEntity) executionList.get(0);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;– get process definition&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;ProcessDefinitionImpl processDefinition = (ProcessDefinitionImpl) repositoryService.getProcessDefinition("definitionId");&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;– fetch activity details of the previous user task&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;ActivityImpl activity = processDefinition.findActivity(historyTaskList.get(1).getTaskDefinitionKey());&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;– set activity to execution&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;executionEntity.setActivity(activity);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;– this method saves executionEntity&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;updateExecution(executionEntity);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;– updateExecution command is as below. This will update the execution details with previous user task.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;private void updateExecution(ExecutionEntity execution) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; final class UpdateExecutionCommand implements Command&amp;lt;ExecutionEntity&amp;gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; ExecutionEntity execution;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; public UpdateExecutionCommand(ExecutionEntity execution){&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.execution = execution;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; } &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; public ExecutionEntity execute(CommandContext commandContext) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DbSqlSession dbSqlSession = commandContext.getDbSqlSession();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dbSqlSession.getSqlSession().update(UPDATE_EXECUTION, execution);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return execution;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; processEngineConfiguration.getJobExecutor().getCommandExecutor().execute(&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new UpdateExecutionCommand(execution));&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Since the ACT_RU_TASK table was not updated, I tried creating another command similar to above to delete current task details from run time table and create a new one for the previous step, but could not succeed with Delete command as it said, cannot delete a task from runtime table.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Could you please help me in understanding how to rollback to previous step so that execution starts from previous step again?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 30 Jul 2015 06:33:01 GMT</pubDate>
    <dc:creator>prabhanjan</dc:creator>
    <dc:date>2015-07-30T06:33:01Z</dc:date>
    <item>
      <title>Re-Try user task</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/re-try-user-task/m-p/194594#M147724</link>
      <description>Dear Team,We are using ACTIVITI 5.17.We have a requirement from client which I am unable to map to Activiti features. Client wants that an admin user should be able to rollback any "User Task" to any of the previous stage at any point of time.For example, following is my process, where "A", "B", "C"</description>
      <pubDate>Wed, 29 Jul 2015 10:19:40 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/re-try-user-task/m-p/194594#M147724</guid>
      <dc:creator>prabhanjan</dc:creator>
      <dc:date>2015-07-29T10:19:40Z</dc:date>
    </item>
    <item>
      <title>Re: Re-Try user task</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/re-try-user-task/m-p/194595#M147725</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;SPAN&gt;It's an interesting feature and we will be looking into more dynamic behaviour for the next releases of Activiti. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Right now the best option would be to write a custom command and use the ManagementService executeCommand method to execute your custom command logic. In this logic you can lookup the execution for the current task and set the activityId to the new user task id.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Best regards,&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 29 Jul 2015 17:33:37 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/re-try-user-task/m-p/194595#M147725</guid>
      <dc:creator>trademak</dc:creator>
      <dc:date>2015-07-29T17:33:37Z</dc:date>
    </item>
    <item>
      <title>Re: Re-Try user task</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/re-try-user-task/m-p/194596#M147726</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi Tijs,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for your response. As per the suggestion, I have followed below logic but still could not come back to previous user task.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I was able to change execution activity using below code, but only 'ACT_RUn_EXECUTION' is updated with the activity details, corresponding changes to ACT_RU_TASK table did not happen.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;List&amp;lt;Execution&amp;gt; executionList = runtimeService.createExecutionQuery().executionId("id").list();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;List&amp;lt;HistoricTaskInstance&amp;gt; historyTaskList = historyService.createHistoricTaskInstanceQuery().processInstanceId("id").orderByTaskCreateTime().desc().list();&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;– get execution entity for a particular process instance&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;ExecutionEntity executionEntity = (ExecutionEntity) executionList.get(0);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;– get process definition&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;ProcessDefinitionImpl processDefinition = (ProcessDefinitionImpl) repositoryService.getProcessDefinition("definitionId");&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;– fetch activity details of the previous user task&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;ActivityImpl activity = processDefinition.findActivity(historyTaskList.get(1).getTaskDefinitionKey());&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;– set activity to execution&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;executionEntity.setActivity(activity);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;– this method saves executionEntity&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;updateExecution(executionEntity);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;– updateExecution command is as below. This will update the execution details with previous user task.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;private void updateExecution(ExecutionEntity execution) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; final class UpdateExecutionCommand implements Command&amp;lt;ExecutionEntity&amp;gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; ExecutionEntity execution;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; public UpdateExecutionCommand(ExecutionEntity execution){&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.execution = execution;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; } &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; public ExecutionEntity execute(CommandContext commandContext) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DbSqlSession dbSqlSession = commandContext.getDbSqlSession();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dbSqlSession.getSqlSession().update(UPDATE_EXECUTION, execution);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return execution;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; processEngineConfiguration.getJobExecutor().getCommandExecutor().execute(&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new UpdateExecutionCommand(execution));&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Since the ACT_RU_TASK table was not updated, I tried creating another command similar to above to delete current task details from run time table and create a new one for the previous step, but could not succeed with Delete command as it said, cannot delete a task from runtime table.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Could you please help me in understanding how to rollback to previous step so that execution starts from previous step again?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 30 Jul 2015 06:33:01 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/re-try-user-task/m-p/194596#M147726</guid>
      <dc:creator>prabhanjan</dc:creator>
      <dc:date>2015-07-30T06:33:01Z</dc:date>
    </item>
    <item>
      <title>Re: Re-Try user task</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/re-try-user-task/m-p/194597#M147727</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;SPAN&gt;We are also looking for a similar solution. @prabhanjan did you get it working?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Sankaran&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Aug 2015 19:58:44 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/re-try-user-task/m-p/194597#M147727</guid>
      <dc:creator>sankaran_pv</dc:creator>
      <dc:date>2015-08-05T19:58:44Z</dc:date>
    </item>
  </channel>
</rss>

