<?xml version="1.0" encoding="iso-8859-1"?>

<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<page>
    <content>
        <p>
            Through the magic of <em>continuations</em>, the Cocoon Flow subsystem
            makes it easy to track the user's state when interacting with a web-based
            application.
        </p>
        <p>
            A <em>continuation</em> saves the state of execution of the currently
            running Flowscript, and allows this state to be "resurrected" later on,
            typically when the user submits an HTML form that was sent with the
            <em>cocoon.sendPageAndWait</em> instruction.
        </p>
        <p>
            This makes the typical web applications interactions much easier to
            manage, as the developer can write "linear" code for page flows, instead
            of having to keep track of the user's state manually. Our examples will
            show how little code is used to manage typical interactions.
        </p>
        <p>
            Having to use JavaScript to write the Flow scripts might seem strange
            at first, but in practice only a few lines of Flow code will be required
            for a typical application, so this doesn't matter much. The reason is that
            JavaScript (through a modified version of the mozilla Rhino interpreter)
            is currently the only continuations-enabled language that can be
            distributed with Cocoon.
        </p>

    </content>
</page>
