<?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 M3 information";
	$pageKeywords	= "M3,BPEL,info";
	$pageAuthor		= "Michal Chmielewski";
	
	# 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("Milestones", 	"");
	$Nav->addCustomNav("M1", "/$projectShortName/users/m1.php", "_blank", 1);
	$Nav->addCustomNav("M2", "/$projectShortName/users/m2.php", "_blank", 1);
	$Nav->addCustomNav("M3", "/$projectShortName/users/m3.php", "_blank", 1);
	$Nav->addCustomNav("M4", "/$projectShortName/users/m4.php", "_blank", 1);
		
	# End: page-specific settings
	#
		
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

<div id="maincontent">
	<div id="midcolumn" style="counter-reset: featureId;" >
		<h1>$pageTitle</h1>
		<h2>What's in M3 ?</h2>
		
		<p>
		The biggest new item in M3 is the BPEL 2.0 <a href="../developers/validator/">validator</a>. 
		Now your BPEL files will get checked for errors. 
		In addition, we have moved very closely to BPEL 2.0 compliance in several ways outlined below. 
		Read more to see what is in M3.
		
		</p>
	
        <!-- feature -->
		<p>
		<span class="feature"></span>
		M3 has been built and further milestones will continue to exist on top of WTP2.0
		This eliminates an issue for developers to use the BPEL EMF model in their downstream
		plug ins and various nasty issues around model code regeneration.
		</p>
		
		<div class="screenshot">
		   <img id="wizard" src="img/m3.gif" />
		</div>

        <!-- feature -->
		<p>
		<span class="feature"></span>
		There had been several improvements to the editor. 
		You can now hide the palette or place it in the palette view
		just like any other standard GEF editor does. A <b>duplicate</b> command
		had been added to the edit action so that you can quickly select and duplicate 
		entire sections of diagrams for fast diagram creation. Selection and multi-selection
		speed has been improved. Some undo /redo problems were fixed too.
		
		<ul style="margin-left: 20px;">
		  <li> Palette <a href="javascript:void(setImage('palette','img/palette-docked.png'))">docked</a> </li>		      
		  <li> Palette <a href="javascript:void(setImage('palette','img/palette-hidden.png'))">hidden</a> </li> 		    
		  <li> Palette <a href="javascript:void(setImage('palette','img/palette-view.png'))">in a view</a> </li>     
		  <li> Duplicate <a href="javascript:void(setImage('palette','img/command-duplicate.png'))">command</a> </li>
		</ul>
		
		<div class="screenshot">
		   <img id="palette" src="img/palette-docked.png" />
		</div>
		</p>


	
		<p>
		<span class="feature"></span>
         You can now <a href="../developers/validator/">validate</a> a BPEL project. There are currently 2 hooks into validation.
         There is a builder which is attached to the BPEL project and there is a WST extension
         point implementation for BPEL validation. 		
		</p>
		
		<ul style="margin-left: 20px;">
		  <li> Validation <a href="javascript:void(setImage('validate','img/validate-view-1.png'))">in the editor</a> </li>  		     
		  <li> The <a href="javascript:void(setImage('validate','img/validate-problems-view.png'))">problems view</a> </li>
		  <li> Validation <a href="javascript:void(setImage('validate','img/validate-settings.png'))">settings</a> </li>
         <li> Validation in the <a href="javascript:void(setImage('validate','img/validate-menu.png'))"> menu </a> </li>  
		</ul>
		
		<div class="screenshot">
		   <img id="validate" src="img/validate-view-1.png" />
		</div>
	

        <p>
		<span class="feature"></span>
		The <b>if</b> BPEL 2.0 activity has been added and the corresponding switch activity removed.
		 <div class="screenshot">
		   <img id="foreach" src="img/if-activity.png"/>
		</div>
		</p>

		<p>
		<span class="feature"></span>
		The <b>compensateScope</b> BPEL 2.0 activity has been added.
		 <div class="screenshot">
		   <img id="compensateScope" src="img/compensateScope.gif"/>
		</div>
		</p>
		
		<p>
		<span class="feature"></span>
		A integrated WSIL browser has been added to help you discover web services
		available for integration using BPEL. You should be able to plugin in your
		own WSIL documents for viewing as well.
		
		<ul style="margin-left: 20px;">
		  <li> WSIL <a href="javascript:void(setImage('wsilb','img/wsil-preferences.png'))">preferences</a> in
		   Eclipse Preferences </li>
		  <li> WSIL <a href="javascript:void(setImage('wsilb','img/wsil-browser.png'))">browser</a> in
		  import dialog. </li>
		</ul>		
		<div class="screenshot">
		   <img id="wsilb" src="img/wsil-preferences.png" />
		</div>		
		</p>
		
		<p>
		<span class="feature"></span>
        You can copy/cut/paste from one BPEL editor instance to another. 
        You can copy entire sections of BPEL code. Multiple selections also work. 
        You can also copy variables, partner links, etc and paste them in the right
        location.
        
        <p>
        Everything that you <i>copy</i> also appears in source form in the system clipboard.
        The reverse is also true. You can paste BPEL source code from the clipboard to the 
        visual editor "where it makes sense". Now if you see any BPEL code anywhere, you can
        clip it, and paste into the editor "where it makes sense".
        <p>
        Try pasting this little nuggest "some place".
        <pre class="code">
 &lt;sequence name="main"
    xmlns:ns="http://eclipse.org/bpel/sample" xmlns:ns0="http://www.xmethods.net/sd/CATrafficService.wsdl"&gt;
    &lt;receive name="receiveInput" operation="initiate"
        partnerLink="client" portType="ns:Traffic2" variable="input"/&gt;
    &lt;assign name="Assign" validate="no"&gt;
        &lt;copy&gt;
            &lt;from part="payload" variable="input"&gt;
                &lt;query&gt;&lt;![CDATA[/tns:input]]&gt;&lt;/query&gt;
            &lt;/from&gt;
            &lt;to part="hwynums" variable="trafficRequest"/&gt;
        &lt;/copy&gt;
    &lt;/assign&gt;
    &lt;invoke inputVariable="trafficRequest" name="Invoke"
        operation="getTraffic" outputVariable="trafficResponse"
        partnerLink="traffic" portType="ns0:CATrafficPortType"/&gt;
    &lt;assign name="Assign1" validate="no"&gt;
        &lt;copy&gt;
            &lt;from part="return" variable="trafficResponse"/&gt;
            &lt;to part="return" variable="trafficResponse"/&gt;
        &lt;/copy&gt;
    &lt;/assign&gt;
    &lt;invoke inputVariable="output" name="callbackClient"
        operation="onResult" partnerLink="client" portType="ns:Traffic2Callback"/&gt;
