<?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: Distributed Workflow Execution in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/distributed-workflow-execution/m-p/77601#M51362</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;3: yes, when writing to the db. Records have a version number that changes if something else updates afte you read it. So you have version 3 and something else updates, that will be version 4. This can be detected since you have still version 3.&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;Sounds good.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;So is the granularity of this versioning on the overall process state (coarse)? or is it more fine-grained?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;(For example, if the only effect of an engine running a process instance is the change of one workflow variable,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;will another engine, running the same process instance concurrently, fail to later update the process state even &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;though it did not update that variable?)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;processinstances is not one big serialized object&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;Would be interested how the process state is saved..&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Another issue I'm concerned with when engines are simultaneously &lt;/SPAN&gt;&lt;STRONG&gt;executing the same processes in different JVMs&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;is that of how the "timers" work. Assuming jobExecutorActivate=true for all engines, won't this fire the timers &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;in every JVM? Guess I need to understand how this job executor really works.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 10 Aug 2011 08:58:47 GMT</pubDate>
    <dc:creator>lichtin</dc:creator>
    <dc:date>2011-08-10T08:58:47Z</dc:date>
    <item>
      <title>Distributed Workflow Execution</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/distributed-workflow-execution/m-p/77597#M51358</link>
      <description>HiI'm thinking about how workflows can be executed in a distributed system where multiple engines will be running.A message that starts or resumes a workflow process can arrive anywhere in the system. So for example when a message M2 arrives, the nearest engine E2 cannot just retrieve the workflow p</description>
      <pubDate>Fri, 05 Aug 2011 15:37:30 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/distributed-workflow-execution/m-p/77597#M51358</guid>
      <dc:creator>lichtin</dc:creator>
      <dc:date>2011-08-05T15:37:30Z</dc:date>
    </item>
    <item>
      <title>Re: Distributed Workflow Execution</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/distributed-workflow-execution/m-p/77598#M51359</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;If there are two concurrent paths that have no relation at all, not even writing variables, there is no reason at all that two parts of the same process instances could not be executed by different engines… Simply because the processinstances is not one big serialized object, each step can be separately executed. Great isn't it? &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If another engine is doing something with the same instance that 'collides'(!!!), you will get an optimistic lock exception and should retry. Often a few hundred miliseconds later it will succeed. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Now what is realy cool is that , in 5.7 a retry interceptor will be introduced that does this for you…&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 06 Aug 2011 13:12:23 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/distributed-workflow-execution/m-p/77598#M51359</guid>
      <dc:creator>ronald_van_kuij</dc:creator>
      <dc:date>2011-08-06T13:12:23Z</dc:date>
    </item>
    <item>
      <title>Re: Distributed Workflow Execution</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/distributed-workflow-execution/m-p/77599#M51360</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Great indeed!&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;So do I understand you correctly that more than one engine can work with the same DB tables?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Simply because the processinstances is not one big serialized object, each step can be separately executed.&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;Can you explain "each step"? [Excuse my ignorance, I'm really very new to Activiti..]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;If another engine is doing something with the same instance that 'collides'(!!!), you will get an optimistic lock exception and should retry.&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;Interesting, so when will the engine notice the collision? At the time it wants to write back the process state?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;What is the granularity of the optimistic lock? Is perhaps the engine only updating the modified variables?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thank you for all the insight. And please feel free to point me to some code if necessary &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 08 Aug 2011 14:26:33 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/distributed-workflow-execution/m-p/77599#M51360</guid>
      <dc:creator>lichtin</dc:creator>
      <dc:date>2011-08-08T14:26:33Z</dc:date>
    </item>
    <item>
      <title>Re: Distributed Workflow Execution</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/distributed-workflow-execution/m-p/77600#M51361</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;1: yes, same db tables (you SHOULD in fact)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;2: step = task, sorry for the wrong choice of words&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;3: yes, when writing to the db. Records have a version number that changes if something else updates afte you read it. So you have version 3 and something else updates, that will be version 4. This can be detected since you have still version 3.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 08 Aug 2011 15:48:26 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/distributed-workflow-execution/m-p/77600#M51361</guid>
      <dc:creator>ronald_van_kuij</dc:creator>
      <dc:date>2011-08-08T15:48:26Z</dc:date>
    </item>
    <item>
      <title>Re: Distributed Workflow Execution</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/distributed-workflow-execution/m-p/77601#M51362</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;3: yes, when writing to the db. Records have a version number that changes if something else updates afte you read it. So you have version 3 and something else updates, that will be version 4. This can be detected since you have still version 3.&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;Sounds good.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;So is the granularity of this versioning on the overall process state (coarse)? or is it more fine-grained?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;(For example, if the only effect of an engine running a process instance is the change of one workflow variable,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;will another engine, running the same process instance concurrently, fail to later update the process state even &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;though it did not update that variable?)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;processinstances is not one big serialized object&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;Would be interested how the process state is saved..&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Another issue I'm concerned with when engines are simultaneously &lt;/SPAN&gt;&lt;STRONG&gt;executing the same processes in different JVMs&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;is that of how the "timers" work. Assuming jobExecutorActivate=true for all engines, won't this fire the timers &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;in every JVM? Guess I need to understand how this job executor really works.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 10 Aug 2011 08:58:47 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/distributed-workflow-execution/m-p/77601#M51362</guid>
      <dc:creator>lichtin</dc:creator>
      <dc:date>2011-08-10T08:58:47Z</dc:date>
    </item>
    <item>
      <title>Re: Distributed Workflow Execution</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/distributed-workflow-execution/m-p/77602#M51363</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;3: yes, when writing to the db. Records have a version number that changes if something else updates afte you read it. So you have version 3 and something else updates, that will be version 4. This can be detected since you have still version 3.&lt;/BLOCKQUOTE&gt;Sounds good.&lt;BR /&gt;So is the granularity of this versioning on the overall process state (coarse)?&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt; No&lt;/SPAN&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;or is it more fine-grained?&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;Yes&lt;/SPAN&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;(For example, if the only effect of an engine running a process instance is the change of one workflow variable,&lt;BR /&gt;will another engine, running the same process instance concurrently, fail to later update the process state even &lt;BR /&gt;though it did not update that variable?)&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt;If A reads, B reads, A updates, B updates it fails&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;If A reads, A updates, B reads, B updates it succeeds&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;processinstances is not one big serialized object&lt;/BLOCKQUOTE&gt;Would be interested how the process state is saved..&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;Look at the DB&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Another issue I'm concerned with when engines are simultaneously &lt;STRONG&gt;executing the same processes in different JVMs&lt;/STRONG&gt;&lt;BR /&gt;is that of how the "timers" work. Assuming jobExecutorActivate=true for all engines, won't this fire the timers &lt;BR /&gt;in every JVM?&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;No, since timers are read and locked before executing (look at the database table for jobs)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Guess I need to understand how this job executor really works.&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;It's not that difficult, but I have some optimizations in the pipeline that make it perform waaaaayyyy faster. Maybe for 5.9 (or 5.8 if the releases will be every two months from now on)&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 19 Aug 2011 10:33:11 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/distributed-workflow-execution/m-p/77602#M51363</guid>
      <dc:creator>ronald_van_kuij</dc:creator>
      <dc:date>2011-08-19T10:33:11Z</dc:date>
    </item>
  </channel>
</rss>

