<?php  																														require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	$App 	= new App();	$Nav	= new Nav();	$Menu 	= new Menu();		include($App->getProjectCommon());    # All on the same line to unclutter the user's desktop'

	#*****************************************************************************
	#
	# index.php of Java Workflow Tooling (JWT)
	#
	# Author: 		Florian Lautenbacher
	# created:		2007-02-26
	# last changed: 2009-05-25
	#
	# Description: The start page of the Java Workflow Tooling project
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Eclipse Java Workflow Tooling (JWT)";
	$pageKeywords	= "JWT , Java Workflow Tooling Project, Workflow Editor, Workflow Administration and Monitoring, Eclipse";
	$pageAuthor		= "Florian Lautenbacher";
	
	# Add page-specific Nav bars here
	# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
	# Reiniting navbar content (suppresses generic Eclipse links Committers, Newsgroups, Bugs, Articles) :
	# $Nav->setLinkList( array() );

	# End: page-specific settings
	#
		
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

	<div id="midcolumn">
		<h1>Download Java Workflow Tooling (JWT)</h1>

		<p/>
		<p>
		<b>IMPORTANT</b> If you want to execute your processes, you need a compatible runtime ( <a href="">list</a> ).
		</p>

		<p>
		The easiest is to get it from the <a href="#updateSite">JWT update site</a>. You can also install an <a href="#integrator">integrator's distribution</a>.
		</p>

		<p>
		<b>UPCOMING</b> from June, the 24th of 2009 on, JWT will be available bundled in the yearly <a href="http://www.eclipse.org/galileo/">Eclipse 3.5 (Galileo)</a> release ( <a href="http://www.eclipse.org/downloads/?tab=developer">try it now</a> ).</li> 
		</p>
		<p>&nbsp;</p>

		<hr class="clearer" />
		
		<div class="homeitem">
			<a name="updateSite"></a>
			<h3>Get it from the update site</h3>
			<ul>
				<li><b>1.</b> Start Eclipse 3.4 ("Ganymede"). If your don't have it, get it <a href="http://www.eclipse.org/downloads/packages/">there</a>. It requires <a href="http://java.sun.com/javase/downloads/index.jsp">Java</a> (1.5 or later).</li> 
				<li><b>2.</b> In the "Help" menu, click on "Software Update...". In the dialog, click on "Add Site..." and enter the URL of the <a href="http://download.eclipse.org/technology/jwt/update-site/">JWT update site</a> .</li>
				<li><b>3.</b> Select JWT in the tree to automatically download JWT and its dependencies. Finally restart Eclipse.</li>
			</ul>
		</div>

		<hr class="clearer" />
		
		<div class="homeitem">
			<a name="integrator"></a>
			<h3>Install an integrator's distribution</h3>
			<ul>
				<li><b>-</b> <a href="http://sourceforge.net/projects/agilpro">AgilPro</a> is an Eclipse JWT-based business process modeling suite providing a <b>Modeler</b>, a <b>Simulator</b> desktop application, and Adapters for standard applications ( <b>Firefox, OpenOffice</b> ).</li>
				<li><b>-</b> <a href="http://scarbo.ow2.org">OW2 Scarbo</a> is an <b>SOA</b> BPM solution supporting <b>web services, RMI and SCA</b>, script, mail and semantics actions, and a server runtime based on <a href="http://www.ow2.org">OW2</a>'s <a href="http://bonita.ow2.org">Bonita</a> and <a href"http://frascati.ow2.org">FraSCAti</a> .</li> 
			</ul>
		</div>

		<hr class="clearer" />
		
		<div class="homeitem">
			<h3>More</h3>
			<ul>
				<li>All releases</li> 
				<li>All update sites</li> 
				<li>All integrators</li> 
			</ul>
		</div>

		<!-- p>&nbsp;</p>
		
		<div class="homeitem">
			<h3>All Update Sites</h3>
			<ul>
				<li><a href="http://download.eclipse.org/technology/jwt/update-site/">releases</a></li> 
				<li><a href="http://download.eclipse.org/technology/jwt/stable-update-site/">latest stable build</a></li> 
				<li><a href="http://download.eclipse.org/technology/jwt/integration-update-site/">Nightly builds</a> (for testing purposes only)</li> 
			</ul>
		</div>

		<hr class="clearer" />
		
		<div class="homeitem">
			<h3>All releases</h3>
			<ul>
				<h5>Current</h5>
				<li><b>JWT 0.5</b> released on 2008-02-29 ( <a href="http://download.eclipse.org/technology/jwt/update-site/">update site</a> , <a href="http://wiki.eclipse.org/Image:JWT_Release_Review_0_5_v4.pdf"> slides</a>)
					<ul><li>New : filtered outline, BPMN and XPDL export...</li></ul>
				</li>
				<h4>Upcoming</h4>
				<li><b>JWT 0.6 (Galileo)</b> upcoming on 2009-06-24 ( <a href="http://www.eclipse.org/downloads/?tab=developer">test it in Galileo</a> )
					<ul><li><a href="http://wiki.eclipse.org/JWT_NewNoteworthy_0_6">New</a> : templates, UML and EPC process views, BPMN import...</li></ul>
				</li>
				<h4>Older</h4>
				<li><b>JWT 0.4</b> released on 2008-02-29 (slides)
					<ul><li>New : Workflow Editor... </li></ul>
				</li>
			</ul>
		</div>
				
		<hr class="clearer" -->
			
	</div>
	
	<div id="rightcolumn">	
	
    	 <div class="sideitem">
   			<h6>Incubation</h6>
   			<div align="center">
   				<a href="/projects/what-is-incubation.php"><img align="center" src="http://www.eclipse.org/images/egg-incubation.png" border="0" alt="Incubation" /></a>
   			</div>
        	<div align="center">  
         		This project is in the 
         		<a href="/projects/dev_process/validation-phase.php">Incubation Phase</a>
       		</div>
 		</div>
 		
 		<div class="sideitem">
			<a href="/jwt/images/jwt_screenshot.gif"><img style="width: 239px; height: 170px;" src="/jwt/images/jwt_screenshot.gif" align="center" alt="screenshot" /></a>
 		</div>

 		<div class="sideitem">
 			<h6>New to JWT?</h6>
 			<ul>
 				<li><a href="/jwt/press/index.php">JWT in the press</a></li>
 				<li><a href="http://wiki.eclipse.org/JWT_Downloads">Downloads</a></li>
 				<li><a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=JWT">Report a Bug</a></li>
 			</ul>
 		</div>
 		
 		<div class="sideitem">
			<h6>What's new</h6>
			<ul>
				<li><strong>April, 23rd 2009:</strong> 			JWT was presented at Eclipse Forum Europe 2009 in Mainz, Germany. 
				Please find the <a href="/jwt/press/efe09/ExecuteYourProcesses_EFE09_final.pdf">presentation</a> and the shown screencasts (
				<a href="/jwt/press/efe09/01_FromBPMN2JWT.swf">1</a>,
				<a href="/jwt/press/efe09/02_ViewsExport.swf">2</a>,
				<a href="/jwt/press/efe09/03_Simulate.swf">3</a>,
				<a href="/jwt/press/efe09/04_DeployExecute.swf">4</a>).
				</li>		 
				<li><strong>March, 10th 2009:</strong> We now switched to the new Nova design of Eclipse as discussed in the last project telco.
				Such a telco happens every three weeks. If you are interested, have a look at our <a href="http://wiki.eclipse.org/JWT_Meetings">Wiki</a>.
			    <li><a href="/jwt/newsarchive.php">News archive</a>
			    </li>
			</ul>
		</div>
 		 		
	</div>

EOHTML;

	# Generate the web page
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
