<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>Apache ODE | Processes</title>
        <link rel="stylesheet" href="css/style.css" type="text/css" media="screen, projection"/>
        <link rel="stylesheet" href="js/yui/css/container.css" media="screen, projection"/>
        <link rel="stylesheet" href="js/yui/css/button.css" media="screen, projection"/>
        <link rel="stylesheet" href="js/bubbling/assets/accordion.css" media="screen, projection"/>
        <link rel="stylesheet" type="text/css" href="js/yui/tab/skins/sam/tabview.css">

        <script type="text/javascript" src="js/WSRequest.js">
        </script>
        <script type="text/javascript" src="js/ProcessManagementAPI.js">
        </script>


        <script type="text/javascript" src="js/yui/utilities.js">
        </script>
        <script type="text/javascript" src="js/yui/button.js"></script>
        <script type="text/javascript" src="js/yui/container.js"></script>
        <script type="text/javascript" src="js/bubbling/bubbling.js">
        </script>
        <script type="text/javascript" src="js/bubbling/accordion.js">
        </script>
        <script type="text/javascript" src="js/yui/tabview.js">
        </script>
        <script type="text/javascript" src="js/yui/animation.js">
        </script>
        <script type="text/javascript" src="js/ODE.js">
        </script>
        <script>
            function init(){
                org.apache.ode.ProcessHandling.populateContent();
                setInterval('org.apache.ode.ProcessHandling.populateContent()', 15000);
            }
            YAHOO.util.Event.onDOMReady(init);
        </script>
        <style type="text/css">
            button{
                background:transparent url(../button/assets/add.gif) no-repeat scroll 10% 50%;
                padding-left:2em;
            }
            .link{
                margin-left:5px;
                color:blue;
            }
            .myAccordion .yui-cms-accordion .yui-cms-item {
                margin-bottom:10px;
            }
            .bd{
                background:#FFFFFF none repeat scroll 0 0;
            }
        </style>
    </head>
    <body>
        <div id="header">
            <div id="login">
                <a href="http://apache.org">Apache</a>
                |<a href="http://ode.apache.org">ODE</a>
                |<a href="http://ode.apache.org/user-guide.html">User Guide</a>
                |<a href="http://ode.apache.org/developer-guide.html">Developer Guide</a>
            </div>
            <h1><img src="images/logo.png" alt="Apache ODE"/></h1>
        </div>
        <div id="siteNav">
            <ul>
                <li>
                    <a href="index.html">Home</a>
                </li>
                <li class="current">
                    <a href="#">Processes</a>
                </li>
                <li>
                    <a href="instances.html">Instances</a>
                </li>
                <li>
                    <a href="deployment.html">Deployment</a>
                </li>
                <li>
                    <a href="deployment/" target="_blank">Deployment Browser</a>
                </li>
            </ul>
        </div>
        <div id="wrapper">
            <div id="insideW">
                <div id="insideL">
                    <div id="content" class="yui-skin-sam">


                    </div>
                </div>
            </div>
        </div>

    </body>
</html>
