<?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/we/index.php of Java Workflow Tooling (JWT)
	#
	# Author: 		Florian Lautenbacher
	# created:		2007-10-12
	#
	# Description: The Workflow editor 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> Workflow Editor (WE)</h3>
				<p>
				The <b>WE (Workflow Editor)</b> is a visual tool for creating, managing and 
				reviewing process definitions. Straightforward and simple, WE let users 
				quickly create workflow process definitions, check and store them for further 
				use. Once a process definition is proved valid, it can be imported/referenced 
				into new ones, thus shortening the time and effort needed to define the 
				workflow process. WE provides several views: for business managers to change 
				the control flow of a process, for technical experts to invoke services, or 
				others.
				</p>
				<div align="center"><a href="/jwt/images/WEGraphicalEditor.gif"><img width=678 height=428 src="/jwt/images/WEGraphicalEditor.gif"></a></div>
				<br/>
				<p>
				The image above shows a sample workflow. This sample workflow consists of several steps
				to describe how a business trip could be organized.
				</p>

				<div align="center"><a href="http://wiki.eclipse.org/images/4/4e/JWT_BPMN_view.PNG"><img width=678 height=317 src="http://wiki.eclipse.org/images/4/4e/JWT_BPMN_view.PNG"></a></div>
				<br/>
				<p>
				The image above shows a sample workflow using the BPMN view, instead of the default view. Other available views include UML Activity Diagram and EPC (Event Process Chains).
				</p>

				<br/>
				<div align="center"><a href="/jwt/images/WEOverviewPage.gif"><img width=678 height=455 src="/jwt/images/WEOverviewPage.gif"></a></div>
				<br/>
				<p>
				In order to structure the roles of a company, organization units, applications or data
				an overview page (see above) and several wizards can be applied.
				</p>
				<br/>
		</div>	
		<div class="homeitem3col">
			<h3> Download the Workflow Editor</h3>
				<p> 
				All downloads related to the workflow editor can be found on the <a href="/jwt/download.php">download page</a>.
				</p>
		</div>	
		<hr class="clearer">	
	</div>
	<div id="rightcolumn">
 	</div>

EOHTML;


	# Generate the web page
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
