<html>
<!-- 
    Copyright (c) 2005, 2006 IBM Corporation and others.
    All rights reserved. This program and the accompanying materials
    are made available under the terms of the Eclipse Public License v1.0
    which accompanies this distribution, and is available at
    http://www.eclipse.org/legal/epl-v10.html
    Contributors:
    IBM Corporation - initial implementation
-->

<head>
<title>Configuration and Publishing</title>
</head>
<body>
<h3>Method Configurations Overview</h3>
<p>Eclipse Process Framework Composer ships with a lot of content out of the box. It includes
  the Open Unified Process (OpenUP) framework and various plug-ins extending
  OpenUP/Basic with domain-specific additions. No organization or project requires all of this
  documentation all at once, but would work with a selection of specific subsets.</p>
<p> Eclipse Process Framework Composer (EPF Composer) manages for that purpose so-called method
  configurations, which allow you to specify working sets of content and processes
  for a specific context, such as a specific variant of the RUP framework that
  you want to publish and deploy for a given software project or as a foundation
  for a development organization. All content and processes in EPF Composer are organized
  in method plug-ins, which are organized into method packages. A method configuration
  is simply a selection of the method plug-ins and packages.</p>
<p><img src="conf.gif"></p>
<p>You create and specify a configuration using the configuration editor depicted
  in the figure above. You could start creating your own method configuration
  by copying one of the configurations that ship with EPF Composer and modify it to fit
  your specific needs. You can add or remove whole method plug-ins as well as
  make selection with each plug-in by checking or un-checking packages. </p>
<p> You can use the resulting configuration as your working set for your EPF Composer
  work. The actual content of the configuration, i.e. the included method content
  and process elements are always accessible in the Configuration view. Use the
  combo box in the toolbar to select the currently used method configuration.</p>
<h3>Publishing Overview</h3>
<p>Method configurations are the basis for publishing method content and processes.
  A published configuration is an html Web site that presents all the method
  content and processes of the method configuration in a navigable and searchable
  way. It uses the relationships established during method content and process
  authoring to generate hyperlinks between elements as well as provides tree
  browsers based on the configuration view and user-defined categorizations of
  the content. The figure below shows an example of the published 'Classic RUP'
  method configuration.</p>
<p><img src="pub.gif"></p>
<p>For publishing simply create and select a configuration. The publication wizard
  will do the rest for you and only publish content that is part of the method
  configuration. It will also automatically adopt content to the configuration
  such as removing
  references of method content elements to elements outside of the configuration
  or removing activities from your processes that only contain work defined outside
  of the configuration set. Hence, publishing will only include the content that
  you really need. You can always preview a published configuration using EPF Composer's
browsing perspective.</p>
<p>&nbsp;</p>
</body>
</html>
