<html>
<head>

<title>Winery</title>
</head>

<style>
dt {
display: list-item;
list-style-position:outside;
list-style-image:url(/eclipse.org-common/themes/Phoenix/images/arrow.gif);
margin-left:16px;
}
dd {
margin-left:25px;
margin-bottom:5px;
}
</style>

<body>
<p>
The Winery project is a proposed open source project under the <a
	href="http://www.eclipse.org/projects/project_summary.php?projectid=soa">SOA
Top Level Project</a>.
</p>

<p>
This proposal is in the Project Proposal Phase (as defined in the
Eclipse Development Process) and is written to declare its intent and
scope. We solicit additional participation and input from the Eclipse
community. Please send all feedback to the 
<a href="http://www.eclipse.org/forums/eclipse.proposals">Eclipse Proposals</a>
Forum.
</p>

<h2>Background</h2>
<p>
<a href="https://www.oasis-open.org/committees/tosca/">TOSCA</a> is an industry standard for defining composite applications and their management, which allows moving cloud services and their components between providers and thus avoids vendor lock-in.
All management knowledge required for a specific cloud service is captured in a service template, which contains a cloud service&rsquo;s topology and its operational aspects rendered in management plans.
The topology is a graph with nodes and relationships, which have types assigned.
In turn, types introduce inheritance, properties, requirements/capability definitions, and a link to implementations of them.
An implementation includes a definition of interfaces along with operations enabling management of the respective type.
Management plans use these operations to cover deployment, management, and undeployment.
<a href="http://www.omg.org/spec/BPMN/2.0/">BPMN</a> and <a href="http://docs.oasis-open.org/wsbpel/2.0/wsbpel-v2.0.html">BPEL</a> are explicitly mentioned as possible language in the TOSCA specification, but management plans can be modeled in an arbitrary language.
Regarding enactment of the management plans, TOSCA does not require a specialized workflow engine, but relies on standard workflow environments.
</p>

<h2>Why the name &ldquo;Winery&rdquo;?</h2>
<p>
The &ldquo;Winery&rdquo; produces wine in bottles (i.e., CSARs, the TOSCA packaging format), which are finally served in glasses (the instances of a Cloud service).
</p>

<h2>Scope</h2>
<p>
Winery is a Web-based environment to graphically model TOSCA topologies and plans managing these topologies.
The environment includes a type and template management component to offer creation and modification of all elements defined in the TOSCA specification.
All information is stored in a repository, which allows importing and exporting using the TOSCA packaging format.
</p>
<p>
Winery allows uploading arbitrary workflows to be included in the service template, because TOSCA does not require a concrete plan language.
Additionally, Winery offers a BPMN modeler as BPMN 2.0 can be regarded as the de-facto standard for graphical business process modeling.
The plan modeling component is tightly integrated with the topology modeler to ease modeling by, for instance, offering a direct reference to management operations of a node template in the topology.
This tight integration is enabled by using <a href="http://dx.doi.org/ 10.1007/978-3-642-33155-8_4">BPMN4TOSCA</a>, which adds TOSCA-specific tasks and data objects to BPMN.
</p>
<p>
The intention is to cover TOSCA v1.0 and all upcoming versions completely in a vendor neutral way.
</p>

<h2>Out of Scope</h2>
<p>
Winery offers a BPMN modeler, which supports modeling executable processes for managing application topologies.
This puts a full support of the complete BPMN language out of scope.
</p>
<p>
Workflow engines typically execute BPEL, therefore BPMN4TOSCA has to be converted to BPEL.
A conversion of BPMN processes to BPEL processes is not in the scope of this project.
This part may be done under the hood of the <a href="http://www.eclipse.org/projects/project_summary.php?projectid=soa.mangrove">Mangrove</a> or <a href="http://www.eclipse.org/projects/project_summary.php?projectid=soa.bpel">BPEL</a> project.
</p>

<h2>Description</h2>
<img src="overview.png" height="203px" />

<p>
Winery consists of four parts: (1) Type and template management, (2) topology modeler, (3) BPMN4TOSCA plan modeler, and (4) the repository.
</p>
<p>
The <em>type and template management</em> enables managing all TOSCA types and templates can be managed. This includes node types, relationship types, policy types, artifact types, and artifact templates.
</p>
<p>
The <em>topology modeler</em> enables to create service templates. Service templates consist of instances of node types (node templates) and instances of relationship types (relationship templates). They can be annotated with requirements and capabilities, properties, and policies.
</p>
<p>
The <em>BPMN4TOSCA plan modeler</em> offers web-based creation of BPMN models with the TOSCA extension BPMN4TOSCA. That means the modeler supports the BPMN elements and structures required by TOSCA plans and not the full set of BPMN. From technology perspective, the BPMN Modeler uses the same techniques as the topology modeler. 
</p>
<p>
The <em>repository</em> stores TOSCA models and allows managing their content. For instance, node types, policy types, and artifact templates are managed by the repository. The repository is also responsible for importing and exporting CSARs, the exchange format of TOSCA files and related artifacts.
</p>


