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

#*****************************************************************************
#
# template.php
#
# Author: 		Denis Roy
# Date:			2005-06-16
#
# Description: Type your page comments here - these are not sent to the browser
#
#
#****************************************************************************

#
# Begin: page-specific settings.  Change these.
$pageTitle 		= "BPEL Designer Project";
$pageKeywords	= "BPEL, process, designer, install";
$pageAuthor		= "BPEL Team";

# 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)
# $Nav->addNavSeparator("My Page Links", 	"downloads.php");
# $Nav->addCustomNav("My Link", "mypage.php", "_self", 3);
# $Nav->addCustomNav("Google", "http://www.google.com/", "_blank", 3);

# End: page-specific settings
#

# Paste your HTML content between the EOHTML markers!
$html = <<<EOHTML
	
<div id="maincontent">
	<div id="midcolumn">
		<h1>$pageTitle</h1>
		<h2>Installation</h2>


		So, you wanna try it out ...

		<div class="warning">
			The update-site build (M4) requires version 3.4 of Eclipse [EMF 2.4.x, WST 3.0.x]
		</div>
		<p>
			<b>If</b>
			you don't want to install everything and compile but are a curious
			soul,
			then the simplest way is the
			<a class="www" href="http://download.eclipse.org/technology/bpel/update-site/"
				target="download">BPEL Editor Update Site</a>
			.
			In order to use the Update Site, you will have to have
			<b>Eclipse 3.4.x</b>
			running and make
			sure that you can install from within Eclipse. Then
			follow the
			directions
			on the update site.
			<p>


				The update site contains dependencies that the BPEL plugins need
				(WTP,
				EMF, GEF, JEM). These
				will get installed if you don't have
				them. 
 
 </p>
		</p>

		<div class="warning">
					The instructions below are for building the current
			<i>tip</i>
			of the BPEL editor.
		</div>

		<b>Otherwise</b>


		<ol>
			<li>
				Make sure your Target Platform includes the dependencies listed
				below.
				[
				<span style="font-weight: bold;">
					Window->Preferences->Plug-in Development->Target
					Platform </span>
				]

				If you have the dependencies described below you can skip to
				<a href="#step3">step 3</a>
			</li>
			<br/>
			<li>
				You need to download the following
				dependencies.
				<ul class="midlist">
					<li>
						<a class="www" target="download"
							href="http://download.eclipse.org/downloads/index.php">Eclipse 3.4.x</a>
						(Ganymede)
					</li>
					<li>
						<a class="www" target="download"
							href="http://www.eclipse.org/modeling/emf/downloads/?project=emf">EMF 2.4.x</a>
					</li>
					<li>
						<a class="www" target="download"
							href="http://download.eclipse.org/tools/gef/downloads/index.php">GEF 3.4.x</a>
					</li>
					<li>
						<a class="www" target="download" href="http://www.eclipse.org/datatools/">DTP STK 1.6.x</a>
					</li>
					<li>
						<a class="www" target="download"
							href="http://download.eclipse.org/webtools/downloads/">WTP (Web Tools Platform) 2.0.x</a>
					</li>
				</ul>

			<p>
				Generally speaking, the
				<b>.x</b>
				extension represents the last maintenance release so get
				the latest
				one possible.
			</p>

			<a name="step3"></a>
			</li>
			<br/>
			<li>

				Check out the following plug-ins from
				<b>:pserver:anonymous@dev.eclipse.org:/cvsroot/technology</b>

				<p>
					In folder
					<b>org.eclipse.bpel/plugins</b>
				</p>

				<ul class="midlist">
					<li>
						<b>org.eclipse.bpel.common.model</b>
					</li>
					<li>
						<b>org.eclipse.bpel.common.ui</b>
						- Common UI classes are here.
					</li>
					<li>
						<b>org.eclipse.bpel.model</b>
						- The BPEL model classes generated from the EMF model, resource
						sets, etc.
					</li>
					<li>
						<b>org.eclipse.bpel.wsil.model</b>
						- The WSIL model we use in the WSIL browser.
					</li>
					<li>
						<b>org.eclipse.bpel.ui</b>
						- The main editor code.
					</li>
					<li>
						<b>org.eclipse.bpel.runtimes</b>
						- This is what runtimes need to extend in order to plug in.
					</li>
					<li>
						<b>org.eclipse.bpel.apache.ode.runtime</b>
						- A Reference integration with the Apache ODE runtime.
					</li>
					<li>
						<b>org.eclipse.bpel.apache.ode.deploy.ui</b>
						- An Editor to create an Apache ODE deployment descriptor.
					</li>
					<li>
						<b>org.eclipse.bpel.apache.ode.deploy.model</b>
						- The EMF model for the deployment descriptor editor.
					</li>
					<li>
						<b>org.eclipse.bpel.validator</b>
						- A BPEL validator that will check the BPEL source for
						errors.
					</li>
					<li>
						<b>org.eclipse.bpel.examples.extensionPoints</b>
						- Some examples of extension points provided by other
						plugins
						in
						the BPEL editor.
					</li>
				</ul>
			</li>
				<div class="warning">
					Note that as of M4 and Ganymede release of Eclipse,
					the EMF models in
					the BPEL editor are generated against WTP 2.0
					EMF
					models (WSDL,
					XSD)
					and use Java 5 compliance to generate the
					code.
					This means for the
					most part that generics are used in
					generated
					source.
					All the source in the BPEL editor requires at
					least Java 1.5
				</div>

				<p>
				If you don't know really what the above means,
				<a href="http://dev.eclipse.org/mhonarc/lists/bpel-dev/msg00319.html">just be thankfull.</a>
				</p>
			<br/>
			<li>
				Launch a runtime workbench (a.k.a. Eclipse Application). The
				new
				workbench will have the
				just installed plugins with it and it
				just
				ought to run them.
			</li>
			<br/>
			<li>
				In the running workbench with the BPEL plugins create a new
				BPEL
				project and then create a BPEL process
				using the new BPEL file
				wizard. You should get a skeleton of a BPEL
				source file to work
				with.
				<br/>
				<br/>
				If you have other BPEL sources you can open them as well,
				however,
				they first need to be imported into
				an eclipse project
				which by
				default must live in an eclipse
				workspace. As long as the
				BPEL
				source
				file
				has 2.0 code, the editor ought to be able to open
				it.
			</li>
			<br/>
			<li>
				Double-click on the .bpel file to open the BPEL editor.
			</li>
		</ol>
		<p>
			<h4>What does it do ? </h4>
		</p>
		<ul class="midlist">
			<li>Wizard to create new BPEL files</li>
			<li>Opens, views, edits and saves a .bpel file</li>
			<li>Create new activities, modify their properties (in the
				Properties view)</li>
			<li>Supports all of BPEL 2.0 structures - some UI to modify
				those
				is
				not implemented yet</li>
			<li>File browsing dialogs, so you can browse for WSDL or XSD
				files
				</li>
			<li>Has a XPath editor for building expressions and queries
											</li>
			<li>Has some extension points you can try implementing</li>
			<li>Has BPEL validation</li>
			<li>It can talk to a runtime through an add on run-time
				plugin
										</li>
			<li>It can copy/cut/paste most things pretty well (to and
				from
				source
				as well)</li>
			<li>Import WSDL definitions from the WSIL browser</li>
			<li>Edit the BPEL "source" (XML editing) in the XML tab</li>
			<li>Initial support for abstract business processes</li>
		</ul>

		More details on that are available on the
		<a class="www" href="users.php">
			<i>Users</i>
			page
		</a>
		. Check the Milestones entries (M1, M2, M3, M4).

		<h4>What doesn't it do yet</h4>
		<ul class="midlist">
			<li>Full BPEL 2.0 UI support</li>
			<li>Debug</li>
		</ul>


		<h4>I found a bug </h4>
		<p>
			We now have Bugzilla components (in the Technology Project).
			Or
			you
			can enter a bug directly
			into one of our
			<a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Bpel">components</a>
			.
		</p>

		<p>
			Patches are most welcome.
</p>

		The
		<a class="www" href="/bpel/team.php">BPEL Team</a>
		.


		<hr class="clearer" />
	</div>
</div>
<div id="rightcolumn">
	<div class="sideitem">
		<h6>Incubation</h6>
		<p>
			<div align="center">
				<a href="/projects/what-is-incubation.php">
					<img align="center" src="/images/egg-incubation.png" border="0" />
				</a>
			</div>
			<div align="center">
				This project is in the
				<a href="/projects/dev_process/validation-phase.php">Incubation Phase</a>
			</div>
		</p>
	</div>
	<div class="sideitem">
		<h6>links</h6>
		<ul>
			<li>
				<a href="http://download.eclipse.org/technology/bpel/update-site/"
					target="download">BPEL Editor Update Site</a>
			</li>
		</ul>
	</div>
</div>

	

EOHTML;


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