<?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);
include($_SERVER['DOCUMENT_ROOT'] . "/$projectShortName/items/installation_menu.php");

# End: page-specific settings
#

# Paste your HTML content between the EOHTML markers!
$html = <<<EOHTML

<STYLE type="text/css">
div.warning {
	text-align: center;
	color: #a00;
	padding: 10px;
	margin: 10px;
	background-color: #fdd;
	border: 1px solid #a00;	
}
</STYLE>

<div id="maincontent">
	<div id="midcolumn">
		<h1>$pageTitle</h1>
		<h2>Installation</h2>


		<p>
		So, you wanna try it out ...
		</p>
		
		<div class="warning">
			The update-site build (M5) requires version 3.6 of Eclipse.
			You will want to grab the <a href="http://download.eclipse.org/">Eclipse IDE for Java EE Developers</a> 
for your platform
		</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=$update_site
				target="download">BPEL Editor Update Site</a>
			.
			In order to use the Update Site, you will have to have
			<b>Eclipse 3.6.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.6.x</a>
						(Helios)
					</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>https://git.eclipse.org/c/bpel/org.eclipse.bpel.git/</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>
	$rightcolumn_links
</div>

	

EOHTML;


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