<?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 task.setAssignee() does not affect ACT_HI_ACTINST in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/task-setassignee-does-not-affect-act-hi-actinst/m-p/86228#M58261</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi all,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;it seems that when doing task.setAssignee(), the new assignee is only updated in ACT_RU_TASK and ACT_HI_TASKINST, but not in ACT_HI_ACTINST. This is an excerpt from TaskEntity.java:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;&amp;nbsp; public void setAssignee(String assignee) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (assignee==null &amp;amp;&amp;amp; this.assignee==null) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (assignee!=null &amp;amp;&amp;amp; assignee.equals(this.assignee)) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.assignee = assignee;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CommandContext commandContext = Context.getCommandContext();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (commandContext!=null) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; commandContext&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .getHistoricTaskInstanceManager()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .setTaskAssignee(id, assignee);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // if there is no command context, then it means that the user is calling the &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // setAssignee outside a service method.&amp;nbsp; E.g. while creating a new task.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (commandContext!=null) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fireEvent(TaskListener.EVENTNAME_ASSIGNMENT);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;It's obvious that the HistoricTaskInstance is updated, but why not also the HistoricActivityInstance? Am I doing something wrong? This is happening in a process where the first user task comes right after the process start and has only a candidate set, no assignee. So I claim it manually (via CDI BusinessProcess bean).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Why I need this: I would like to know who made updates to process variables, and since there's no link from ACT_HI_DETAIL to ACT_HI_TASKINST, I have to rely on the information from ACT_HI_ACTINST), see also &lt;/SPAN&gt;&lt;A href="http://forums.activiti.org/en/viewtopic.php?f=6&amp;amp;t=4040" rel="nofollow noopener noreferrer"&gt;this thread&lt;/A&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for your input &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Peter&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 15 Jun 2012 04:33:43 GMT</pubDate>
    <dc:creator>naag</dc:creator>
    <dc:date>2012-06-15T04:33:43Z</dc:date>
    <item>
      <title>task.setAssignee() does not affect ACT_HI_ACTINST</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/task-setassignee-does-not-affect-act-hi-actinst/m-p/86228#M58261</link>
      <description>Hi all,it seems that when doing task.setAssignee(), the new assignee is only updated in ACT_RU_TASK and ACT_HI_TASKINST, but not in ACT_HI_ACTINST. This is an excerpt from TaskEntity.java:&amp;nbsp; public void setAssignee(String assignee) {&amp;nbsp;&amp;nbsp;&amp;nbsp; if (assignee==null &amp;amp;&amp;amp; this.assignee==null) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return</description>
      <pubDate>Fri, 15 Jun 2012 04:33:43 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/task-setassignee-does-not-affect-act-hi-actinst/m-p/86228#M58261</guid>
      <dc:creator>naag</dc:creator>
      <dc:date>2012-06-15T04:33:43Z</dc:date>
    </item>
    <item>
      <title>Re: task.setAssignee() does not affect ACT_HI_ACTINST</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/task-setassignee-does-not-affect-act-hi-actinst/m-p/86229#M58262</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Peter,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Updated issue, this should indeed be updated. &lt;/SPAN&gt;&lt;A href="https://jira.codehaus.org/browse/ACT-1248" rel="nofollow noopener noreferrer"&gt;https://jira.codehaus.org/browse/ACT-1248&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Just another path you may follow for having rock-solid control of who (and when) an assignee was changed on what task:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; - Add a BPMNParseListener to your engine&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; - Have the parse listener add a custom TaskListener to all UserTasks (parseUserTask() method I guess), under the event-name EVENTNAME_ASSIGNMENT = "assignment"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; - In this TaskListener, you can set a task-variable (e.g.. _taskAssignee).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; - Since variable is available in the history, you can order the variable-updates for a certain task by date which shows good trace about updates and their assignee&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Jun 2012 06:03:50 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/task-setassignee-does-not-affect-act-hi-actinst/m-p/86229#M58262</guid>
      <dc:creator>frederikherema1</dc:creator>
      <dc:date>2012-06-15T06:03:50Z</dc:date>
    </item>
    <item>
      <title>Re: task.setAssignee() does not affect ACT_HI_ACTINST</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/task-setassignee-does-not-affect-act-hi-actinst/m-p/86230#M58263</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi Frederik,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for the JIRA update and all your suggestions, it's a really good idea. I will try it now and report back afterwards &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Peter&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Jun 2012 06:21:44 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/task-setassignee-does-not-affect-act-hi-actinst/m-p/86230#M58263</guid>
      <dc:creator>naag</dc:creator>
      <dc:date>2012-06-15T06:21:44Z</dc:date>
    </item>
    <item>
      <title>Re: task.setAssignee() does not affect ACT_HI_ACTINST</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/task-setassignee-does-not-affect-act-hi-actinst/m-p/86231#M58264</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi again,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;actually I see there's already a UserTaskAssignmentHandler in place by default, which tries to set the assignee on the HistoricActivityInstance. So it should work I guess! But debugging shows me that for the task where I miss the assignee, no CommandContext can be found during TaskEntity.setAssignee(), and that's why no events are fired:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;CODE&gt;&lt;BR /&gt;&amp;nbsp; public void setAssignee(String assignee) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // …&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CommandContext commandContext = Context.getCommandContext();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (commandContext!=null) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // …&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // if there is no command context, then it means that the user is calling the &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // setAssignee outside a service method.&amp;nbsp; E.g. while creating a new task.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (commandContext!=null) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fireEvent(TaskListener.EVENTNAME_ASSIGNMENT);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&lt;/CODE&gt;&lt;BR /&gt;&lt;SPAN&gt;To give a little bit of context: this is a JSF based application with a listing of user tasks. The user can click a button "Claim" which will go to the CDI bean BusinessProcess.start(taskId, true). I don't know much about Activiti internals, but I would expect that the events are fired in this situation. Or am I wrong somewhere?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Peter&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Jun 2012 07:00:17 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/task-setassignee-does-not-affect-act-hi-actinst/m-p/86231#M58264</guid>
      <dc:creator>naag</dc:creator>
      <dc:date>2012-06-15T07:00:17Z</dc:date>
    </item>
    <item>
      <title>Re: task.setAssignee() does not affect ACT_HI_ACTINST</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/task-setassignee-does-not-affect-act-hi-actinst/m-p/86232#M58265</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Do you use taskService.setAssignee(taskId, "fred"), because this is the recommended way to do this. In case you are and the assignee is not set on the act-instance, this is still a bug.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Jun 2012 07:05:24 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/task-setassignee-does-not-affect-act-hi-actinst/m-p/86232#M58265</guid>
      <dc:creator>frederikherema1</dc:creator>
      <dc:date>2012-06-15T07:05:24Z</dc:date>
    </item>
    <item>
      <title>Re: task.setAssignee() does not affect ACT_HI_ACTINST</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/task-setassignee-does-not-affect-act-hi-actinst/m-p/86233#M58266</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thanks Frederik!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Indeed I was using task.setAssignee(), and not taskService.setAssignee(). Now it's working like expected, so no bug really. I never noticed this in the documentation / book, but maybe I was not paying enough attention.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;But it makes me wonder, under which circumstance would I call task.setAssignee()? Or can we say that in general, to correctly modify Activiti entities, we always need to use one of the *Service classes? I was naively expecting that making changes on the entities would work properly.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Tip to everybody else who is like me: study the Activiti Explorer source code, helped me to spot this difference quite easily (sorry, should have done so earlier ;-)).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Peter&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Jun 2012 07:20:23 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/task-setassignee-does-not-affect-act-hi-actinst/m-p/86233#M58266</guid>
      <dc:creator>naag</dc:creator>
      <dc:date>2012-06-15T07:20:23Z</dc:date>
    </item>
    <item>
      <title>Re: task.setAssignee() does not affect ACT_HI_ACTINST</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/task-setassignee-does-not-affect-act-hi-actinst/m-p/86234#M58267</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Actually, now you mention it, task.setAssignee() a valid call IF afterwards, you call taskService.saveTask(task). The SaveTaskCmd will call the setAssignee() and (if updated) will fire the update-event exactly as it does when using taskService.setAssignee(..).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So all activiti-entities returned by the API are actually 'detached' from the engine/persistence.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Jun 2012 07:26:24 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/task-setassignee-does-not-affect-act-hi-actinst/m-p/86234#M58267</guid>
      <dc:creator>frederikherema1</dc:creator>
      <dc:date>2012-06-15T07:26:24Z</dc:date>
    </item>
    <item>
      <title>Re: task.setAssignee() does not affect ACT_HI_ACTINST</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/task-setassignee-does-not-affect-act-hi-actinst/m-p/86235#M58268</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;That's very good to know. Actually TaskService.saveTask() appears several times in the Activiti in Action book, but I never paid attention.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Your statement about everything being detached might be a good addition to the user guide. Especially because under certain circumstances, task.setAssignee() works as expected (surely when somewhere else, you somehow trigger TaskService.saveTask() indirectly during the same transaction).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Anyways, I'm happy now &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt; Thanks for the great support! I will close the JIRA now.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Jun 2012 07:40:37 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/task-setassignee-does-not-affect-act-hi-actinst/m-p/86235#M58268</guid>
      <dc:creator>naag</dc:creator>
      <dc:date>2012-06-15T07:40:37Z</dc:date>
    </item>
  </channel>
</rss>

