<?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 JWT 0.7 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/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="updateSite"></a>
			<h3>Get JWT 0.6 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>
		
		<hr class="clearer" />
		
		<div class="homeitem">
			<a name="integrator"></a>
			<h3>Install an integrator's distribution</h3>
			<ul>
				<li><b><a href="http://sourceforge.net/projects/agilpro">AgilPro</a></b> 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><a href="http://scarbo.ow2.org">OW2 Scarbo</a></b> 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.7.0 (Current)</h6>
			Released on 2009-12-21 ( Get it from the <a href="http://download.eclipse.org/technology/jwt/update-site/">update site</a>, <a href="http://wiki.eclipse.org/Image:JWT_Release_Review_0_7.pdf">slides</a> )
			<p/>
			<i>New: view layouts, new converter, improved transformations...</i>
 		</div>

 		<div class="sideitem">
 			<h6>JWT 1.0.0 (Upcoming)</h6>
			Upcoming on 2010-06-20 ( 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 : jPDL export, BPMN2 view, desktop application...</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);
?>
