<?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: How to implement long-running tasks in Activiti? in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/how-to-implement-long-running-tasks-in-activiti/m-p/202074#M155204</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;This kind of question seems to appear quite regularly here at the forums. Maybe the "shell task" could be extended so it behaves more or less like the "java receive" task. One could use a custom job executor&amp;nbsp; that picks shell commands, executes them in a separate thread and then signals the engine when the external program completes. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;More complex scenarios can also be addressed simply by using a different job executor (eg, using an external job scheduler like UC4, Control-M, etc)&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 05 Sep 2015 01:30:34 GMT</pubDate>
    <dc:creator>pmsevestre</dc:creator>
    <dc:date>2015-09-05T01:30:34Z</dc:date>
    <item>
      <title>How to implement long-running tasks in Activiti?</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/how-to-implement-long-running-tasks-in-activiti/m-p/202066#M155196</link>
      <description>Hi,My process is a simple model with 2 service tasks. ServiceTask1 can take over 15 minutes to run in the execute() method, and ServiceTask2 completes in mere seconds. What happens is that ServiceTask1 will cause the Activiti database to timeout as the transaction has remained open longer than 5 min</description>
      <pubDate>Thu, 13 Aug 2015 15:58:35 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/how-to-implement-long-running-tasks-in-activiti/m-p/202066#M155196</guid>
      <dc:creator>zlatan316</dc:creator>
      <dc:date>2015-08-13T15:58:35Z</dc:date>
    </item>
    <item>
      <title>Re: How to implement long-running tasks in Activiti?</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/how-to-implement-long-running-tasks-in-activiti/m-p/202067#M155197</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi Zlatan,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;asynchronous tasks won't help you in this case. Asynchronous task splits the transaction, but still one transaction takes 15 mins in your case.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I would say that you need to make your service task execution asynchronous:&lt;/SPAN&gt;&lt;BR /&gt;&lt;OL style="list-style-type:decimal;"&gt;&lt;LI&gt;call your service&lt;/LI&gt;&lt;LI&gt;get response immediately that processing has started&lt;/LI&gt;&lt;LI&gt;wait for message or signal from your service that processing has finished and process instance can continue in execution.&lt;/LI&gt;&lt;/OL&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>Fri, 14 Aug 2015 04:56:24 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/how-to-implement-long-running-tasks-in-activiti/m-p/202067#M155197</guid>
      <dc:creator>martin_grofcik</dc:creator>
      <dc:date>2015-08-14T04:56:24Z</dc:date>
    </item>
    <item>
      <title>Re: How to implement long-running tasks in Activiti?</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/how-to-implement-long-running-tasks-in-activiti/m-p/202068#M155198</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thanks Martin,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;How do i implement using this approach? I have set the Service Task to Asynchronous, with Exclusive also enabled. I imagine this is setting the ServiceTask1 to Asynchronous execution? What do I need to implement within ServiceTask1 to run without the timeout limitation and signal to the process that it can now continue to ServiceTask2?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 14 Aug 2015 10:24:44 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/how-to-implement-long-running-tasks-in-activiti/m-p/202068#M155198</guid>
      <dc:creator>zlatan316</dc:creator>
      <dc:date>2015-08-14T10:24:44Z</dc:date>
    </item>
    <item>
      <title>Re: How to implement long-running tasks in Activiti?</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/how-to-implement-long-running-tasks-in-activiti/m-p/202069#M155199</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi Zlatan,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;15 mins DB transaction does not make sense.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;How to implement&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;You have to change your service implementation too. Implement service in the following way:&lt;/SPAN&gt;&lt;BR /&gt;&lt;OL style="list-style-type:decimal;"&gt;&lt;LI&gt;call service from the process. Service should return the result immediately. The return&amp;nbsp; should only inform process engine that service has started to work.&lt;/LI&gt;&lt;LI&gt;process execution and get return values.&lt;/LI&gt;&lt;LI&gt;Service calls activiti message/signal events which informs process instance that results are ready and instance can continue in execution.&lt;/LI&gt;Regards&lt;BR /&gt;Martin&lt;/OL&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 17 Aug 2015 05:47:28 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/how-to-implement-long-running-tasks-in-activiti/m-p/202069#M155199</guid>
      <dc:creator>martin_grofcik</dc:creator>
      <dc:date>2015-08-17T05:47:28Z</dc:date>
    </item>
    <item>
      <title>Re: How to implement long-running tasks in Activiti?</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/how-to-implement-long-running-tasks-in-activiti/m-p/202070#M155200</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;What is meant exactly by the 'Service', as I imagine this is something which is not provided by Activiti 5.17? Would appreciate a code example of how to use it as i've only really delved into activiti specific Tasks.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 17 Aug 2015 11:41:29 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/how-to-implement-long-running-tasks-in-activiti/m-p/202070#M155200</guid>
      <dc:creator>zlatan316</dc:creator>
      <dc:date>2015-08-17T11:41:29Z</dc:date>
    </item>
    <item>
      <title>Re: How to implement long-running tasks in Activiti?</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/how-to-implement-long-running-tasks-in-activiti/m-p/202071#M155201</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi Zlatan.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;let's take simple message intermediate catching event example &lt;/SPAN&gt;&lt;CODE&gt;org.activiti.engine.test.bpmn.event.message.MessageIntermediateEventTest#testSingleIntermediateMessageEvent&lt;/CODE&gt;&lt;SPAN&gt;in the file &lt;/SPAN&gt;&lt;CODE&gt;org/activiti/engine/test/bpmn/event/message/MessageIntermediateEventTest.testSingleIntermediateMessageEvent.bpmn20.xml&lt;/CODE&gt;&lt;SPAN&gt; put service call (to call your external system, with executionId param) between start and message event. This external service call can send a message to process instance with execution id:&lt;/SPAN&gt;&lt;BR /&gt;&lt;CODE&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; runtimeService.messageEventReceived(messageName, execution.getId());&lt;BR /&gt;&lt;/CODE&gt;&lt;SPAN&gt;line 49.&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;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Aug 2015 05:36:47 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/how-to-implement-long-running-tasks-in-activiti/m-p/202071#M155201</guid>
      <dc:creator>martin_grofcik</dc:creator>
      <dc:date>2015-08-18T05:36:47Z</dc:date>
    </item>
    <item>
      <title>Re: How to implement long-running tasks in Activiti?</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/how-to-implement-long-running-tasks-in-activiti/m-p/202072#M155202</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thanks Martin.&amp;nbsp; I have managed to trigger the diagram's MessageIntermediateCatchEvent with the above line of code running in an external JAR. Thanks for the help Martin&lt;img id="smileyhappy" class="emoticon emoticon-smileyhappy" src="https://connect.hyland.com/i/smilies/16x16_smiley-happy.png" alt="Smiley Happy" title="Smiley Happy" /&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The only issue that remains is how to trigger an external JAR from ServiceTask1 to run code outside of Activiti. I am trying to use the below code, but it doesnt actually trigger the jar, and hence the diagram just waits at the IntermediateMessageCatchEvent. Is there something wrong with my command? This code works fine when triggered from a command line, as it then triggers the messagecatchevent which is waiting in activiti.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; public void execute(DelegateExecution execution) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&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; String s;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Process p;&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; try {&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p = Runtime.getRuntime().exec("java -cp StandaloneRunner.jar&lt;img id="smileyfrustrated" class="emoticon emoticon-smileyfrustrated" src="https://connect.hyland.com/i/smilies/16x16_smiley-frustrated.png" alt="Smiley Frustrated" title="Smiley Frustrated" /&gt;tandaloneRunner_lib/* conceptclasses.StandaloneRunner " + execution.getId());&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; System.out.println("Execution command triggered");&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; BufferedReader br = new BufferedReader(&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; new InputStreamReader(p.getInputStream()));&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; while ((s = br.readLine()) != 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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("line: " + s);&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; p.waitFor();&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; System.out.println ("exit: " + p.exitValue());&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; p.destroy();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; } catch (Exception e) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; }&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Aug 2015 10:33:23 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/how-to-implement-long-running-tasks-in-activiti/m-p/202072#M155202</guid>
      <dc:creator>zlatan316</dc:creator>
      <dc:date>2015-08-20T10:33:23Z</dc:date>
    </item>
    <item>
      <title>Re: How to implement long-running tasks in Activiti?</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/how-to-implement-long-running-tasks-in-activiti/m-p/202073#M155203</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;SPAN&gt;Make sure your jar is visible, maybe your current path where the command is executed is not the proper one. (I guess it is your tomcat's bin folder)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;try to specify the full path to the jar file not only the name.&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Aug 2015 21:03:50 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/how-to-implement-long-running-tasks-in-activiti/m-p/202073#M155203</guid>
      <dc:creator>vasile_dirla</dc:creator>
      <dc:date>2015-08-20T21:03:50Z</dc:date>
    </item>
    <item>
      <title>Re: How to implement long-running tasks in Activiti?</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/how-to-implement-long-running-tasks-in-activiti/m-p/202074#M155204</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;This kind of question seems to appear quite regularly here at the forums. Maybe the "shell task" could be extended so it behaves more or less like the "java receive" task. One could use a custom job executor&amp;nbsp; that picks shell commands, executes them in a separate thread and then signals the engine when the external program completes. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;More complex scenarios can also be addressed simply by using a different job executor (eg, using an external job scheduler like UC4, Control-M, etc)&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 05 Sep 2015 01:30:34 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/how-to-implement-long-running-tasks-in-activiti/m-p/202074#M155204</guid>
      <dc:creator>pmsevestre</dc:creator>
      <dc:date>2015-09-05T01:30:34Z</dc:date>
    </item>
    <item>
      <title>Re: How to implement long-running tasks in Activiti?</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/how-to-implement-long-running-tasks-in-activiti/m-p/202075#M155205</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;@pmsevestre: that is indeed a good idea. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;However, I'm not a big fan of calling processes from within Java (it's not simple and always behaves differently than one assumes). so not sure if it should be something for core Activiti … ?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 08 Sep 2015 09:41:03 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/how-to-implement-long-running-tasks-in-activiti/m-p/202075#M155205</guid>
      <dc:creator>jbarrez</dc:creator>
      <dc:date>2015-09-08T09:41:03Z</dc:date>
    </item>
    <item>
      <title>Re: How to implement long-running tasks in Activiti?</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/how-to-implement-long-running-tasks-in-activiti/m-p/202076#M155206</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thanks Vasile, placing it in the bin folder allows the JAR to run&lt;img id="smileyhappy" class="emoticon emoticon-smileyhappy" src="https://connect.hyland.com/i/smilies/16x16_smiley-happy.png" alt="Smiley Happy" title="Smiley Happy" /&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;One point to note is that the process instance id that is passed to the jar isnt the id that triggers the messagecatchevent. I needed to add a separate step to interrogate the database for child messagecatchevent1 id's in order to trigger the element itself to continue.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I also second the notion that this sort of functionality should be part of Activiti, as there will always be a case where we want a Service Task to last a while before it moves on, just like any real business task, they can take time. I suggest the database timeout is either increased, or its scope to be public so it can be changed easily in the Explorer or through Java.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 02 Oct 2015 10:38:40 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/how-to-implement-long-running-tasks-in-activiti/m-p/202076#M155206</guid>
      <dc:creator>zlatan316</dc:creator>
      <dc:date>2015-10-02T10:38:40Z</dc:date>
    </item>
  </channel>
</rss>

