<?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>
		The easiest is to get it from the <a href="#updateSite">update site</a>. You can also install an <a href="#integrator">integrator's distribution</a>.
		</p>

		<p>
		<b>IMPORTANT</b> If you want to execute your processes, you need a compatible runtime. See their <a href="">list</a> - or <a href="">write your own</a> export transformation.
		</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 -->

		<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.5 (Galileo). If your don't have it, get it <a href="http://www.eclipse.org/downloads">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 "Install New Software". Then select JWT in the <b>General Purpose Tools</b> category to automatically download JWT and its dependencies.</li>
				<li><b>3.</b> Finally restart Eclipse.</li>
			</ul>
		</div>
		
		<!-- div class="homeitem">
			<a name="updateSite"></a>
			<h3>OLDER RELEASES - 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 Downloads</h3>
			<ul>
				<li><a href="http://wiki.eclipse.org/JWT_Downloads#Other_products_based_on_JWT">All Integrators</a></li> 
				<li><a href="http://wiki.eclipse.org/JWT_Downloads#All_Update_Sites">All Update Sites</a></li> 
				<li><a href="http://wiki.eclipse.org/JWT_Downloads#Releases">All Releases</a></li> 
				<li><a href="http://wiki.eclipse.org/JWT_Downloads">All Downloads</a></li> 
			</ul>
		</div -->
			
	</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">
 			<h6>JWT 0.6.0 "Galileo" (Current)</h6>
			Released on 2009-06-24 ( <a href="http://www.eclipse.org/downloads">get it in Galileo</a> , <a href="http://wiki.eclipse.org/Image:JWT_Release_Review_0_6.pdf"> slides</a> )
			<p/>
			<i><a href="http://wiki.eclipse.org/JWT_NewNoteworthy_0_6">New</a> : templates, UML and EPC views, BPMN import, SOA, runtime</i>
 		</div>

 		<div class="sideitem">
 			<h6>JWT 0.7.0 "Galileo" (Upcoming)</h6>
			Upcoming on 2009-09-24 ( Test it in the <a href="http://download.eclipse.org/technology/jwt/integration-update-site/">nightly builds update site</a> )
			<p/>
			<i>In the works : view layouts, jPDL export, BPMN2...</i>
 		</div>

 		<!-- div class="sideitem">
 			<h6>JWT 0.5.0 (Older)</h6>
                        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>)
			<p/>
			<i>New : filtered outline, BPMN and XPDL export...</i>
 		</div -->

 		<div class="sideitem">
 			<h6>More Downloads</h6>
			<ul>
				<li><a href="http://wiki.eclipse.org/JWT_Downloads#Other_products_based_on_JWT">All Integrators</a></li> 
				<li><a href="http://wiki.eclipse.org/JWT_Downloads#All_Update_Sites">All Update sites</a></li> 
				<li><a href="http://wiki.eclipse.org/JWT_Downloads#Releases">All Releases</a></li> 
				<li><a href="http://wiki.eclipse.org/JWT_Downloads">All Downloads</a></li> 
			</ul>
 		</div>

 		<!-- div class="sideitem">
 			<h6>All Update Sites</h6>
			<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 -->

 		<!-- div class="sideitem">
 			<h6>All Releases</h6>
			<ul>
				<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 -->
 		 		
	</div>

EOHTML;

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