<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<!-- 
    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
-->

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<h2><a></a><a>Exercise 2: Explore a Process using Authoring perspective </a></h2>
<p>The purpose of this tutorial is to explore the information and editors for processes. A Capability Pattern is used as an example but the same applies to Delivery Processes. </p>
<ol>
  <li>
    <p>Switch to <strong>Authoring </strong> perspective. </p>
  </li>
  <li>
    <p>In the Library View, click <strong>RUP &gt; Processes &gt; Capability Patterns &gt; Classic RUP &gt; Discipline Workflows</strong>. </p>
  </li>
  <li>
    <p>Double click the <strong>Analysis and Design Capability Pattern</strong> and examine the Capability Pattern. </p>
  </li>
  <li>The <strong>Description</strong> tab provides a number of sections that can be used to fully describe the Capability Pattern. 
    <p>A Capability Pattern or Delivery Process must be associated with at least one configuration but can be associated with many. The configuration sets the scope for core method content and other process elements that can be included in a process. </p>
  </li>
  <li>    Click the <strong>Work Breakdown Structure</strong> tab. 
    <p>This shows the Activities in the Capability Pattern and the (core method content) tasks that are included in each Activity. </p>
    <p>When a task is added to a process, the roles and work products that are associated with the task are also pulled into the process. </p>
    <p>Each task, role, and work product shown in the activity is actually an instance of the element as it is used at the particular point in the process. So what you see in the process are actually Task Descriptors, Role Descriptors and Work Product Descriptors. </p>
  </li>
  <li>    Click the <strong>Team Allocation</strong> tab. 
    <p>This shows the activities in the capability pattern and the roles that are the performers of the tasks in the activities. </p>
  </li>
  <li>    Click the <strong>Work Product Usage</strong> tab. 
    <p>This shows the activities in the capability pattern and the work products that are input and outputs of the tasks in the activities. </p>
  </li>
  <li>    Click on the <strong>Consolidated View</strong> tab. 
    <p>This shows the full set of information for each activity in the Capability Pattern. It shows the tasks, work products and roles within each activity. </p>
  </li>
  <li>    Right click any <strong>task </strong> in the <strong>Work Breakdown Structure view, </strong> and click on <strong>Show Properties View</strong>. 
    <p>This displays a new view that shows all the information about the task (task descriptor) as it is used in the process and allows you to customize the task as it is used at this point in the process. </p>
    <p>The Properties View has a number of tabs that organize the task descriptor information. </p>
  </li>
  <li>
    <p>Click on the <strong>Documentation</strong> tab. This allows you to enter information that is specific to this Task Descriptor. </p>
  </li>
  <li>
    <p>Click on the <strong>Roles</strong> tab. This allows you to replace, remove or add to the roles that are associated with the core method task for this specific instance of the task in the process. </p>
  </li>
  <li>
    <p>Click on the <strong>Work Products</strong> tab. This allows you to replace, remove or add to the work products that are associated with the core method task for this specific instance of the task in the process. </p>
  </li>
  <li>
    <p>Click on the <strong>Steps</strong> tab. This allows you to adjust the task steps as they are applied at this point in the process. </p>
  </li>
  <li>
    <p>When a role is selected in the Team Allocation view, or a work product is selected in the Work Product Usage view, the Properties View allows you to edit these elements in the context of the process. </p>
  </li>
  <li>Click on an <strong>Activity</strong> in the process. <br>
    The properties view allows you to see roll-ups of the tasks, roles, and work products in the activity. Roll-ups can also be displayed in the main content window by selecting the <strong>Roll-Up</strong> option in the context sensitive menu. The Roll-Up view can be turned off by selecting, <strong>Roll-Down</strong>. </li>
</ol>
</body>
</html>
