<?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'

	#*****************************************************************************
	#
	# /newsarchive.php of Java Workflow Tooling (JWT)
	#
	# Author: 		Christian Saad
	# created:		2008-11-13
	#
	# Description: The older news 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		= "Christian Saad";
	
	# 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)

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

	<div id="midcolumn">
		<h1>Java Workflow Tooling (JWT)</h1>
		
		<div class="homeitem3col">
			<h3>News archive</h3>
					<p>
					<li><strong>March, 17th 2010:</strong>
					Project leads Marc Dutoo and Christian Saad will be co-presenters at the EclipseCon 2010 <a href="https://www.eclipsecon.org/submissions/2010/view_talk.php?id=1207">Painless (?) Metamodel Evolution</a>.
					</li>
					<li><strong>March, 17th 2010:</strong>
					The move review to include JWT in Eclipse SOA was successful.   
					</li>
					<li><strong>December, 21st 2009:</strong>
					JWT 0.7 has now been released. It is available from the update site and will also be integrated into SR2 of <a href="http://www.eclipse.org/galileo/">Eclipse Galileo</a>. <a href="download.php">Download it now !</a>
					</li>		
					<li><strong>October, 20th 2009:</strong>
					JWT Configuration profiles will be featured at the <a href="http://www.eclipsecon.org/summiteurope2009/">Eclipse Summit Europe 2009</a> in the <a href="http://www.eclipsecon.org/summiteurope2009/sessions?id=935">Aspect-Oriented Modeling</a> talk (<a href="http://following-flo.blogspot.com/2009/10/aspect-oriented-modeling.html">more</a>) on October 28th in Ludwigsburg. Meet us there !
					</li>
					<li><strong>June, 24th 2009:</strong>
						JWT 0.6 has been released. It is available in <a href="http://www.eclipse.org/galileo/">Eclipse 3.5 (Galileo)</a>, the new yearly Eclipse distribution, out this very day. <a href="download.php">Download it now !</a>
					</li>					
					<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>June, 2nd 2009:</strong> on June, the 24th, 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> ! ( <a href="http://wiki.eclipse.org/JWT_NewNoteworthy_0_6">New features</a> )</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>
					<li><strong>January, 22nd 2009:</strong> JWT will be presented at <a href="http://www.eclipsecon.org/2009/sessions?id=292">EclipseCon</a> as well as at <a href="http://it-republik.de/konferenzen/efe/sessions/?tid=1077">Eclipse Forum Europe</a>.
					</li>
					<li><strong>January, 21st 2009:</strong> JWT will be part of the upcoming Eclipse release Galileo. <a href="http://wiki.eclipse.org/Galileo">Learn more</a> about Galileo. 
					</li>
					<li><strong>November, 27th 2008:</strong> JWT welcomes it's new mentor John Graham. John agreed to assist us in the Eclipse process, automating building tasks, etc. 
					</li>
					<li><strong>October, 29th 2008:</strong> JWT 0.5.0 has been released. It can be downloaded <a href="http://wiki.eclipse.org/JWT_Downloads#Java_Workflow_Tooling_0.5.0">here</a>.
					</li>
					<li><strong>October, 22th 2008:</strong> The release review for JWT 0.5.0 is scheduled for October, 29th.
					</li>
					<li><strong>September, 25th 2008:</strong> We are currently preparing the next release (0.5.0) which will include several improvements on the Workflow Editor as well as the first transformations. 
					Probably available in a few days.				
					</li>				
					<li><strong>March, 4th 2008:</strong> The first version (0.4.0) of the Workflow Editor is finally available as an Eclipse plugin. 
					Check it out at the <a href="components/we/index.php">Workflow Editor</a>-page.				
					</li>
					<li>On <strong>October, 11th 2007</strong> one of the project leads held a presentation about the JWT project at the
					Eclipse Summit Europe 2007. Find the presented slides <a href="/jwt/press/ese07/EclipseSummitEurope2007_JWT_presentation.ppt">here</a>.
				    </li>
				</p>
				<br/>
		</div>	
		<hr class="clearer">	
	</div>
	<div id="rightcolumn">
	</div>

EOHTML;


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