<?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'

	#*****************************************************************************
	#
	# /components/index.php of Java Workflow Tooling (JWT)
	#
	# Author: 		Florian Lautenbacher
	# created:		2007-10-12
	#
	# Description: The Component overview 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)

	# 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>Components</h3>
				<ul>
					<li>
						<a href="/jwt/components/we/index.php">Workflow Editor</a>:
 						The Workflow Editor (WE) is a visual tool for creating, managing and 
						reviewing process definitions 
					</li>
					<li>
						<a href="/jwt/components/desktop/index.php">Desktop Tools</a>:
						The Desktop Tools enable the simulation of processes without the need of a process engine
					</li>
					<li>
						<a href="/jwt/components/transformations/index.php">Transformations</a>:
						Building on a transformation base plugin it is possible to transform the JWT-model into <a href="http://www.eclipse.org/stp/bpmn/">BPMN</a> (and vice versa)
						and to generate <a href="http://www.wfmc.org/standards/xpdl.htm">XPDL</a>-code. It is also possible to export the JWT model to 
						other representations such as <a href="http://www.eclipse.org/stp/im/index.php">STP-IM</a>.
					</li>
					<li>
						<a href="/jwt/components/wam/index.php">Workflow Administration and Monitoring (WAM)</a>
						is used for deploying and testing workflows in a workflow engine i.e. handle an engine's 
						process definition repository by loading / unloading / updating / instantiating / monitoring process definitions and
						performing mappings among participant definitions and real users and among application definitions and tool agents
					</li>
					<li>
						<a href="/jwt/components/runtime/index.php">Runtime Tools</a> provide the user with all kinds of tools to
						adapt a workflow at runtime.
					</li>
				</ul>
		</div>
		<hr class="clearer">	
</div>

	<div id="rightcolumn">
  	</div>

EOHTML;


	# Generate the web page
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>