Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Study the <a href="http://docs.jboss.org/jbpm/v3/userguide/jpdl.html" rel="nofollow noreferrer">Java Process Definition Language specification</a> where <a href="http://www.jboss.org/jbpm" rel="nofollow noreferrer">JBoss has an execution engine for it</a>. Using this Java based engine may be your easiest solution, and it solves many of the problems you've outlined. </p> <p>If you intend to write your own, you will probably end up modelling states and transitions, vertices and edges in a directed graph. And this as Ciaran Archer wrote are the components of a <a href="http://en.wikipedia.org/wiki/Finite-state_machine" rel="nofollow noreferrer">State Machine</a>. The best persistence approach IMO is capturing versions of whatever data is being sent through workflow via serialization, capturing the current state, and a history of transitions between states and changes to that data. The mechanism probably needs a way to keep track of who or what has responsibility for taking the next action against that workflow. </p> <p>Based on your question, one thing to consider is whether or not you really need to represent parallel tasks in your solution. Where instead it might be possible to en-queue a set of messages and then specify a wait state for all of those to complete. Representing actual parallelism implies you are moving <em>data</em> simultaneously through several different processes. In which case when they join again you need an algorithm to resolve deltas, which is very much a non trivial task. </p> <p>In the context of ColdFusion and what you're trying to accomplish, a scheduled task may be necessary if the system you're writing needs to poll other systems. Consider WDDX as a serialization format. JSON, while seductively simple, I recall has some edge cases around numbers and dates that can cause you grief. </p> <p><a href="https://stackoverflow.com/questions/4801987/suggest-a-persistent-strategy-for-a-workflow-system/4819408#4819408">Finally see my answer to this question for some additional thoughts</a>.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload