Modified: websites/staging/ode/trunk/content/developerguide/index.html ============================================================================== --- websites/staging/ode/trunk/content/developerguide/index.html (original) +++ websites/staging/ode/trunk/content/developerguide/index.html Fri Jul 14 10:08:12 2017 @@ -1,104 +1,115 @@ -<!DOCTYPE html> -<html> - <head> - <title>Apache ODE – Developer Guide</title> - <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> - <meta property="og:image" content="http://ode.apache.org/img/ode-logo.png" /> - - <link href="/css/application.min.css" rel="stylesheet" media="screen"> - - - - - - <script src="http://code.jquery.com/jquery-latest.js"></script> - <script src="/js/bootstrap.min.js"></script> - <script type="text/javascript"> - var _gaq = _gaq || []; - _gaq.push(['_setAccount', 'UA-36293077-1']); - _gaq.push(['_trackPageview']); - - (function() { - var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); - })(); - </script> - </head> - <body> - - <!-- Navbar --> - <div class="navbar navbar-fixed-top"> - <div class="navbar-inner"> - <div class="container"> - <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> - <span class="icon-bar"></span> - <span class="icon-bar"></span> - <span class="icon-bar"></span> - </button> - <a class="brand" href="/index.html">Apache ODE</a> - <div class="nav-collapse collapse"> - <ul class="nav"> - <li class=""> - <a href="/getting-ode.html">Getting ODE</a> - </li> - <li class="active dropdown"> - <a href="/userguide/" class="dropdown-toggle" data-toggle="dropdown" data-target="#">Documentation<b class="caret"></b></a> - <ul class="dropdown-menu"> - <li><a href="/userguide/">User Guide</a></li> - <li><a href="/developerguide/">Developer Guide</a></li> - <li><a href="/ws-bpel-20-specification-compliance.html">WS-BPEL Compliance</a></li> - <li><a href="/extensions/">WS-BPEL Extensions</a></li> - <li><a href="/faq.html">FAQ</a></li> - <li><a href="/roadmap.html">Roadmap</a></li> - <li><a href="/resource-services.html">Resources & Services</a></li> - <li><a href="/javadoc/">Javadoc</a></li> - </ul> - </li> - <li class=" dropdown"> - <a href="#" class="dropdown-toggle" data-toggle="dropdown">Contributing<b class="caret"></b></a> - <ul class="dropdown-menu"> - <li><a href="/mailing-lists.html">Mailing Lists</a></li> - <li><a href="/developerguide/building-ode.html">Building ODE</a></li> - <li><a href="/developerguide/source-code.html">Source Code</a></li> - <li><a href="http://issues.apache.org/jira/browse/ODE">Bug Tracking</a></li> - <li><a href="/contributors.html">Contributors</a></li> - <li><a href="http://www.apache.org/licenses/LICENSE-2.0">License</a></li> - </ul> - </li> - <li class="dropdown"> - <a href="http://www.apache.org" class="dropdown-toggle" data-toggle="dropdown" data-target="#">The ASF<b class="caret"></b></a> - <ul class="dropdown-menu"> - <li><a href="http://www.apache.org">Apache Software Foundation</a></li> - <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> - <li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li> - <li><a href="http://www.apache.org/security/">Security</a></li> - </ul> - </li> - </ul> - </div> - </div> - </div> - </div> - - <!-- Subhead --> - - <header class="jumbotron subhead" id="overview"> - <div class="container"> - - <h1>Developer Guide</h1> - - </div> - </header> - - - <!-- Content --> - <div class="container"> - - <div class="row"> - <div class="span12"> - <p><a name="DeveloperGuide-GeneralDocumentation"></a></p> -<h2 id="general-documentation">General Documentation</h2> +<!DOCTYPE html> +<html> + <head> + <title>Apache ODE – Developer Guide</title> + <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> + <meta property="og:image" content="http://ode.apache.org/img/ode-logo.png" /> + + <link href="/css/application.min.css" rel="stylesheet" media="screen"> + + + + + + <script src="http://code.jquery.com/jquery-latest.js"></script> + <script src="/js/bootstrap.min.js"></script> + <script type="text/javascript"> + var _gaq = _gaq || []; + _gaq.push(['_setAccount', 'UA-36293077-1']); + _gaq.push(['_trackPageview']); + + (function() { + var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); + })(); + </script> + </head> + <body> + + <!-- Navbar --> + <div class="navbar navbar-fixed-top"> + <div class="navbar-inner"> + <div class="container"> + <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="brand" href="/index.html">Apache ODE</a> + <div class="nav-collapse collapse"> + <ul class="nav"> + <li class=""> + <a href="/getting-ode.html">Getting ODE</a> + </li> + <li class="active dropdown"> + <a href="/userguide/" class="dropdown-toggle" data-toggle="dropdown" data-target="#">Documentation<b class="caret"></b></a> + <ul class="dropdown-menu"> + <li><a href="/userguide/">User Guide</a></li> + <li><a href="/developerguide/">Developer Guide</a></li> + <li><a href="/ws-bpel-20-specification-compliance.html">WS-BPEL Compliance</a></li> + <li><a href="/extensions/">WS-BPEL Extensions</a></li> + <li><a href="/faq.html">FAQ</a></li> + <li><a href="/roadmap.html">Roadmap</a></li> + <li><a href="/resource-services.html">Resources & Services</a></li> + <li><a href="/javadoc/">Javadoc</a></li> + </ul> + </li> + <li class=" dropdown"> + <a href="#" class="dropdown-toggle" data-toggle="dropdown">Contributing<b class="caret"></b></a> + <ul class="dropdown-menu"> + <li><a href="/mailing-lists.html">Mailing Lists</a></li> + <li><a href="/developerguide/building-ode.html">Building ODE</a></li> + <li><a href="/developerguide/source-code.html">Source Code</a></li> + <li><a href="http://issues.apache.org/jira/browse/ODE">Bug Tracking</a></li> + <li><a href="/contributors.html">Contributors</a></li> + <li><a href="http://www.apache.org/licenses/LICENSE-2.0">License</a></li> + </ul> + </li> + <li class="dropdown"> + <a href="http://www.apache.org" class="dropdown-toggle" data-toggle="dropdown" data-target="#">The ASF<b class="caret"></b></a> + <ul class="dropdown-menu"> + <li><a href="http://www.apache.org">Apache Software Foundation</a></li> + <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> + <li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li> + <li><a href="http://www.apache.org/security/">Security</a></li> + </ul> + </li> + </ul> + </div> + </div> + </div> + </div> + + <!-- Subhead --> + + <header class="jumbotron subhead" id="overview"> + <div class="container"> + + <h1>Developer Guide</h1> + + </div> + </header> + + + <!-- Content --> + <div class="container"> + + <div class="row"> + <div class="span12"> + <style type="text/css"> +/* The following code is added by mdx_elementid.py + It was originally lifted from http://subversion.apache.org/style/site.css */ +/* + * Hide class="elementid-permalink", except when an enclosing heading + * has the :hover property. + */ +.headerlink, .elementid-permalink { + visibility: hidden; +} +h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style> +<p><a name="DeveloperGuide-GeneralDocumentation"></a></p> +<h2 id="general-documentation">General Documentation<a class="headerlink" href="#general-documentation" title="Permanent link">¶</a></h2> <p>These documents are intended for those of you wanting an in-depth look into ODE. You'll learn a bit more about our Web Services interfaces, our internal interfaces and how the engine works.</p> <ul> <li><a href="architectural-overview.html">Architectural Overview</a></li> @@ -107,30 +118,30 @@ <li><a href="release-guidelines.html">Release Guidelines</a></li> </ul> <p><a name="DeveloperGuide-Specifications"></a></p> -<h2 id="specifications">Specifications</h2> +<h2 id="specifications">Specifications<a class="headerlink" href="#specifications" title="Permanent link">¶</a></h2> <ul> <li><a href="stateful-exchange-protocol.html">Stateful Exchange Protocol</a> Protocol for handling stateful interactions (aka automagic correlation).</li> <li><a href="atomic-scopes-extension-for-bpel.html">Atomic Scopes Extension for BPEL</a></li> -</ul> - </div> - </div> - - - <!-- Footer --> - <footer class="footer"> - <div class='row'> - <div class='span3'> - <img src="/img/asf.png" alt="Apache Software Foundation"/> - </div> - <div class='span9'> - <p><strong>Apache ODE</strong><sup>™</sup> is a top-level project at the <a href="http://www.apache.org">Apache Software Foundation<sup>™</sup></a> - Through a collaborative and meritocratic development process, Apache - projects deliver enterprise-grade, freely available software products that - attract large communities of users.</p> - <p>Apache ODE, ODE, Apache, the Apache feather logo, and the Apache ODE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p> - </div> - </div> - </footer> - </div> <!-- /container --> - </body> +</ul> + </div> + </div> + + + <!-- Footer --> + <footer class="footer"> + <div class='row'> + <div class='span3'> + <img src="/img/asf_logo_url.png" alt="Apache Software Foundation"/> + </div> + <div class='span9'> + <p><strong>Apache ODE</strong><sup>™</sup> is a top-level project at the <a href="http://www.apache.org">Apache Software Foundation<sup>™</sup></a> + Through a collaborative and meritocratic development process, Apache + projects deliver enterprise-grade, freely available software products that + attract large communities of users.</p> + <p>Apache ODE, ODE, Apache, the Apache feather logo, and the Apache ODE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p> + </div> + </div> + </footer> + </div> <!-- /container --> + </body> </html> \ No newline at end of file
Modified: websites/staging/ode/trunk/content/developerguide/jacob.html ============================================================================== --- websites/staging/ode/trunk/content/developerguide/jacob.html (original) +++ websites/staging/ode/trunk/content/developerguide/jacob.html Fri Jul 14 10:08:12 2017 @@ -1,104 +1,115 @@ -<!DOCTYPE html> -<html> - <head> - <title>Apache ODE – JaCOb – Virtual Processing Unit</title> - <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> - <meta property="og:image" content="http://ode.apache.org/img/ode-logo.png" /> - - <link href="/css/application.min.css" rel="stylesheet" media="screen"> - - - - - - <script src="http://code.jquery.com/jquery-latest.js"></script> - <script src="/js/bootstrap.min.js"></script> - <script type="text/javascript"> - var _gaq = _gaq || []; - _gaq.push(['_setAccount', 'UA-36293077-1']); - _gaq.push(['_trackPageview']); - - (function() { - var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); - })(); - </script> - </head> - <body> - - <!-- Navbar --> - <div class="navbar navbar-fixed-top"> - <div class="navbar-inner"> - <div class="container"> - <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> - <span class="icon-bar"></span> - <span class="icon-bar"></span> - <span class="icon-bar"></span> - </button> - <a class="brand" href="/index.html">Apache ODE</a> - <div class="nav-collapse collapse"> - <ul class="nav"> - <li class=""> - <a href="/getting-ode.html">Getting ODE</a> - </li> - <li class="active dropdown"> - <a href="/userguide/" class="dropdown-toggle" data-toggle="dropdown" data-target="#">Documentation<b class="caret"></b></a> - <ul class="dropdown-menu"> - <li><a href="/userguide/">User Guide</a></li> - <li><a href="/developerguide/">Developer Guide</a></li> - <li><a href="/ws-bpel-20-specification-compliance.html">WS-BPEL Compliance</a></li> - <li><a href="/extensions/">WS-BPEL Extensions</a></li> - <li><a href="/faq.html">FAQ</a></li> - <li><a href="/roadmap.html">Roadmap</a></li> - <li><a href="/resource-services.html">Resources & Services</a></li> - <li><a href="/javadoc/">Javadoc</a></li> - </ul> - </li> - <li class=" dropdown"> - <a href="#" class="dropdown-toggle" data-toggle="dropdown">Contributing<b class="caret"></b></a> - <ul class="dropdown-menu"> - <li><a href="/mailing-lists.html">Mailing Lists</a></li> - <li><a href="/developerguide/building-ode.html">Building ODE</a></li> - <li><a href="/developerguide/source-code.html">Source Code</a></li> - <li><a href="http://issues.apache.org/jira/browse/ODE">Bug Tracking</a></li> - <li><a href="/contributors.html">Contributors</a></li> - <li><a href="http://www.apache.org/licenses/LICENSE-2.0">License</a></li> - </ul> - </li> - <li class="dropdown"> - <a href="http://www.apache.org" class="dropdown-toggle" data-toggle="dropdown" data-target="#">The ASF<b class="caret"></b></a> - <ul class="dropdown-menu"> - <li><a href="http://www.apache.org">Apache Software Foundation</a></li> - <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> - <li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li> - <li><a href="http://www.apache.org/security/">Security</a></li> - </ul> - </li> - </ul> - </div> - </div> - </div> - </div> - - <!-- Subhead --> - - <header class="jumbotron subhead" id="overview"> - <div class="container"> - - <h1>JaCOb – Virtual Processing Unit</h1> - - </div> - </header> - - - <!-- Content --> - <div class="container"> - - <div class="row"> - <div class="span12"> - <p><a name="Jacob-Introduction"></a></p> -<h2 id="introduction">Introduction</h2> +<!DOCTYPE html> +<html> + <head> + <title>Apache ODE – JaCOb – Virtual Processing Unit</title> + <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> + <meta property="og:image" content="http://ode.apache.org/img/ode-logo.png" /> + + <link href="/css/application.min.css" rel="stylesheet" media="screen"> + + + + + + <script src="http://code.jquery.com/jquery-latest.js"></script> + <script src="/js/bootstrap.min.js"></script> + <script type="text/javascript"> + var _gaq = _gaq || []; + _gaq.push(['_setAccount', 'UA-36293077-1']); + _gaq.push(['_trackPageview']); + + (function() { + var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); + })(); + </script> + </head> + <body> + + <!-- Navbar --> + <div class="navbar navbar-fixed-top"> + <div class="navbar-inner"> + <div class="container"> + <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="brand" href="/index.html">Apache ODE</a> + <div class="nav-collapse collapse"> + <ul class="nav"> + <li class=""> + <a href="/getting-ode.html">Getting ODE</a> + </li> + <li class="active dropdown"> + <a href="/userguide/" class="dropdown-toggle" data-toggle="dropdown" data-target="#">Documentation<b class="caret"></b></a> + <ul class="dropdown-menu"> + <li><a href="/userguide/">User Guide</a></li> + <li><a href="/developerguide/">Developer Guide</a></li> + <li><a href="/ws-bpel-20-specification-compliance.html">WS-BPEL Compliance</a></li> + <li><a href="/extensions/">WS-BPEL Extensions</a></li> + <li><a href="/faq.html">FAQ</a></li> + <li><a href="/roadmap.html">Roadmap</a></li> + <li><a href="/resource-services.html">Resources & Services</a></li> + <li><a href="/javadoc/">Javadoc</a></li> + </ul> + </li> + <li class=" dropdown"> + <a href="#" class="dropdown-toggle" data-toggle="dropdown">Contributing<b class="caret"></b></a> + <ul class="dropdown-menu"> + <li><a href="/mailing-lists.html">Mailing Lists</a></li> + <li><a href="/developerguide/building-ode.html">Building ODE</a></li> + <li><a href="/developerguide/source-code.html">Source Code</a></li> + <li><a href="http://issues.apache.org/jira/browse/ODE">Bug Tracking</a></li> + <li><a href="/contributors.html">Contributors</a></li> + <li><a href="http://www.apache.org/licenses/LICENSE-2.0">License</a></li> + </ul> + </li> + <li class="dropdown"> + <a href="http://www.apache.org" class="dropdown-toggle" data-toggle="dropdown" data-target="#">The ASF<b class="caret"></b></a> + <ul class="dropdown-menu"> + <li><a href="http://www.apache.org">Apache Software Foundation</a></li> + <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> + <li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li> + <li><a href="http://www.apache.org/security/">Security</a></li> + </ul> + </li> + </ul> + </div> + </div> + </div> + </div> + + <!-- Subhead --> + + <header class="jumbotron subhead" id="overview"> + <div class="container"> + + <h1>JaCOb – Virtual Processing Unit</h1> + + </div> + </header> + + + <!-- Content --> + <div class="container"> + + <div class="row"> + <div class="span12"> + <style type="text/css"> +/* The following code is added by mdx_elementid.py + It was originally lifted from http://subversion.apache.org/style/site.css */ +/* + * Hide class="elementid-permalink", except when an enclosing heading + * has the :hover property. + */ +.headerlink, .elementid-permalink { + visibility: hidden; +} +h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style> +<p><a name="Jacob-Introduction"></a></p> +<h2 id="introduction">Introduction<a class="headerlink" href="#introduction" title="Permanent link">¶</a></h2> <p>ODE's BPEL implementation relies on the JaCOb (Java Concurrent Objects) framework to implement the BPEL constructs. The framework provides the mechanism necessary to deal with two key issues in implementing BPEL constructs:</p> <ol> <li>Persistence of execution state.</li> @@ -107,7 +118,7 @@ <p>By rolling up these concerns in the framework, the implementation of the BPEL constructs can be simpler by limiting itself to implementing the BPEL logic and not the infrastructure necessary to support it.</p> <p>The approach we'll take in this tutorial is looking at the <a href="#rationale">rationale</a> of JaCOb and its <a href="#concepts">concepts</a> first. Then we'll illustrate with one complete <a href="#example">example</a>. But if you're a reverse reader, you can also decide to start with the <a href="#example">example</a>.</p> <p><a name="rationale"></a></p> -<h2 id="rationale-behind-the-model">Rationale behind the model</h2> +<h2 id="rationale-behind-the-model">Rationale behind the model<a class="headerlink" href="#rationale-behind-the-model" title="Permanent link">¶</a></h2> <p>Let's start from the most classical example of all:</p> <div class="codehilite"><pre><span class="kt">void</span> <span class="nf">process</span><span class="o">(</span><span class="n">order</span><span class="o">)</span> <span class="o">{</span> <span class="n">billingService</span><span class="o">.</span><span class="na">bill</span><span class="o">(</span><span class="n">order</span><span class="o">.</span><span class="na">billing</span><span class="o">);</span> @@ -187,7 +198,7 @@ <p>From a client standpoint, we've achieved concurrency of execution even with one thread.</p> <p>Next step is adding links, fault handling/termination, compensation and event handlers and seeing that continue/listenOn is all you need. The last step is just adding implementation details.</p> <p><a name="example"></a></p> -<h2 id="jacob-example">JaCOb Example</h2> +<h2 id="jacob-example">JaCOb Example<a class="headerlink" href="#jacob-example" title="Permanent link">¶</a></h2> <p>Consider the issue of persistence. Imagine a simplified and naive implementation of the BPEL constructs <code><sequence></code>, <code><wait></code>, and <code><empty></code>:</p> <div class="codehilite"><pre><span class="kd">class</span> <span class="nc">Sequence</span> <span class="kd">extends</span> <span class="n">Activity</span> <span class="o">{</span> <span class="cm">/** From BPEL Definition */</span> @@ -313,18 +324,18 @@ <p>So JaCOb constructs help us in breaking the execution stack.</p> <p><a name="concepts></a></p> -<h2 id="main-jacob-concepts">Main JaCOb Concepts</h2> +<h2 id="main-jacob-concepts">Main JaCOb Concepts<a class="headerlink" href="#main-jacob-concepts" title="Permanent link">¶</a></h2> <p><a name="Jacob-Channels"></a></p> -<h3 id="channels">Channels</h3> +<h3 id="channels">Channels<a class="headerlink" href="#channels" title="Permanent link">¶</a></h3> <p>As briefly demonstrated above, channels are interfaces used for communication between activities in ODE engine. There are several types of channels like TerminationChannel, ParentScopeChannel or CompensationChannel (their respective purpose should be obvious from their name). Some basic channels are provided to all activities when they're created to allow them to interact with their environment. When an activity wants to notifies its parent that it has terminated for example, it just calls its parent TerminationChannel (see the Empty example above).</p> <p>Don't look for channels implementations because there are none. Channels implementation is provided through a dynamic proxy (see <a href="http://svn.apache.org/repos/asf/ode/trunk/jacob/src/main/java/org/apache/ode/jacob/vpu/ChannelFactory.java">ChannelFactory</a>.createChannel() and <a href="http://svn.apache.org/repos/asf/ode/trunk/jacob/src/main/java/org/apache/ode/jacob/vpu/ChannelFactory.java">ChannelFactory</a>.ChannelInvocationHandler for more). That's one of the levels of decoupling between invocation and actual execution in JaCOb.</p> <p><a name="Jacob-JacobObject/JacobRunnable"></a></p> -<h3 id="jacobobject-jacobrunnable">JacobObject / JacobRunnable</h3> +<h3 id="jacobobject-jacobrunnable">JacobObject / JacobRunnable<a class="headerlink" href="#jacobobject-jacobrunnable" title="Permanent link">¶</a></h3> <p>If you don't care much about the details, the bottom line is: a <a href="http://svn.apache.org/repos/asf/ode/trunk/jacob/src/main/java/org/apache/ode/jacob/JacobObject.java">JacobObject</a> and an <a href="http://svn.apache.org/repos/asf/ode/trunk/jacob/src/main/java/org/apache/ode/jacob/JacobRunnable.java">JacobRunnable</a> are just a method implementation. This method gets executed when the abstraction is executed.</p> <p>A JacobObject is meant to be a closure. From Wikipedia: "A closure combines the code of a function with a special lexical environment bound to that function (scope). Closure lexical variables differ from global variables in that they do not occupy the global variable namespace. They differ from object oriented object variables in that they are bound to functions, not objects.". Normally closures aren't supported in Java so <a href="http://svn.apache.org/repos/asf/ode/trunk/jacob/src/main/java/org/apache/ode/jacob/JacobObject.java">JacobObject</a> tries to feel that gap. But it's not a true closure anyway, which makes thing easier. Closures in JaCOb are statically coded, whereas in most languages supporting closures these are dynamic. So basically in JaCOb, a closure is expected to implement some methods and provides other utility methods to manipulate channels and replicate itself.</p> <p><a href="http://svn.apache.org/repos/asf/ode/trunk/jacob/src/main/java/org/apache/ode/jacob/JacobRunnable.java">JacobRunnable</a> is just a JacobObject that requires the implementation of only one method: run(). As ''all activities inherit from <a href="http://svn.apache.org/repos/asf/ode/trunk/jacob/src/main/java/org/apache/ode/jacob/JacobRunnable.java">JacobRunnable</a> they're all supposed to implement their main processing in this run() method. Their initialization occur in their respective constructors.</p> <p><a name="Jacob-MethodLists(MLs)"></a></p> -<h3 id="method-lists-mls">Method Lists (MLs)</h3> +<h3 id="method-lists-mls">Method Lists (MLs)<a class="headerlink" href="#method-lists-mls" title="Permanent link">¶</a></h3> <p>ML classes can be seen as the other end of a channel. Only they're not invoked directly when one calls a channel method, but only once the JaCOb engine has popped the channel invocation from its internal stack (again you can see how the execution stack gets broken here).</p> <p>Usually MLs implementations in ODE are inlined because it's just easier to declare them in the activities run() method. For example if you look at the Sequence example shown above you'll see something like:</p> <div class="codehilite"><pre><span class="kt">void</span> <span class="nf">run</span><span class="o">()</span> <span class="o">{</span> @@ -344,7 +355,7 @@ <p>The object method here is inherited from !JacobObject and is just a way to hand our ML to JaCOb. So that the JaCOb runtime can match it with an incoming channel message later on.</p> -<h2 id="vpu-and-executionqueue">VPU and ExecutionQueue</h2> +<h2 id="vpu-and-executionqueue">VPU and ExecutionQueue<a class="headerlink" href="#vpu-and-executionqueue" title="Permanent link">¶</a></h2> <p>The <a href="http://svn.apache.org/repos/asf/ode/trunk/jacob/src/main/java/org/apache/ode/jacob/vpu/JacobVPU.java">VPU</a> is where all the JaCOb processing is occuring. When a JacobObject is injected inside the VPU, it's actually registered as a <a href="http://svn.apache.org/repos/asf/ode/trunk/jacob/src/main/java/org/apache/ode/jacob/soup/Continuation.java">Continuation</a>, which is just wrapping the JacobObject with the method to call on the JacobObject to execute it (in our case always the run() method as we're only dealing with JacobRunnable instances).</p> <p>The <a href="http://svn.apache.org/repos/asf/ode/trunk/jacob/src/main/java/org/apache/ode/jacob/soup/ExecutionQueue.java">ExecutionQueue</a> (and its implementation <a href="http://svn.apache.org/repos/asf/ode/trunk/jacob/src/main/java/org/apache/ode/jacob/vpu/FastExecutionQueueImpl.java">FastExecutionQueueImpl</a>) is just a container for all the artifacts managed by the VPU (mostly channels and reactions) to organize them in queues where artifacts can be pushed and popped. It also records some execution statistics.</p> <p>So the VPU main processing is just dequeuing a reaction from the soup and executing it by calling its abstraction's run() method (remember that the reaction just wraps an abstraction). That's all (check <a href="http://svn.apache.org/repos/asf/ode/trunk/jacob/src/main/java/org/apache/ode/jacob/vpu/JacobVPU.java">JacobVPU</a>.execute(), you'll see that I'm not lying). However when the JacobRunnable (usually an activity) gets executed the following things can happen:</p> @@ -362,9 +373,9 @@ <p>This simple adds a new !ChildRunner that will monitor the next child completion. If you browse ODE's activities code you will even find things like instance(this) which directly enqueues a new instance of the same JaCOb abstraction.</p> <p><a name="Jacob-Walkingthroughexamples"></a></p> -<h2 id="walking-through-examples">Walking through examples</h2> +<h2 id="walking-through-examples">Walking through examples<a class="headerlink" href="#walking-through-examples" title="Permanent link">¶</a></h2> <p><a name="Jacob-While"></a></p> -<h3 id="while">While</h3> +<h3 id="while">While<a class="headerlink" href="#while" title="Permanent link">¶</a></h3> <div class="codehilite"><pre><span class="nt"><process</span> <span class="na">name=</span><span class="s">"while1"</span> <span class="na">targetNamespace=</span><span class="s">"http://ode/bpel/unit-test"</span> <span class="na">xmlns:bpws=</span><span class="s">"http://schemas.xmlsoap.org/ws/2003/03/business-process/"</span> @@ -566,26 +577,26 @@ <p>Termination and compensation aren't doing anything really interesting. Completion, just like for the sequence, re-instantiates the <a href="http://svn.apache.org/repos/asf/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/WHILE.java">WHILE</a> abstraction. And that's how we get our loop, by re-instantiating the main WHILE abstraction (again evaluating the condition and creating a child if it's true).</p> -<p>Finally, when the while condition becomes false, it notifies its parent channel. The sequence then goes to our last activity: reply. As expected, the reply replies, just sending the variable content and notifying its parent for completion. The sequence has no more children to execute so it also notifies its own parent, which is the process. We then just declare the process to be completed and that's it! We're done!</p> - </div> - </div> - - - <!-- Footer --> - <footer class="footer"> - <div class='row'> - <div class='span3'> - <img src="/img/asf.png" alt="Apache Software Foundation"/> - </div> - <div class='span9'> - <p><strong>Apache ODE</strong><sup>™</sup> is a top-level project at the <a href="http://www.apache.org">Apache Software Foundation<sup>™</sup></a> - Through a collaborative and meritocratic development process, Apache - projects deliver enterprise-grade, freely available software products that - attract large communities of users.</p> - <p>Apache ODE, ODE, Apache, the Apache feather logo, and the Apache ODE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p> - </div> - </div> - </footer> - </div> <!-- /container --> - </body> +<p>Finally, when the while condition becomes false, it notifies its parent channel. The sequence then goes to our last activity: reply. As expected, the reply replies, just sending the variable content and notifying its parent for completion. The sequence has no more children to execute so it also notifies its own parent, which is the process. We then just declare the process to be completed and that's it! We're done!</p> + </div> + </div> + + + <!-- Footer --> + <footer class="footer"> + <div class='row'> + <div class='span3'> + <img src="/img/asf_logo_url.png" alt="Apache Software Foundation"/> + </div> + <div class='span9'> + <p><strong>Apache ODE</strong><sup>™</sup> is a top-level project at the <a href="http://www.apache.org">Apache Software Foundation<sup>™</sup></a> + Through a collaborative and meritocratic development process, Apache + projects deliver enterprise-grade, freely available software products that + attract large communities of users.</p> + <p>Apache ODE, ODE, Apache, the Apache feather logo, and the Apache ODE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p> + </div> + </div> + </footer> + </div> <!-- /container --> + </body> </html> \ No newline at end of file Modified: websites/staging/ode/trunk/content/developerguide/release-guidelines.html ============================================================================== --- websites/staging/ode/trunk/content/developerguide/release-guidelines.html (original) +++ websites/staging/ode/trunk/content/developerguide/release-guidelines.html Fri Jul 14 10:08:12 2017 @@ -1,104 +1,115 @@ -<!DOCTYPE html> -<html> - <head> - <title>Apache ODE – Release Guidelines</title> - <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> - <meta property="og:image" content="http://ode.apache.org/img/ode-logo.png" /> - - <link href="/css/application.min.css" rel="stylesheet" media="screen"> - - - - - - <script src="http://code.jquery.com/jquery-latest.js"></script> - <script src="/js/bootstrap.min.js"></script> - <script type="text/javascript"> - var _gaq = _gaq || []; - _gaq.push(['_setAccount', 'UA-36293077-1']); - _gaq.push(['_trackPageview']); - - (function() { - var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); - })(); - </script> - </head> - <body> - - <!-- Navbar --> - <div class="navbar navbar-fixed-top"> - <div class="navbar-inner"> - <div class="container"> - <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> - <span class="icon-bar"></span> - <span class="icon-bar"></span> - <span class="icon-bar"></span> - </button> - <a class="brand" href="/index.html">Apache ODE</a> - <div class="nav-collapse collapse"> - <ul class="nav"> - <li class=""> - <a href="/getting-ode.html">Getting ODE</a> - </li> - <li class="active dropdown"> - <a href="/userguide/" class="dropdown-toggle" data-toggle="dropdown" data-target="#">Documentation<b class="caret"></b></a> - <ul class="dropdown-menu"> - <li><a href="/userguide/">User Guide</a></li> - <li><a href="/developerguide/">Developer Guide</a></li> - <li><a href="/ws-bpel-20-specification-compliance.html">WS-BPEL Compliance</a></li> - <li><a href="/extensions/">WS-BPEL Extensions</a></li> - <li><a href="/faq.html">FAQ</a></li> - <li><a href="/roadmap.html">Roadmap</a></li> - <li><a href="/resource-services.html">Resources & Services</a></li> - <li><a href="/javadoc/">Javadoc</a></li> - </ul> - </li> - <li class=" dropdown"> - <a href="#" class="dropdown-toggle" data-toggle="dropdown">Contributing<b class="caret"></b></a> - <ul class="dropdown-menu"> - <li><a href="/mailing-lists.html">Mailing Lists</a></li> - <li><a href="/developerguide/building-ode.html">Building ODE</a></li> - <li><a href="/developerguide/source-code.html">Source Code</a></li> - <li><a href="http://issues.apache.org/jira/browse/ODE">Bug Tracking</a></li> - <li><a href="/contributors.html">Contributors</a></li> - <li><a href="http://www.apache.org/licenses/LICENSE-2.0">License</a></li> - </ul> - </li> - <li class="dropdown"> - <a href="http://www.apache.org" class="dropdown-toggle" data-toggle="dropdown" data-target="#">The ASF<b class="caret"></b></a> - <ul class="dropdown-menu"> - <li><a href="http://www.apache.org">Apache Software Foundation</a></li> - <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> - <li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li> - <li><a href="http://www.apache.org/security/">Security</a></li> - </ul> - </li> - </ul> - </div> - </div> - </div> - </div> - - <!-- Subhead --> - - <header class="jumbotron subhead" id="overview"> - <div class="container"> - - <h1>Release Guidelines</h1> - - </div> - </header> - - - <!-- Content --> - <div class="container"> - - <div class="row"> - <div class="span12"> - <p><a name="ReleaseGuidelines-CheckList"></a></p> -<h2 id="check-list">Check List</h2> +<!DOCTYPE html> +<html> + <head> + <title>Apache ODE – Release Guidelines</title> + <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> + <meta property="og:image" content="http://ode.apache.org/img/ode-logo.png" /> + + <link href="/css/application.min.css" rel="stylesheet" media="screen"> + + + + + + <script src="http://code.jquery.com/jquery-latest.js"></script> + <script src="/js/bootstrap.min.js"></script> + <script type="text/javascript"> + var _gaq = _gaq || []; + _gaq.push(['_setAccount', 'UA-36293077-1']); + _gaq.push(['_trackPageview']); + + (function() { + var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); + })(); + </script> + </head> + <body> + + <!-- Navbar --> + <div class="navbar navbar-fixed-top"> + <div class="navbar-inner"> + <div class="container"> + <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="brand" href="/index.html">Apache ODE</a> + <div class="nav-collapse collapse"> + <ul class="nav"> + <li class=""> + <a href="/getting-ode.html">Getting ODE</a> + </li> + <li class="active dropdown"> + <a href="/userguide/" class="dropdown-toggle" data-toggle="dropdown" data-target="#">Documentation<b class="caret"></b></a> + <ul class="dropdown-menu"> + <li><a href="/userguide/">User Guide</a></li> + <li><a href="/developerguide/">Developer Guide</a></li> + <li><a href="/ws-bpel-20-specification-compliance.html">WS-BPEL Compliance</a></li> + <li><a href="/extensions/">WS-BPEL Extensions</a></li> + <li><a href="/faq.html">FAQ</a></li> + <li><a href="/roadmap.html">Roadmap</a></li> + <li><a href="/resource-services.html">Resources & Services</a></li> + <li><a href="/javadoc/">Javadoc</a></li> + </ul> + </li> + <li class=" dropdown"> + <a href="#" class="dropdown-toggle" data-toggle="dropdown">Contributing<b class="caret"></b></a> + <ul class="dropdown-menu"> + <li><a href="/mailing-lists.html">Mailing Lists</a></li> + <li><a href="/developerguide/building-ode.html">Building ODE</a></li> + <li><a href="/developerguide/source-code.html">Source Code</a></li> + <li><a href="http://issues.apache.org/jira/browse/ODE">Bug Tracking</a></li> + <li><a href="/contributors.html">Contributors</a></li> + <li><a href="http://www.apache.org/licenses/LICENSE-2.0">License</a></li> + </ul> + </li> + <li class="dropdown"> + <a href="http://www.apache.org" class="dropdown-toggle" data-toggle="dropdown" data-target="#">The ASF<b class="caret"></b></a> + <ul class="dropdown-menu"> + <li><a href="http://www.apache.org">Apache Software Foundation</a></li> + <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> + <li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li> + <li><a href="http://www.apache.org/security/">Security</a></li> + </ul> + </li> + </ul> + </div> + </div> + </div> + </div> + + <!-- Subhead --> + + <header class="jumbotron subhead" id="overview"> + <div class="container"> + + <h1>Release Guidelines</h1> + + </div> + </header> + + + <!-- Content --> + <div class="container"> + + <div class="row"> + <div class="span12"> + <style type="text/css"> +/* The following code is added by mdx_elementid.py + It was originally lifted from http://subversion.apache.org/style/site.css */ +/* + * Hide class="elementid-permalink", except when an enclosing heading + * has the :hover property. + */ +.headerlink, .elementid-permalink { + visibility: hidden; +} +h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style> +<p><a name="ReleaseGuidelines-CheckList"></a></p> +<h2 id="check-list">Check List<a class="headerlink" href="#check-list" title="Permanent link">¶</a></h2> <p>These guidelines are extracted from the <a href="http://incubator.apache.org/guides/releasemanagement.html#rules">incubator release guidelines</a> and other projects (like <a href="http://wiki.apache.org/avalon/AvalonReleaseManagerHowto">Avalon</a>) guidelines and are meant to be used as a reference for coming releases. It's not really a todo list for the next release (that will be handled in JIRA) but a general list of things to have right and the places they're best described.</p> <ul> <li>Analyze the list of bugs left for this specific release. Assess whether they're critical for the release or can be postponed to a subsequent release.</li> @@ -116,14 +127,14 @@ <li>The Java version should be clearly indicated either in README or RELEASE_NOTES (in addition to the MANIFEST).</li> </ul> <p><a name="ReleaseGuidelines-Verifyingtherelease"></a></p> -<h2 id="verifying-the-release">Verifying the release</h2> +<h2 id="verifying-the-release">Verifying the release<a class="headerlink" href="#verifying-the-release" title="Permanent link">¶</a></h2> <p>A complete <a href="http://incubator.apache.org/guides/releasemanagement.html#check-list">check list</a>.</p> <p><a name="ReleaseGuidelines-ReleaseProcess"></a></p> -<h2 id="release-process">Release Process</h2> +<h2 id="release-process">Release Process<a class="headerlink" href="#release-process" title="Permanent link">¶</a></h2> <p>Before the release is finalized, successive releases can be made release candidates. It is traditional that release managers use their Apache home space to make available release candidates. Release <a href="http://www.apache.org/dev/release-signing.html">signatures</a> should be included.</p> <p>Once the release has been cut, a vote should be done by the PPMC to validate the release. Once approved by the PPMC another vote must be done by the Incubator PMC for release final approval. This should be done on the incubator general mailing list and include a link to the release artifacts, a link to the PPMC release vote thread and a link to the tag from which the release has been cut. 3 binding +1s are required by members of the Incubator PMC.</p> <p><a name="ReleaseGuidelines-AnnouncingTheRelease"></a></p> -<h2 id="announcing-the-release">Announcing The Release</h2> +<h2 id="announcing-the-release">Announcing The Release<a class="headerlink" href="#announcing-the-release" title="Permanent link">¶</a></h2> <ol> <li>Perform a release in JIRA and create a new release version in JIRA</li> <li>Update the download page for the release on the Website</li> @@ -132,26 +143,26 @@ <li>Have a beer!</li> </ol> <p>Announcements should be signed by the release manager with the key used to sign the release. Note that this may mean creating a plain text signature on the machine used to sign the release and then transferring this.</p> -<p>Announcements should be posted from the release manager's apache.org address.</p> - </div> - </div> - - - <!-- Footer --> - <footer class="footer"> - <div class='row'> - <div class='span3'> - <img src="/img/asf.png" alt="Apache Software Foundation"/> - </div> - <div class='span9'> - <p><strong>Apache ODE</strong><sup>™</sup> is a top-level project at the <a href="http://www.apache.org">Apache Software Foundation<sup>™</sup></a> - Through a collaborative and meritocratic development process, Apache - projects deliver enterprise-grade, freely available software products that - attract large communities of users.</p> - <p>Apache ODE, ODE, Apache, the Apache feather logo, and the Apache ODE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p> - </div> - </div> - </footer> - </div> <!-- /container --> - </body> +<p>Announcements should be posted from the release manager's apache.org address.</p> + </div> + </div> + + + <!-- Footer --> + <footer class="footer"> + <div class='row'> + <div class='span3'> + <img src="/img/asf_logo_url.png" alt="Apache Software Foundation"/> + </div> + <div class='span9'> + <p><strong>Apache ODE</strong><sup>™</sup> is a top-level project at the <a href="http://www.apache.org">Apache Software Foundation<sup>™</sup></a> + Through a collaborative and meritocratic development process, Apache + projects deliver enterprise-grade, freely available software products that + attract large communities of users.</p> + <p>Apache ODE, ODE, Apache, the Apache feather logo, and the Apache ODE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p> + </div> + </div> + </footer> + </div> <!-- /container --> + </body> </html> \ No newline at end of file Modified: websites/staging/ode/trunk/content/developerguide/source-code.html ============================================================================== --- websites/staging/ode/trunk/content/developerguide/source-code.html (original) +++ websites/staging/ode/trunk/content/developerguide/source-code.html Fri Jul 14 10:08:12 2017 @@ -1,109 +1,120 @@ -<!DOCTYPE html> -<html> - <head> - <title>Apache ODE – Source Code</title> - <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> - <meta property="og:image" content="http://ode.apache.org/img/ode-logo.png" /> - - <link href="/css/application.min.css" rel="stylesheet" media="screen"> - - - - - - <script src="http://code.jquery.com/jquery-latest.js"></script> - <script src="/js/bootstrap.min.js"></script> - <script type="text/javascript"> - var _gaq = _gaq || []; - _gaq.push(['_setAccount', 'UA-36293077-1']); - _gaq.push(['_trackPageview']); - - (function() { - var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); - })(); - </script> - </head> - <body> - - <!-- Navbar --> - <div class="navbar navbar-fixed-top"> - <div class="navbar-inner"> - <div class="container"> - <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> - <span class="icon-bar"></span> - <span class="icon-bar"></span> - <span class="icon-bar"></span> - </button> - <a class="brand" href="/index.html">Apache ODE</a> - <div class="nav-collapse collapse"> - <ul class="nav"> - <li class=""> - <a href="/getting-ode.html">Getting ODE</a> - </li> - <li class=" dropdown"> - <a href="/userguide/" class="dropdown-toggle" data-toggle="dropdown" data-target="#">Documentation<b class="caret"></b></a> - <ul class="dropdown-menu"> - <li><a href="/userguide/">User Guide</a></li> - <li><a href="/developerguide/">Developer Guide</a></li> - <li><a href="/ws-bpel-20-specification-compliance.html">WS-BPEL Compliance</a></li> - <li><a href="/extensions/">WS-BPEL Extensions</a></li> - <li><a href="/faq.html">FAQ</a></li> - <li><a href="/roadmap.html">Roadmap</a></li> - <li><a href="/resource-services.html">Resources & Services</a></li> - <li><a href="/javadoc/">Javadoc</a></li> - </ul> - </li> - <li class="active dropdown"> - <a href="#" class="dropdown-toggle" data-toggle="dropdown">Contributing<b class="caret"></b></a> - <ul class="dropdown-menu"> - <li><a href="/mailing-lists.html">Mailing Lists</a></li> - <li><a href="/developerguide/building-ode.html">Building ODE</a></li> - <li><a href="/developerguide/source-code.html">Source Code</a></li> - <li><a href="http://issues.apache.org/jira/browse/ODE">Bug Tracking</a></li> - <li><a href="/contributors.html">Contributors</a></li> - <li><a href="http://www.apache.org/licenses/LICENSE-2.0">License</a></li> - </ul> - </li> - <li class="dropdown"> - <a href="http://www.apache.org" class="dropdown-toggle" data-toggle="dropdown" data-target="#">The ASF<b class="caret"></b></a> - <ul class="dropdown-menu"> - <li><a href="http://www.apache.org">Apache Software Foundation</a></li> - <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> - <li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li> - <li><a href="http://www.apache.org/security/">Security</a></li> - </ul> - </li> - </ul> - </div> - </div> - </div> - </div> - - <!-- Subhead --> - - <header class="jumbotron subhead" id="overview"> - <div class="container"> - - <h1>Source Code</h1> - - </div> - </header> - - - <!-- Content --> - <div class="container"> - - <div class="row"> - <div class="span12"> - <p><a name="SourceCode-Overview"></a></p> -<h1 id="overview">Overview</h1> +<!DOCTYPE html> +<html> + <head> + <title>Apache ODE – Source Code</title> + <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> + <meta property="og:image" content="http://ode.apache.org/img/ode-logo.png" /> + + <link href="/css/application.min.css" rel="stylesheet" media="screen"> + + + + + + <script src="http://code.jquery.com/jquery-latest.js"></script> + <script src="/js/bootstrap.min.js"></script> + <script type="text/javascript"> + var _gaq = _gaq || []; + _gaq.push(['_setAccount', 'UA-36293077-1']); + _gaq.push(['_trackPageview']); + + (function() { + var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); + })(); + </script> + </head> + <body> + + <!-- Navbar --> + <div class="navbar navbar-fixed-top"> + <div class="navbar-inner"> + <div class="container"> + <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="brand" href="/index.html">Apache ODE</a> + <div class="nav-collapse collapse"> + <ul class="nav"> + <li class=""> + <a href="/getting-ode.html">Getting ODE</a> + </li> + <li class=" dropdown"> + <a href="/userguide/" class="dropdown-toggle" data-toggle="dropdown" data-target="#">Documentation<b class="caret"></b></a> + <ul class="dropdown-menu"> + <li><a href="/userguide/">User Guide</a></li> + <li><a href="/developerguide/">Developer Guide</a></li> + <li><a href="/ws-bpel-20-specification-compliance.html">WS-BPEL Compliance</a></li> + <li><a href="/extensions/">WS-BPEL Extensions</a></li> + <li><a href="/faq.html">FAQ</a></li> + <li><a href="/roadmap.html">Roadmap</a></li> + <li><a href="/resource-services.html">Resources & Services</a></li> + <li><a href="/javadoc/">Javadoc</a></li> + </ul> + </li> + <li class="active dropdown"> + <a href="#" class="dropdown-toggle" data-toggle="dropdown">Contributing<b class="caret"></b></a> + <ul class="dropdown-menu"> + <li><a href="/mailing-lists.html">Mailing Lists</a></li> + <li><a href="/developerguide/building-ode.html">Building ODE</a></li> + <li><a href="/developerguide/source-code.html">Source Code</a></li> + <li><a href="http://issues.apache.org/jira/browse/ODE">Bug Tracking</a></li> + <li><a href="/contributors.html">Contributors</a></li> + <li><a href="http://www.apache.org/licenses/LICENSE-2.0">License</a></li> + </ul> + </li> + <li class="dropdown"> + <a href="http://www.apache.org" class="dropdown-toggle" data-toggle="dropdown" data-target="#">The ASF<b class="caret"></b></a> + <ul class="dropdown-menu"> + <li><a href="http://www.apache.org">Apache Software Foundation</a></li> + <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> + <li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li> + <li><a href="http://www.apache.org/security/">Security</a></li> + </ul> + </li> + </ul> + </div> + </div> + </div> + </div> + + <!-- Subhead --> + + <header class="jumbotron subhead" id="overview"> + <div class="container"> + + <h1>Source Code</h1> + + </div> + </header> + + + <!-- Content --> + <div class="container"> + + <div class="row"> + <div class="span12"> + <style type="text/css"> +/* The following code is added by mdx_elementid.py + It was originally lifted from http://subversion.apache.org/style/site.css */ +/* + * Hide class="elementid-permalink", except when an enclosing heading + * has the :hover property. + */ +.headerlink, .elementid-permalink { + visibility: hidden; +} +h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style> +<p><a name="SourceCode-Overview"></a></p> +<h1 id="overview">Overview<a class="headerlink" href="#overview" title="Permanent link">¶</a></h1> <p>ODE uses <a href="http://git-scm.com/">Git</a> to manage its source code. Instructions on Git use can be found <a href="http://git-scm.com/documentation">here</a>.</p> <p><a name="SourceCode-Mainrepository"></a></p> -<h2 id="main-repository">Main repository</h2> +<h2 id="main-repository">Main repository<a class="headerlink" href="#main-repository" title="Permanent link">¶</a></h2> <p><a name="SourceCode-WebAccess"></a></p> -<h3 id="web-access-via-github">Web Access (via Github)</h3> +<h3 id="web-access-via-github">Web Access (via Github)<a class="headerlink" href="#web-access-via-github" title="Permanent link">¶</a></h3> <dl> <dt>1.3.x branch (Stable)</dt> <dd><a href="https://github.com/apache/ode/tree/ode-1.3.6.x">https://github.com/apache/ode/tree/ode-1.3.6.x</a></dd> @@ -111,7 +122,7 @@ <dd><a href="https://github.com/apache/ode/">https://github.com/apache/ode/</a></dd> </dl> <p><a name="SourceCode-Anonymousaccess"></a></p> -<h3 id="anonymous-access">Anonymous access</h3> +<h3 id="anonymous-access">Anonymous access<a class="headerlink" href="#anonymous-access" title="Permanent link">¶</a></h3> <p>ODE source can be checked out anonymously with this command:</p> <div class="codehilite"><pre>$> git clone git://git.apache.org/ode.git </pre></div> @@ -124,7 +135,7 @@ <p>Once you've got the code you'll probably want to build it; for instructions see <a href="/developerguide/building-ode.html">Building ODE</a>.</p> <p><a name="SourceCode-SubmittingaPatch"></a></p> -<h3 id="submitting-a-patch">Submitting a Patch</h3> +<h3 id="submitting-a-patch">Submitting a Patch<a class="headerlink" href="#submitting-a-patch" title="Permanent link">¶</a></h3> <p>If you make changes to ODE, and would like to contribute the to the project, you should create a patch and post it to the <a href="http://issues.apache.org/jira/browse/ODE">ODE JIRA issue tracker</a>. To create a patch, simply execute one of the following commands:</p> <div class="codehilite"><pre>$> git format-patch master --stdout > your-changes.patch @@ -134,32 +145,32 @@ $> git diff > your-changes.patch <p><a name="SourceCode-DeveloperAccess"></a></p> -<h2 id="developer-access">Developer Access</h2> +<h2 id="developer-access">Developer Access<a class="headerlink" href="#developer-access" title="Permanent link">¶</a></h2> <p>Everyone can access the ODE Git repository via HTTP, but ODE Committers must checkout the repository via HTTPS.</p> <div class="codehilite"><pre>$> git clone https://git-wip-us.apache.org/repos/asf/ode.git </pre></div> -<p>For further instructions, please see <a href="https://git-wip-us.apache.org/">here</a></p> - </div> - </div> - - - <!-- Footer --> - <footer class="footer"> - <div class='row'> - <div class='span3'> - <img src="/img/asf.png" alt="Apache Software Foundation"/> - </div> - <div class='span9'> - <p><strong>Apache ODE</strong><sup>™</sup> is a top-level project at the <a href="http://www.apache.org">Apache Software Foundation<sup>™</sup></a> - Through a collaborative and meritocratic development process, Apache - projects deliver enterprise-grade, freely available software products that - attract large communities of users.</p> - <p>Apache ODE, ODE, Apache, the Apache feather logo, and the Apache ODE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p> - </div> - </div> - </footer> - </div> <!-- /container --> - </body> +<p>For further instructions, please see <a href="https://git-wip-us.apache.org/">here</a></p> + </div> + </div> + + + <!-- Footer --> + <footer class="footer"> + <div class='row'> + <div class='span3'> + <img src="/img/asf_logo_url.png" alt="Apache Software Foundation"/> + </div> + <div class='span9'> + <p><strong>Apache ODE</strong><sup>™</sup> is a top-level project at the <a href="http://www.apache.org">Apache Software Foundation<sup>™</sup></a> + Through a collaborative and meritocratic development process, Apache + projects deliver enterprise-grade, freely available software products that + attract large communities of users.</p> + <p>Apache ODE, ODE, Apache, the Apache feather logo, and the Apache ODE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p> + </div> + </div> + </footer> + </div> <!-- /container --> + </body> </html> \ No newline at end of file Modified: websites/staging/ode/trunk/content/developerguide/stateful-exchange-protocol.html ============================================================================== --- websites/staging/ode/trunk/content/developerguide/stateful-exchange-protocol.html (original) +++ websites/staging/ode/trunk/content/developerguide/stateful-exchange-protocol.html Fri Jul 14 10:08:12 2017 @@ -1,107 +1,118 @@ -<!DOCTYPE html> -<html> - <head> - <title>Apache ODE – Stateful Exchange Protocol</title> - <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> - <meta property="og:image" content="http://ode.apache.org/img/ode-logo.png" /> - - <link href="/css/application.min.css" rel="stylesheet" media="screen"> - - - - - - <script src="http://code.jquery.com/jquery-latest.js"></script> - <script src="/js/bootstrap.min.js"></script> - <script type="text/javascript"> - var _gaq = _gaq || []; - _gaq.push(['_setAccount', 'UA-36293077-1']); - _gaq.push(['_trackPageview']); - - (function() { - var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); - })(); - </script> - </head> - <body> - - <!-- Navbar --> - <div class="navbar navbar-fixed-top"> - <div class="navbar-inner"> - <div class="container"> - <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> - <span class="icon-bar"></span> - <span class="icon-bar"></span> - <span class="icon-bar"></span> - </button> - <a class="brand" href="/index.html">Apache ODE</a> - <div class="nav-collapse collapse"> - <ul class="nav"> - <li class=""> - <a href="/getting-ode.html">Getting ODE</a> - </li> - <li class="active dropdown"> - <a href="/userguide/" class="dropdown-toggle" data-toggle="dropdown" data-target="#">Documentation<b class="caret"></b></a> - <ul class="dropdown-menu"> - <li><a href="/userguide/">User Guide</a></li> - <li><a href="/developerguide/">Developer Guide</a></li> - <li><a href="/ws-bpel-20-specification-compliance.html">WS-BPEL Compliance</a></li> - <li><a href="/extensions/">WS-BPEL Extensions</a></li> - <li><a href="/faq.html">FAQ</a></li> - <li><a href="/roadmap.html">Roadmap</a></li> - <li><a href="/resource-services.html">Resources & Services</a></li> - <li><a href="/javadoc/">Javadoc</a></li> - </ul> - </li> - <li class=" dropdown"> - <a href="#" class="dropdown-toggle" data-toggle="dropdown">Contributing<b class="caret"></b></a> - <ul class="dropdown-menu"> - <li><a href="/mailing-lists.html">Mailing Lists</a></li> - <li><a href="/developerguide/building-ode.html">Building ODE</a></li> - <li><a href="/developerguide/source-code.html">Source Code</a></li> - <li><a href="http://issues.apache.org/jira/browse/ODE">Bug Tracking</a></li> - <li><a href="/contributors.html">Contributors</a></li> - <li><a href="http://www.apache.org/licenses/LICENSE-2.0">License</a></li> - </ul> - </li> - <li class="dropdown"> - <a href="http://www.apache.org" class="dropdown-toggle" data-toggle="dropdown" data-target="#">The ASF<b class="caret"></b></a> - <ul class="dropdown-menu"> - <li><a href="http://www.apache.org">Apache Software Foundation</a></li> - <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> - <li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li> - <li><a href="http://www.apache.org/security/">Security</a></li> - </ul> - </li> - </ul> - </div> - </div> - </div> - </div> - - <!-- Subhead --> - - <header class="jumbotron subhead" id="overview"> - <div class="container"> - - <h1>Stateful Exchange Protocol</h1> - - </div> - </header> - - - <!-- Content --> - <div class="container"> - - <div class="row"> - <div class="span12"> - <p><a name="StatefulExchangeProtocol-1.General"></a></p> -<h2 id="1-general">1. General</h2> +<!DOCTYPE html> +<html> + <head> + <title>Apache ODE – Stateful Exchange Protocol</title> + <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> + <meta property="og:image" content="http://ode.apache.org/img/ode-logo.png" /> + + <link href="/css/application.min.css" rel="stylesheet" media="screen"> + + + + + + <script src="http://code.jquery.com/jquery-latest.js"></script> + <script src="/js/bootstrap.min.js"></script> + <script type="text/javascript"> + var _gaq = _gaq || []; + _gaq.push(['_setAccount', 'UA-36293077-1']); + _gaq.push(['_trackPageview']); + + (function() { + var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); + })(); + </script> + </head> + <body> + + <!-- Navbar --> + <div class="navbar navbar-fixed-top"> + <div class="navbar-inner"> + <div class="container"> + <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="brand" href="/index.html">Apache ODE</a> + <div class="nav-collapse collapse"> + <ul class="nav"> + <li class=""> + <a href="/getting-ode.html">Getting ODE</a> + </li> + <li class="active dropdown"> + <a href="/userguide/" class="dropdown-toggle" data-toggle="dropdown" data-target="#">Documentation<b class="caret"></b></a> + <ul class="dropdown-menu"> + <li><a href="/userguide/">User Guide</a></li> + <li><a href="/developerguide/">Developer Guide</a></li> + <li><a href="/ws-bpel-20-specification-compliance.html">WS-BPEL Compliance</a></li> + <li><a href="/extensions/">WS-BPEL Extensions</a></li> + <li><a href="/faq.html">FAQ</a></li> + <li><a href="/roadmap.html">Roadmap</a></li> + <li><a href="/resource-services.html">Resources & Services</a></li> + <li><a href="/javadoc/">Javadoc</a></li> + </ul> + </li> + <li class=" dropdown"> + <a href="#" class="dropdown-toggle" data-toggle="dropdown">Contributing<b class="caret"></b></a> + <ul class="dropdown-menu"> + <li><a href="/mailing-lists.html">Mailing Lists</a></li> + <li><a href="/developerguide/building-ode.html">Building ODE</a></li> + <li><a href="/developerguide/source-code.html">Source Code</a></li> + <li><a href="http://issues.apache.org/jira/browse/ODE">Bug Tracking</a></li> + <li><a href="/contributors.html">Contributors</a></li> + <li><a href="http://www.apache.org/licenses/LICENSE-2.0">License</a></li> + </ul> + </li> + <li class="dropdown"> + <a href="http://www.apache.org" class="dropdown-toggle" data-toggle="dropdown" data-target="#">The ASF<b class="caret"></b></a> + <ul class="dropdown-menu"> + <li><a href="http://www.apache.org">Apache Software Foundation</a></li> + <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> + <li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li> + <li><a href="http://www.apache.org/security/">Security</a></li> + </ul> + </li> + </ul> + </div> + </div> + </div> + </div> + + <!-- Subhead --> + + <header class="jumbotron subhead" id="overview"> + <div class="container"> + + <h1>Stateful Exchange Protocol</h1> + + </div> + </header> + + + <!-- Content --> + <div class="container"> + + <div class="row"> + <div class="span12"> + <style type="text/css"> +/* The following code is added by mdx_elementid.py + It was originally lifted from http://subversion.apache.org/style/site.css */ +/* + * Hide class="elementid-permalink", except when an enclosing heading + * has the :hover property. + */ +.headerlink, .elementid-permalink { + visibility: hidden; +} +h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style> +<p><a name="StatefulExchangeProtocol-1.General"></a></p> +<h2 id="1-general">1. General<a class="headerlink" href="#1-general" title="Permanent link">¶</a></h2> <p>[TBD: Insert overview of the world before and after automagic correlation]</p> <p><a name="StatefulExchangeProtocol-2.StateIdentifiers"></a></p> -<h2 id="2-state-identifiers">2. State Identifiers</h2> +<h2 id="2-state-identifiers">2. State Identifiers<a class="headerlink" href="#2-state-identifiers" title="Permanent link">¶</a></h2> <p>A common use case consists of a client that needs to invoke multiple operations against the same service. Each operation depends on the state resulting from the completion of the previous operation. The service needs to associate these invocations with states it maintains internally. That's the basis for the State Exchange protocol.</p> <p>In the initial invocation, the client sends a request to the service. The service returns a response that includes a <em>state identifier</em>. The state identifier is opaque to the client, however, the client knows to use that state identifier in subsequent invocations that depend on the state of the pervious invocation.</p> <p>In a subsequent invocation, the client sends a request to the service and includes the state identifier. The service is able to associate this request with thwe state reached by the previous request.</p> @@ -113,7 +124,7 @@ <p>Although the state identifier is opaque to the client, the client can compare state identifiers for equivalence. Two state identifiers are equivalent if they contain the same set of characters.</p> <p>Services are encouraged to create unique identifiers for each internal state using globally unique identifiers. In doing so, they prevent accidental association of two unrelated states.</p> <p><a name="StatefulExchangeProtocol-3.StatefulEPRs"></a></p> -<h2 id="3-stateful-eprs">3. Stateful EPRs</h2> +<h2 id="3-stateful-eprs">3. Stateful EPRs<a class="headerlink" href="#3-stateful-eprs" title="Permanent link">¶</a></h2> <p>Some interactions involve more than one client or more than one service. These interactions require the clients and services to communicate stateful EPRs.</p> <p>A <em>stateful EPR</em> is an EPR that contains all the information necessary to invoke a service in association with a particular state. A stateful EPR is essentially an EPR that incorporates a state identifier. For example, when using WS-Addressing, the stateful EPR will include the state identifier as a reference property.</p> <p>The client obtains the stateful EPR in one of three ways: @@ -124,7 +135,7 @@ <p>All addressing mechanisms support stateful EPRs. However, not all addressing mechanisms allow the client to compose stateful EPRs. For example, when using the HTTP protocol bindings, only the service can construct stateful EPRs.</p> <p>The service may also send a stateful EPR in a header or the body of the message. The service may send its own stateful EPR, or the stateful EPR of a different service (see <em>Shared States</em>). The state callback header is a special case of that (see <em>State Callback</em>).</p> <p><a name="StatefulExchangeProtocol-4.SharedStates"></a></p> -<h2 id="4-shared-states">4. Shared States</h2> +<h2 id="4-shared-states">4. Shared States<a class="headerlink" href="#4-shared-states" title="Permanent link">¶</a></h2> <p>There are cases where two or more services share a common state. This non-normative part of the specification provides guidelines for implementing such scenarios.</p> <p>For example, a process may implement two services that both affect the same process instance (internal state). The client invokes operations on the first service against the same process instance by using one state identifier. The client then needs to invoke operations on the second service against the same process instanace.</p> <p>The two services use different EPRs, and the client may not be able to deduct one stateful EPR from the other. In fact, it is highly recommended that the two stateful EPRs use different state identifiers. Instead, the first service obtains the stateful EPR of the second service and sends it to the client.</p> @@ -132,7 +143,7 @@ <p>For example, a BPEL process may receive a request on one partnerLink, assign the myRole EPR of another partnerLink to a message and reply with that message. After extracting the EPR from the message, the client is able to invoke the same process instance using the second partnerLink.</p> <p>To support this pattern we recommend that a BPEL implementation construct a stateful EPR for a partnerLink myRole on or before first use. First use occurs when that partnerLink myRole is assigned to a variable, or communicated in the header of a message by a process instance. Once set, the stateful EPR remains the same until discarded by the process instance.</p> <p><a name="StatefulExchangeProtocol-5.StateCallback"></a></p> -<h2 id="5-state-callback">5. State Callback</h2> +<h2 id="5-state-callback">5. State Callback<a class="headerlink" href="#5-state-callback" title="Permanent link">¶</a></h2> <p>There are may ways in which services can be combined using stateful message exchanges. A common pattern consists of a two-way exchange between two services acting as peers invoke each other. This pattern is common enough that the State Exchange protocol introduces a specific header to cater for it.</p> <p>The State Exchange protocol supports this pattern using <em>state callback headers</em>. State callback headers are sent in addition to state identifiers to provide a callback address. They are used to associate two states with each other.</p> <p>In the initial invocation, the first service constructs a stateful EPR and sends it as a state callback header. The second service returns a response with a state identifier. In a subsequent invocation, the first service uses that state identifier to invoke the second service.</p> @@ -140,12 +151,12 @@ <p>Both services maintain their own internal states and use separate state identifiers. The state association results from invocations that, regardless of direction, refer to both internal states.</p> <p>In order to support addressing schemes that do not allow the client to compose a stateful EPR, a service may return a callback state header in lieu of, or in addition to the state identifier. The client may then choose whether to use the state identifier or stateful EPR for subsequent invocations of that service.</p> <p><a name="StatefulExchangeProtocol-6.Fail-fastMechanism"></a></p> -<h2 id="6-fail-fast-mechanism">6. Fail-fast Mechanism</h2> +<h2 id="6-fail-fast-mechanism">6. Fail-fast Mechanism<a class="headerlink" href="#6-fail-fast-mechanism" title="Permanent link">¶</a></h2> <p>TBD: Cleanup</p> <p>An important characteristic of the State Exchange protocol is that clients and servers must be aware whether the interaction is in fact stateful. Reaching that decision is not always possible, but for the benefit of protocols that allow it, we introduce a fail-fast mechanism.</p> <p>When the client sends a message to the service that does not require the state identifier or state callback header, it may use the <em>state use</em> header instead. This header informs the service that the client supports state exchange. The client may also force the service to process the header (e.g. using the SOAP <em>mustUnderstand</em> attribute) to guarantee that the service supports state exchange.</p> <p><a name="StatefulExchangeProtocol-7.SOAPBindings"></a></p> -<h2 id="7-soap-bindings">7. SOAP Bindings</h2> +<h2 id="7-soap-bindings">7. SOAP Bindings<a class="headerlink" href="#7-soap-bindings" title="Permanent link">¶</a></h2> <p>When using SOAP, the state identifier is sent in the header <code>state:identifier</code> and the callback EPR is sent in the header <code>state:callback</code>. If the message does not contain either header, it may use the <code>state:use</code> header to indicate support for the State Exchange protocol.</p> <p>The <code>state:identifier</code> header is an element of type xsd:string that contains an opaque identifier.</p> <p>The <code>state:callback</code> header is an element of type <code>wsa:EndpointReference</code> that contains a WS-Addressing EPR. It must contain the reference property state:identifier.</p> @@ -161,26 +172,26 @@ <tr><td><code>state:missingHeader</code></td><td>The service expects a state exchange and the client did not provide any state header.</td></tr> <tr><td><code>state:invalidCallback</code></td><td>The <code>state:callback</code> header cannot be used as an endpoint reference.</td></tr> </tbody> -</table></p> - </div> - </div> - - - <!-- Footer --> - <footer class="footer"> - <div class='row'> - <div class='span3'> - <img src="/img/asf.png" alt="Apache Software Foundation"/> - </div> - <div class='span9'> - <p><strong>Apache ODE</strong><sup>™</sup> is a top-level project at the <a href="http://www.apache.org">Apache Software Foundation<sup>™</sup></a> - Through a collaborative and meritocratic development process, Apache - projects deliver enterprise-grade, freely available software products that - attract large communities of users.</p> - <p>Apache ODE, ODE, Apache, the Apache feather logo, and the Apache ODE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p> - </div> - </div> - </footer> - </div> <!-- /container --> - </body> +</table></p> + </div> + </div> + + + <!-- Footer --> + <footer class="footer"> + <div class='row'> + <div class='span3'> + <img src="/img/asf_logo_url.png" alt="Apache Software Foundation"/> + </div> + <div class='span9'> + <p><strong>Apache ODE</strong><sup>™</sup> is a top-level project at the <a href="http://www.apache.org">Apache Software Foundation<sup>™</sup></a> + Through a collaborative and meritocratic development process, Apache + projects deliver enterprise-grade, freely available software products that + attract large communities of users.</p> + <p>Apache ODE, ODE, Apache, the Apache feather logo, and the Apache ODE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p> + </div> + </div> + </footer> + </div> <!-- /container --> + </body> </html> \ No newline at end of file