<h2>Relationship with other Eclipse Projects</h2>
<p>
<a href="http://www.eclipse.org/projects/project_summary.php?projectid=eclipse.orion">Orion</a> offers software development in the browser. It is split into a client and a server. The server part is language agnostic and offers user management and <a href="http://wiki.eclipse.org/Orion/Server_API">APIs</a> to create workspaces and to work with files. Winery�s backend currently does not offer any user management. The file storage part of the backend could be replaced by the Orion server, which would bring user management and text-based editing of stored data with the Orion client.
</p>
<p>
The Eclipse project <a href="http://www.eclipse.org/projects/project_summary.php?projectid=soa.stardust">Stardust</a> provides a comprehensive Business Process Management Suite, which includes a Web-based BPMN modeling component and a workflow execution engine.
Integration with Winery is not viable, because the Web-based modeling component is tightly coupled with their runtime engine.
In the context of Winery, we develop a web-based modeling framework, which is instantiated as TOSCA topology modeler and a BPMN4TOSCA modeler.
Winery does not depend on any BPMN runtime engine.
Plans of arbitrary tools (including Stardust, the <a href="http://www.eclipse.org/projects/project_summary.php?projectid=soa.bpel">BPEL Designer</a>, the <a href="http://www.eclipse.org/projects/project_summary.php?projectid=soa.bpmn2-modeler">BPMN2 Modeler</a>, and the <a href="http://www.eclipse.org/projects/project_summary.php?projectid=soa.jwt">Java Workflow Tooling</a>) can be imported.
</p>
<p>
The <a href="http://www.eclipse.org/projects/project_summary.php?projectid=technology.g-eclipse">g-Eclipse</a> project offers &ldquo;tools for grid and cloud computing&rdquo;. Although it is under <a href="http://wiki.eclipse.org/Technology/Subproject_Termination_Review_2013">termination review</a>, it offers a &ldquo;Job Description Language&rdquo; and connectors to a small number of cloud providers. It has no graphical modeling environment, which is the main focus of Winery.

 
<h2>Why Eclipse?</h2> 
<p>
The Eclipse foundation provides an established environment for commercial-friendly open source software. The contribution guidelines provide a clean way to deal with IP issues. This will help to attract companies to work with and enhance Winery and to foster synergy effects between industry and research development. By using the Eclipse project ecosystem, we benefit from an established way to manage the code and issues.
</p>
<p>
Eclipse is widening towards web-based development, which manifests especially in the context of Orion. With our web-based tooling we will support this widening.
</p>

<h2>Initial Contribution</h2>
<p>
The initial contribution fully supports TOSCA v1.0:
TOSCA elements can be created, edited, exported as CSAR, and imported from CSARs.
Service Templates can be graphically modeled, whereby the modeler offers the node types and relationship types stored in the backend.
Based on this state, the next step is to build the BPMN4TOSCA plan modeler based on the framework defined by the topology modeler.
</p>
<p>
The backend-code is written in Java and JSPs.
Items can be stored locally or in the cloud, which is enabled by the usage of the <a href="http://incubator.apache.org/projects/jclouds.html">jclouds library</a>.
The frontend-code is written in JavaScript embedded in HTML generated by JSPs.
The graph editing capabilities are based on the <a href="http://jsplumbtoolkit.com/">jsPlumb library</a> and <a href="http://jquery.com/">jQuery</a>.
</p>

<h2>Legal Issues</h2>
<p>
It is intended to dual-license Winery under the Apache License 2.0 and the Eclipse Public License 1.0.
</p>
<p>
None known. All libraries used in the initial code contribution have licenses approved by the Eclipse Software Foundation.
</p>

<h2>Committers</h2>

<p>The following individuals are proposed as initial committers to the project:</p>

<dl>
	<dt>Oliver Kopp, University of Stuttgart (lead)</dt>
	<dt>C. Timurhan Sungur, University of Stuttgart</dt>
</dl>

<p>We welcome additional committers and contributions.</p>

<h2>Interested Parties</h2>

<p>The following individuals, organisations, companies, and projects have 
expressed interest in this project:</p>

<ul>
	<li>Gerd Breiter, IBM</li>
	<li>Schahram Dustdar, TU Vienna</li>
	<li>J&uuml;rgen Heinrich, KIVBF</li>
	<li>Alex Heneveld, Cloudsoft</li>
	<li>Paul Lipton, CA</li>
	<li>Peter Niehues, regio iT</li>
	<li>Derek Palma, Vnomic</li>
	<li>Albrecht St&auml;bler, NovaTec</li>
	<li>Tobias Unger, gridsolut</li>
</ul>

<h2>Project Scheduling</h2>

<table>
	<tr>
		<th>Month</th>
		<th>Milestone</th>
	</tr>
	<tr>
		<td>August 2013</td>
		<td>Initial code contribution</td>
	</tr>
	<tr>
		<td>September 2013</td>
		<td>Start of implementation of the BPMN4TOSCA Plan Modeler</td>
	</tr>
	<tr>
		<td>October 2013</td>
		<td>IP clearance by Eclipse Foundation, provisioning of the project on Eclipse.org infrastructure</td>
	</tr>
</table>

<h2>Changes to this Document</h2>

<table>
	<tr>
		<th>Date</th>
		<th>Change</th>
	</tr>
	<tr>
		<td>01-07-2013</td>
		<td>Document created</td>
	</tr>
</table>
</body>
</html>