&lt;/sequence&gt;

        </pre>
		 <div class="screenshot">
		   <img id="ns" src="img/wsil-browse.gif"/>
		</div>
		</p>
		       	
		       	
		<p>
		<span class="feature"></span>
        Namespaces,namespaces, namespaces. To migrate closer to 2.0 compliance we have
        moved to 2.0 proposed namespaces for BPEL, PartnerLinks, VariableProperties.
        Also, the templates are using the new namespaces as well.
		 <div class="screenshot">
		   <img id="ns" src="img/namespaces-2.0.png"/>
		</div>
		</p>
		
		<p>
		<span class="feature"></span>
        UI Support for documentation elements had been added. 
		 <div class="screenshot">
		   <img id="ns" src="img/documentation.png"/>
		</div>
		</p>
		
		<p>
		<span class="feature"></span>
        UI Support for variable initialization had been added. Variable initialization is 2.0
        BPEL feature and takes on the form of a virtual copy rule.
		 <div class="screenshot">
		   <img id="ns" src="img/variable-initialization.png"/>
		</div>
		</p>


		<p>
		<span class="feature"></span>
		We have spent some time cleaning out bugs and are hoping to get the count closer to 0
		in the future. 
		<ul style="margin-left: 20px;">
		 <li> Bugs <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&classification=Technology&product=BPEL&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&samp;tatus_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">fixed so far</a>. </li>
		 <li> Bugs <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=specific&order=relevance+desc&bug_status=__open__&product=BPEL">still needing fixing.</a> </li>
		</ul>
				
		</p>
		
		
		<p>
		<span class="feature"></span>
		While not an official part of the release, the folks from the Univ. of London
		had implemented	their own Active BPEL runtime for the editor. More on this here:
		 
		 <a href="http://sse.cs.ucl.ac.uk/omii-bpel/docs/userguide.html">http://sse.cs.ucl.ac.uk/omii-bpel/docs/userguide.html</a>
					
		</p>
		
	</div>
</div>


EOHTML;


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