You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by al...@apache.org on 2007/03/14 23:12:10 UTC

svn commit: r518354 [19/21] - in /incubator/uima/site/trunk/uima-website: docs/ docs/downloads/releaseDocs/ docs/downloads/releaseDocs/2.1.0-incubating/ docs/downloads/releaseDocs/2.1.0-incubating/docs/ docs/downloads/releaseDocs/2.1.0-incubating/docs/...

Added: incubator/uima/site/trunk/uima-website/xdocs/downloads/releaseDocs/2.1.0-incubating/docs/html/tools/tools.html
URL: http://svn.apache.org/viewvc/incubator/uima/site/trunk/uima-website/xdocs/downloads/releaseDocs/2.1.0-incubating/docs/html/tools/tools.html?view=auto&rev=518354
==============================================================================
--- incubator/uima/site/trunk/uima-website/xdocs/downloads/releaseDocs/2.1.0-incubating/docs/html/tools/tools.html (added)
+++ incubator/uima/site/trunk/uima-website/xdocs/downloads/releaseDocs/2.1.0-incubating/docs/html/tools/tools.html Wed Mar 14 15:11:54 2007
@@ -0,0 +1,1548 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>UIMA Tools Guide and Reference</title><link rel="stylesheet" href="css/stylesheet.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.70.0"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="book" lang="en" id="d0e2"><div class="titlepage"><div><div><h1 class="title"><a name="d0e2"></a>UIMA Tools Guide and Reference</h1></div><div><div class="authorgroup"><h3 class="corpauthor">Authors: The Apache UIMA Development Community</h3></div></div><div><p class="releaseinfo">Version 2.1</p></div><div><p class="copyright">Copyright &copy; 2006, 2007 The Apache Software Foundation</p></div><div><p class="copyright">Copyright &copy; 2004, 2006 International Business Machines Corporation</p></div><div><div class="legalnotice"><a name="d0e15"></a><p> </p><p><b>Incubation Notice and Disclaimer.&nbsp;</b>Apache UIMA is an effort undergoing incubation at the Apache Software Foundation (ASF). 
+          Incubation is required of all newly accepted projects until a further review indicates that 
+          the infrastructure, communications, and decision making process have stabilized in a manner 
+          consistent with other successful ASF projects. While incubation status is not necessarily 
+          a reflection of the completeness or stability of the code, 
+          it does indicate that the project has yet to be fully endorsed by the ASF.</p><p> </p><p> </p><p><b>License and Disclaimer.&nbsp;</b>The ASF licenses this documentation
+           to you under the Apache License, Version 2.0 (the
+           "License"); you may not use this documentation except in compliance
+           with the License.  You may obtain a copy of the License at
+         
+         </p><div class="blockquote"><blockquote class="blockquote"><a href="http://www.apache.org/licenses/LICENSE-2.0" target="_top">http://www.apache.org/licenses/LICENSE-2.0</a></blockquote></div><p>
+         
+           Unless required by applicable law or agreed to in writing,
+           this documentation and its contents are distributed under the License 
+           on an 
+           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+           KIND, either express or implied.  See the License for the
+           specific language governing permissions and limitations
+           under the License.
+         </p><p> </p><p> </p><p><b>Trademarks.&nbsp;</b>All terms mentioned in the text that are known to be trademarks or 
+        service marks have been appropriately capitalized.  Use of such terms
+        in this book should not be regarded as affecting the validity of the
+        the trademark or service mark.
+        </p></div></div><div><p class="pubdate">February, 2007</p></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="#ugr.tools.cde">1. CDE User's Guide</a></span></dt><dd><dl><dt><span class="section"><a href="#ugr.tools.cde.launching">1.1. Launching the Component Descriptor Editor</a></span></dt><dt><span class="section"><a href="#ugr.tools.cde.creating_new_ae_descriptor">1.2. Creating a New AE Descriptor</a></span></dt><dt><span class="section"><a href="#ugr.tools.cde.pages_within_the_editor">1.3. Pages within the Editor</a></span></dt><dd><dl><dt><span class="section"><a href="#ugr.tools.cde.adjusting_display_of_pages">1.3.1. Adjusting the display of pages</a></span></dt></dl></dd><dt><span class="section"><a href="#ugr.tools.cde.overview_page">1.4. Overview Page</a></span></dt><dd><dl><dt><span class="section"><a href="#ugr.tools.cde.overview_page.implementation_details">1.4.1. Implementation Details</a></span></
 dt><dt><span class="section"><a href="#ugr.tools.cde.overview_page.runtime_info">1.4.2. Runtime Information</a></span></dt><dt><span class="section"><a href="#ugr.tools.cde.overview_page.overall_id_info">1.4.3. Overall Identification Information</a></span></dt></dl></dd><dt><span class="section"><a href="#ugr.tools.cde.aggregate_page">1.5. Aggregate Page</a></span></dt><dd><dl><dt><span class="section"><a href="#ugr.tools.cde.aggregate_page.adding_components_more_than_once">1.5.1. Adding components more than once</a></span></dt><dt><span class="section"><a href="#ugr.tools.cde.aggregate_page.adding_removing_components_from_flow">1.5.2. Adding or Removing components in a flow</a></span></dt><dt><span class="section"><a href="#ugr.tools.cde.aggregate_page.adding_remote_aes">1.5.3. Adding remote Analysis Engines</a></span></dt><dt><span class="section"><a href="#ugr.tools.cde.aggregate_page.connecting_to_remote_services">1.5.4. Connecting to Remote Services</a></span></dt><dt><
 span class="section"><a href="#ugr.tools.cde.aggregate_page.finding_aes_by_searching">1.5.5. Finding Analysis Engines by searching</a></span></dt><dt><span class="section"><a href="#ugr.tools.cde.aggregate_page.component_engine_flow">1.5.6. Component Engine Flow</a></span></dt></dl></dd><dt><span class="section"><a href="#ugr.tools.cde.parm_definition">1.6. Parameters Definition Page</a></span></dt><dd><dl><dt><span class="section"><a href="#ugr.tools.cde.parm_definition.using_groups">1.6.1. Using groups</a></span></dt><dt><span class="section"><a href="#ugr.tools.cde.parm_definition.aggregates">1.6.2. Parameter declarations for Aggregates</a></span></dt></dl></dd><dt><span class="section"><a href="#ugr.tools.cde.parameter_settings">1.7. Parameter Settings Page</a></span></dt><dt><span class="section"><a href="#ugr.tools.cde.type_system">1.8. Type System Page</a></span></dt><dd><dl><dt><span class="section"><a href="#ugr.tools.cde.type_system.exporting">1.8.1. Exporting</a><
 /span></dt></dl></dd><dt><span class="section"><a href="#ugr.tools.cde.capabilities">1.9. Capabilities Page</a></span></dt><dd><dl><dt><span class="section"><a href="#ugr.tools.cde.capabilities.sofa_name_mapping">1.9.1. Sofa (and view) name mappings</a></span></dt></dl></dd><dt><span class="section"><a href="#ugr.tools.cde.indexes">1.10. Indexes Page</a></span></dt><dt><span class="section"><a href="#ugr.tools.cde.resources">1.11. Resources Page</a></span></dt><dd><dl><dt><span class="section"><a href="#ugr.tools.cde.resources.binding">1.11.1. Binding</a></span></dt><dt><span class="section"><a href="#ugr.tools.cde.resources.aggregates">1.11.2. Resources with Aggregates</a></span></dt><dt><span class="section"><a href="#ugr.tools.cde.resources.imports_exports">1.11.3. Imports and Exports</a></span></dt></dl></dd><dt><span class="section"><a href="#ugr.tools.cde.source">1.12. Source Page</a></span></dt><dd><dl><dt><span class="section"><a href="#ugr.tools.cde.source.formattin
 g">1.12.1. Source formatting &#8211; indentation</a></span></dt></dl></dd><dt><span class="section"><a href="#ugr.tools.cde.creating_self_contained_type_system">1.13. Creating a Self-Contained Type System</a></span></dt><dt><span class="section"><a href="#ugr.tools.cde.creating_other_descriptor_components">1.14. Creating Other Descriptor Components</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ugr.tools.cpe">2. CPE Configurator User's Guide</a></span></dt><dd><dl><dt><span class="section"><a href="#ugr.tools.cpe.limitations">2.1. Limitations of the CPE Configurator</a></span></dt><dt><span class="section"><a href="#ugr.tools.cpe.starting">2.2. Starting the CPE Configurator</a></span></dt><dt><span class="section"><a href="#ugr.tools.cpe.selecting_component_descriptors">2.3. Selecting Component Descriptors</a></span></dt><dt><span class="section"><a href="#ugr.tools.cpe.running">2.4. Running a Collection Processing Engine</a></span></dt><dt><span class="section
 "><a href="#ugr.tools.cpe.file_menu">2.5. The File Menu</a></span></dt><dt><span class="section"><a href="#ugr.tools.cpe.help_menu">2.6. The Help Menu</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ugr.tools.doc_analyzer">3. Document Analyzer User's Guide</a></span></dt><dd><dl><dt><span class="section"><a href="#ugr.tools.doc_analyzer.starting">3.1. Starting the Document Analyzer</a></span></dt><dt><span class="section"><a href="#ugr.tools.doc_analyzer.running_an_ae">3.2. Running an AE</a></span></dt><dt><span class="section"><a href="#ugr.tools.doc_analyzer.viewing_results">3.3. Viewing the Analysis Results</a></span></dt><dt><span class="section"><a href="#ugr.tools.doc_analyzer.configuring">3.4. Configuring the Annotation Viewer</a></span></dt><dt><span class="section"><a href="#ugr.tools.doc_analyzer.interactive_mode">3.5. Interactive Mode</a></span></dt><dt><span class="section"><a href="#ugr.tools.doc_analyzer.view_mode">3.6. View Mode</a></span></dt></d
 l></dd><dt><span class="chapter"><a href="#ugr.tools.annotation_viewer">4. Annotation Viewer</a></span></dt><dt><span class="chapter"><a href="#ugr.tools.cvd">5. CAS Visual Debugger</a></span></dt><dd><dl><dt><span class="section"><a href="#cvd.errorHandling">5.1. Error Handling</a></span></dt><dt><span class="section"><a href="#cvd.preferencesFile">5.2. Preferences File</a></span></dt><dt><span class="section"><a href="#cvd.theMenus">5.3. The Menus</a></span></dt><dd><dl><dt><span class="section"><a href="#cvd.fileMenu">5.3.1. The File Menu</a></span></dt><dt><span class="section"><a href="#cvd.editMenu">5.3.2. The Edit Menu</a></span></dt><dt><span class="section"><a href="#cvd.runMenu">5.3.3. The Run Menu</a></span></dt><dt><span class="section"><a href="#cvd.toolsMenu">5.3.4. The tools menu</a></span></dt></dl></dd><dt><span class="section"><a href="#cvd.mainDisplayArea">5.4. The Main Display Area</a></span></dt><dd><dl><dt><span class="section"><a href="#cvd.statusBar">
 5.4.1. The Status Bar</a></span></dt><dt><span class="section"><a href="#cvd.keyboardNavigation">5.4.2. Keyboard Navigation and Shortcuts</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#ugr.tools.jcasgen">6. JCasGen User's Guide</a></span></dt><dd><dl><dt><span class="section"><a href="#ugr.tools.jcasgen.running_without_eclipse">6.1. Running stand-alone without Eclipse</a></span></dt><dt><span class="section"><a href="#ugr.tools.jcasgen.running_standalone_with_eclipse">6.2. Running stand-alone with Eclipse</a></span></dt><dt><span class="section"><a href="#ugr.tools.jcasgen.running_within_eclipse">6.3. Running within Eclipse</a></span></dt></dl></dd><dt><span class="chapter"><a href="#ugr.tools.pear.packager">7. PEAR Packager User's Guide</a></span></dt><dd><dl><dt><span class="section"><a href="#ugr.tools.pear.packager.using_eclipse_plugin">7.1. Using the PEAR Eclipse Plugin</a></span></dt><dd><dl><dt><span class="section"><a href="#ugr.tools.pear.pac
 kager.add_uima_nature">7.1.1. Add UIMA Nature to your project</a></span></dt><dt><span class="section"><a href="#ugr.tools.pear.packager.using_pear_generation_wizard">7.1.2. Using the PEAR Generation Wizard</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#ugr.tools.pear.installer">8. PEAR Installer User's Guide</a></span></dt><dt><span class="chapter"><a href="#ugr.tools.pear.merger">9. PEAR Merger User's Guide</a></span></dt><dd><dl><dt><span class="section"><a href="#ugr.tools.pear.merger.merge_details">9.1. Details of the merging process</a></span></dt><dt><span class="section"><a href="#ugr.tools.pear.merger.testing_modifying_resulting_pear">9.2. Testing and Modifying the resulting PEAR</a></span></dt><dt><span class="section"><a href="#ugr.tools.pear.merger.restrictions_limitations">9.3. Restrictions and Limitations</a></span></dt></dl></dd></dl></div><div class="chapter" lang="en" id="ugr.tools.cde"><div class="titlepage"><div><div><h2 class="titl
 e"><a name="ugr.tools.cde"></a>Chapter&nbsp;1.&nbsp;Component Descriptor Editor User's Guide</h2></div></div></div><p>The Component Descriptor Editor is an Eclipse plug-in that provides a forms-based
+    interface for creating and editing UIMA XML descriptors. It supports most of the
+    descriptor formats, except the Collection Processing Engine descriptor and
+    some remote deployment descriptors.</p><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ugr.tools.cde.launching"></a>1.1.&nbsp;Launching the Component Descriptor Editor</h2></div></div></div><p>Here's how to launch this tool on a descriptor contained in the examples. This
+      presumes you have installed the examples as described in the SDK Installation and Setup
+      chapter.</p><div class="itemizedlist"><ul type="disc" compact><li><p>Expand the uimaj-examples
+      project in the Eclipse Navigator or Package Explorer view</p></li><li><p>Within this project, browse to the file
+        descriptors/tutorial/ex1/RoomNumberAnnotator.xml.</p></li><li><p>Right-click on this file and select Open With <span class="symbol">&#8594;</span> Component
+        Descriptor Editor. (If this option is not present, check to make sure you installed
+        the plug-ins as described <a href="../overview_and_setup/overview_and_setup.html#ugr.ovv.eclipse_setup.installation" class="olink">Section&nbsp;3.1, &#8220;Installation&#8221;</a> in <span class="olinkdocname">Overview &amp; Setup</span>. The EMF plugin is also
+        required.).</p></li><li><p>This should open a graphical editor and display the contents of the
+        RoomNumberAnnotator descriptor. </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ugr.tools.cde.creating_new_ae_descriptor"></a>1.2.&nbsp;Creating a New AE Descriptor</h2></div></div></div><p>A new AE descriptor file may be created by selecting the File <span class="symbol">&#8594;</span> New <span class="symbol">&#8594;</span>
+      Other... menu. This brings up the following dialog:
+      
+      
+      </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="531"><tr><td><img src="../images/tools/tools.cde/image002.jpg" width="531" alt="Screenshot of selecting new UIMA component in Eclipse"></td></tr></table></div></div><p>If the user then selects UIMA and Analysis Engine Descriptor File, and clicks the
+      Next &gt; button, the following dialog is displayed. We will cover creating other kinds
+      of components later in the documentation.
+      
+      
+      </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="300"><tr><td><img src="../images/tools/tools.cde/image004.jpg" width="300" alt="Screenshot of selecting new UIMA component in Eclipse after pushing Next"></td></tr></table></div></div><p>After entering the appropriate parent folder and file name, and clicking Finish,
+      an initial AE descriptor file is created with the given name, and the descriptor is
+      opened up within the Component Descriptor Editor.</p><p>At this point, the display inside the Component Descriptor Editor is the same
+      whether one started by creating a new AE descriptor, as in the preceding paragraph, or
+      one merely opened a previously created AE descriptor from, say, the Package Explorer
+      view. We show a previously created AE in the figure below:
+      
+      
+      </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="563"><tr><td><img src="../images/tools/tools.cde/image006.jpg" width="563" alt="Screenshot of CDE showing overview page"></td></tr></table></div></div><p>To see all the information shown in the main editor pane with less scrolling, double
+      click the title tab to toggle between the &#8220;<span class="quote">full screen</span>&#8221; and normal
+      views.</p><p>It is possible to set the Component Descriptor Editor as the default editor for all
+      .xml files by going to Window <span class="symbol">&#8594;</span> Preferences, and then selecting File Associations
+      on the left, and *.xml on the right, and finally by clicking on Component Descriptor
+      Editor, the Default button and then OK. If AE and Type System descriptors are not the
+      primary .xml files you work with within the Eclipse environment, we recommend not
+      setting the Component Descriptor Editor as your default editor for all .xml files. To
+      open an .xml file using the Component Descriptor Editor, if the Component Descriptor
+      Editor is not set as your default editor, right click on the file in the Package Explorer,
+      or other navigational view, and select Open With <span class="symbol">&#8594;</span> Component Descriptor Editor.
+      This choice is remembered by Eclipse for subsequent open operations.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ugr.tools.cde.pages_within_the_editor"></a>1.3.&nbsp;Pages within the Editor</h2></div></div></div><p>The Component Descriptor Editor follows a standard Eclipse paradigm for these
+      kinds of editors. There are several pages in the editor; each one can be selected, one at a
+      time, by clicking on the bottom tabs. The last page contains the actual XML source file
+      being edited, and is displayed as plain text.</p><p>The same set of tabs appear at the bottom of each page in the Component Descriptor
+      Editor. The Component Descriptor Editor uses this &#8220;<span class="quote">multi-page editor</span>&#8221;
+      paradigm to give the user a view of conceptually distinct portions of the Descriptor
+      metadata in separate pages. At any point in time the user may click on the Source tab to
+      view the actual XML source. The Component Descriptor Editor is, in a way, just a fancy GUI
+      for editing the XML. The tabs provide quick access to the following pages: Overview,
+      Aggregate, Parameters, Parameter Settings, Type System, Capabilities, Indexes,
+      Resources, and Source. We discuss each of these pages in turn.</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ugr.tools.cde.adjusting_display_of_pages"></a>1.3.1.&nbsp;Adjusting the display of pages</h3></div></div></div><p>Most pages in the editor have a &#8220;<span class="quote">sash</span>&#8221; bar. This is a light gray bar
+        which separates sub-sections of the page. This bar can be dragged with the mouse to
+        adjust how the display area is split between the two sash panes. You can also change the
+        orientation of the Sash so it splits vertically, instead of horizontally, by
+        clicking on the small icons at the top right of the page that look like this:
+        
+        </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="51"><tr><td><img src="../images/tools/tools.cde/image008.jpg" width="51" alt="Changing orientation of two window split"></td></tr></table></div></div><p>All of the sections on a page have subtitles, with an indicator to the left which
+        you can click to collapse or expand that particular section. Collapsing sections can
+        sometimes be useful to free up screen area for other sections.</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ugr.tools.cde.overview_page"></a>1.4.&nbsp;Overview Page</h2></div></div></div><p>Normally, the first page displayed in the Component Descriptor Editor is the
+      Overview page (the name of the page is shown in the GUI panel at the top left). If there is an
+      error reading and parsing the source, the Source page is shown instead, giving you the
+      opportunity to correct the problem. For many components, the Overview page contains
+      three sections: Implementation Details, Runtime Information and overall
+      Identification Information.</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ugr.tools.cde.overview_page.implementation_details"></a>1.4.1.&nbsp;Implementation Details</h3></div></div></div><p>In the Implementation Details section you specify the Implementation Language
+        and Engine Type. There are two kinds of Engines: Aggregate, and non-Aggregate (also
+        called Primitive). An Aggregate engine is one which is composed of additional
+        component engines and contains no code, itself. Several of the pages in the Component
+        Descriptor Editor have different formats, depending on the engine type.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ugr.tools.cde.overview_page.runtime_info"></a>1.4.2.&nbsp;Runtime Information</h3></div></div></div><p>Runtime information is only applicable for primitive engines and is disabled
+        for aggregates and other kinds of descriptors. This is where you specify the class name of the annotator
+        implementation, if you are doing a Java implementation, or the C++ shared object or dll name,
+        if you are doing a C++ implementation.  Most Analysis Engines will specify that
+        they update the CAS, and that they may be replicated (for performance reasons) when deployed. If
+        a particular Analysis Engine must see every CAS (for instance, if it is counting the
+        number of CASes), then uncheck the &#8220;<span class="quote">multiple deployment allowed</span>&#8221;
+        box. If the Analysis Engine doesn't update the CAS, uncheck the &#8220;<span class="quote">updates
+        the CAS</span>&#8221; box. (Most CAS Consumers do not update the CAS, and this parameter
+        defaults to unchecked for new CAS Consumer descriptors).</p><p>Analysis engines are written using the CAS Multiplier APIs 
+        (see <a href="../tutorials_and_users_guides/tutorials_and_users_guides.html#ugr.tug.cm" class="olink">Chapter&nbsp;7, CAS Multiplier Developer's Guide
+      </a> in <span class="olinkdocname">UIMA Tutorial and Developers' Guides</span>) 
+        can create additional CASes for analysis. To specify that they
+        do this, check the &#8220;<span class="quote">returns new artifacts</span>&#8221;.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ugr.tools.cde.overview_page.overall_id_info"></a>1.4.3.&nbsp;Overall Identification Information</h3></div></div></div><p>The Name should be a human-readable name that describes this component. The
+        Version, Vendor, and Description fields are optional, and are arbitrary
+        strings.</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ugr.tools.cde.aggregate_page"></a>1.5.&nbsp;Aggregate Page</h2></div></div></div><p>For primitive Analysis Engines, Flow Controllers or Collection Processing
+      components, the Aggregate page is not used. For aggregate engines, the page looks like
+      this:
+      
+      
+      </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="330"><tr><td><img src="../images/tools/tools.cde/image010.jpg" width="330" alt="CDE Aggregate page"></td></tr></table></div></div><p>On the left we see a list of component engines, and on the right information about the
+      flow. If you hover the mouse over an item in the list of component engines, that
+      engine's description meta data will be shown. If you right-click on one of these
+      items, you get an option to open that delegate descriptor in another editor instance.
+      Any changes you make, however, won't be seen until you close and reopen the editor
+      on the importing file.</p><p>Engines can be added to the list on the left by clicking the Add button at the bottom of
+      the Component Engine section. This brings up the following dialog:
+      
+      
+      </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="300"><tr><td><img src="../images/tools/tools.cde/delegate-chooser.jpg" width="300" alt="Adding an Analysis Engine to an Aggregate"></td></tr></table></div></div><p>This dialog lets you select
+      a descriptor from your workspace, or browse the file system to select a descriptor. 
+      </p><p>You can specify that the import should be by Name (the name is looked up using both the
+      Project's class path, and DataPath), or by location. If it is by name, it may
+      contain part of the path within the name. For instance, if the file name picked is
+      <code class="literal">c:/project/subproject/src/com/company/prod/xyz.xml</code>, and
+      the class path includes <code class="literal">c:/project/subproject/src</code>, the name in
+      the descriptor will be &#8220;<span class="quote"><code class="literal">com.company.prod.xyz</code></span>&#8221;.
+      If it is by location, the file reference is converted to a relative reference if
+      possible, in the descriptor.</p><p>The final selection at the bottom tells whether or not the selected engine(s)
+      should automatically be added to the end of the flow section (the right section on the
+      Aggregate page). The OK button does not become activated until a descriptor
+      file is selected.</p><p>To remove an analysis engine from the component engine list simply select an engine
+      and click the Remove button, or press the delete key. If the engine is already in the flow
+      list you will be warned that deletion will also delete the specified engine from this
+      list.</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ugr.tools.cde.aggregate_page.adding_components_more_than_once"></a>1.5.1.&nbsp;Adding components more than once</h3></div></div></div><p>Components may be added to the left panel more than once. Each of these components
+        will be given a key which is unique. A typical reason this might be done is to use a
+        component in a flow several times, but have each use be associated with different
+        configuration parameters (different configuration parameters can be associated
+        with each instance).</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ugr.tools.cde.aggregate_page.adding_removing_components_from_flow"></a>1.5.2.&nbsp;Adding or Removing components in a flow</h3></div></div></div><p>The button in-between the Component Engines and the Flow List, labeled
+        <code class="literal">&gt;&gt;</code>, adds a chosen engine to the flow list and the button
+        labeled <code class="literal">&lt;&lt;</code> removes an engine from the flow list. To add an
+        engine to the flow list you must first select an engine from the left hand list, and then
+        press the <code class="literal">&gt;&gt;</code> button. Engines may appear any number of
+        times in the flow list. To remove an engine from the flow list, select an engine from the
+        right hand list and press the <code class="literal">&lt;&lt;</code> button.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ugr.tools.cde.aggregate_page.adding_remote_aes"></a>1.5.3.&nbsp;Adding remote Analysis Engines</h3></div></div></div><p>There are two ways to add remote engines: add an existing descriptor, which
+        specifies a remote engine (just as if you were adding a non-remote engine) or use the
+        Add Remote button which will create a remote descriptor, save it, and then import it,
+        all in one operation. The Add Remote button enables you to easily specify the
+        information needed to create a Service Client descriptor for a remote AE - one that
+        runs on a different computer connected over the network. The Service Client
+        descriptor is described in <a href="../references/references.html#ugr.ref.xml.component_descriptor.service_client" class="olink">Section&nbsp;2.7, &#8220;Service Client Descriptors&#8221;</a> in <span class="olinkdocname">UIMA References</span>. The Add
+        Remote button creates this descriptor, saves it as a file in the workspace, and
+        imports it into the aggregate.</p><p>Of course, if you already have a Service Client descriptor, you can add it to the
+        set of delegates, just like adding other kinds of analysis engines.</p><p>After clicking on Add Remote, the following dialog is displayed:
+        
+        
+        </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="576"><tr><td><img src="../images/tools/tools.cde/image014.jpg" width="576" alt="Adding a remote client to an aggregate"></td></tr></table></div></div><p>To define a remote service you specify the Service Kind, Protocol Service Type,
+        URI and Key. You can also specify a Timeout in milliseconds, used by the SOAP service,
+        and a VNS Host and Port used by the Vinci Service. Just like when one adds an engine from
+        the file system, you have the option of adding the engine to the end of the flow. The
+        Component Descriptor Editor currently only supports Vinci and SOAP services using
+        this dialog.</p><p>Remote engines are added to the descriptor using the
+        &lt;import ... &gt; syntax. The information you specify here is saved in the Eclipse
+        project as a file, using a generated name, &lt;key-name&gt;.xml, where
+        &lt;key-name&gt; is the name you listed as the Key. Because of this, the key-name must
+        be a valid file name. If you want a different name, you can change the path information
+        in the dialog box.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ugr.tools.cde.aggregate_page.connecting_to_remote_services"></a>1.5.4.&nbsp;Connecting to Remote Services</h3></div></div></div><p>If you are using the Vinci protocol, it requires that you specify the location of
+        the Vinci Name Server (an IP address and a Port number). You can specify these in the
+        service descriptor, or globally, for your Eclipse workspace, using the Eclipse menu
+        item: Window <span class="symbol">&#8594;</span> Preferences... <span class="symbol">&#8594;</span> UIMA Preferences. If the remote service
+        is available (up and running), additional operations become possible. For
+        instance, hovering the mouse over the remote descriptor will show the description
+        metadata from the remote service.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ugr.tools.cde.aggregate_page.finding_aes_by_searching"></a>1.5.5.&nbsp;Finding Analysis Engines by searching</h3></div></div></div><p>The next button that appears between the component engine list and the flow list
+        is the Find AE button. When this button is pressed the following dialog is displayed,
+        which allows one to search for AEs by name, by input or output types, or by a combination
+        of these criteria. This function searches the existing Eclipse workspace for
+        matching *.xml descriptor source files; it does not look inside Jar files.
+        
+        
+        </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="518"><tr><td><img src="../images/tools/tools.cde/image016.jpg" width="518" alt="Searching for an AE to add to an aggregate"></td></tr></table></div></div><p>The search automatically adds a &#8220;<span class="quote">match any characters</span>&#8221; - style
+        (*) wildcard at the beginning and end of anything entered. Thus, if person is
+        specified for an output type, a &#8220;<span class="quote">*person*</span>&#8221; search is performed. Such a
+        search would match such things as &#8220;<span class="quote">my.namespace.person</span>&#8221; and
+        &#8220;<span class="quote">person.governmentOfficial.</span>&#8221; One can search in all projects or one
+        particular project. The search does an implicit <span class="emphasis"><em>and</em></span> on all
+        fields which are left non-blank.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ugr.tools.cde.aggregate_page.component_engine_flow"></a>1.5.6.&nbsp;Component Engine Flow</h3></div></div></div><p>The UIMA SDK currently supports three kinds of sequencing flows: Fixed,
+        CapabilityLanguageFlow (see <a href="../references/references.html#ugr.ref.xml.component_descriptor.aes.aggregate.flow_constraints.capability_language_flow" class="olink">the section called &#8220;Capability Language Flow&#8221;</a> in <span class="olinkdocname">UIMA References</span>
+        ), and user-defined. The first two require specification of a linear flow sequence;
+        this linear flow sequence can also be read by a user-defined flow controller (what use
+        is made of it is up to the user-defined flow controller). The Component Engine Flow
+        section allows specification of these items.</p><p>The pull-down labeled Flow Kind picks between the three flow models. When the
+        user-defined flow is selected, the Browse and Search buttons become enabled to let
+        you pick the flow controller XML descriptor to import.
+        
+        
+        </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="302"><tr><td><img src="../images/tools/tools.cde/image018.jpg" width="302" alt="Specifying flow control"></td></tr></table></div></div><p>The key name value is set automatically from the XML descriptor being imported,
+        and enables parameters to be overridden for that descriptor (see following
+        sections).</p><p>The Up and Down buttons to the right in the Flow section are activated when an
+        engine in the flow is selected. The Up button moves the selected engine up one place in
+        the execution order, and down moves the selected engine down one place in the
+        execution order. Remember that engines can appear multiple times in the flow (or not
+        at all).</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ugr.tools.cde.parm_definition"></a>1.6.&nbsp;Parameters Definition Page</h2></div></div></div><p>There are two pages for parameters: the first one is where parameters are defined,
+      and the second one is where the parameter settings are configured. The first page is the
+      Parameter Definition page and has two alternatives, depending on whether or not the
+      descriptor is an Aggregate or not. We start with a description of parameter definitions
+      for Primitive engines, CAS Consumers, Collection Readers, CAS Initializers, and Flow
+      Controllers. Here is an example:
+      
+      
+      </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="475"><tr><td><img src="../images/tools/tools.cde/image020.jpg" width="475" alt="Parameter Definitions - not Aggregate"></td></tr></table></div></div><p>The first checkbox at the top simplifies things if you are not using Parameter
+      Groups (see the following section for a discussion of groups). In this case, leave the
+      check box unchecked. The main area shows a list of parameter definitions. Each
+      parameter has a name, which must be unique for this Analysis Engine. The other three
+      attributes specify whether the parameter can have a single or multiple values (an array
+      of values), whether it is Optional or Mandatory, and what the value type it can hold
+      (String, Integer, Float, and Boolean).</p><p>In addition to using the buttons on the right to edit this information, you can
+      double-click a parameter to edit it, or remove (delete) a selected parameter by
+      pressing the delete key. Use the Add button to add a new parameter to the list.</p><p>Parameters have an additional description field, which you can specify when you
+      add or edit a parameter. To see the value of the description, hover the mouse over the
+      item, as shown in the picture below:
+      
+      
+      </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="488"><tr><td><img src="../images/tools/tools.cde/image022.jpg" width="488" alt="Parameter description shown in a hover message"></td></tr></table></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ugr.tools.cde.parm_definition.using_groups"></a>1.6.1.&nbsp;Using groups</h3></div></div></div><p>The group concept for parameters arose from the observation that sets of
+        parameters were sometimes associated with different configuration needs. As an
+        example, you might have an Analysis Engine which needed different configuration
+        based on the language of a document.</p><p>To use groups, you check the &#8220;<span class="quote">Use Parameter Groups</span>&#8221; box. When you
+        do this, you get the ability to add groups, and to define parameters within these
+        groups. You also get a capability to define &#8220;<span class="quote">Common</span>&#8221; parameters,
+        which are parameters which are defined for all groups. Here is a screen shot showing
+        some parameter groups in use:
+        
+        
+        </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="460"><tr><td><img src="../images/tools/tools.cde/image024.jpg" width="460" alt="Using parameter groups"></td></tr></table></div></div><p>You can see the &#8220;<span class="quote">&lt;Common&gt;</span>&#8221; parameters as well as two
+        different sets of groups.</p><p>The Default Group is an optional specification of what Group to use if the
+        parameter is not available for the group requested.</p><p>The Search strategy specifies what to do when a parameter is not available for the
+        group requested. It can have the values of None, language_fallback, or
+        default_fallback. These are more fully described in the section <a href="../references/references.html#ugr.ref.xml.component_descriptor.aes.configuration_parameter_declaration" class="olink">Section&nbsp;2.4.1.3, &#8220;Configuration Parameter Declaration&#8221;</a> in <span class="olinkdocname">UIMA References</span>
+        .</p><p>Groups are added using the Add Group button. Once added, they can be edited or
+        removed, using the buttons to the right, or the standard gestures for editing
+        (double-clicking the item) and removing (pressing the delete key after an item is
+        selected). Removing a group removes all the parameter definitions in the group. If
+        you try and remove the &#8220;<span class="quote">&lt;Common&gt;</span>&#8221; group, it just removes the
+        parameters in the group.</p><p>Each entry for a group in the table specifies one or more group names. For example,
+        the highlighted entry above, specifies two groups: &#8220;<span class="quote">myNewGroup2</span>&#8221;
+        and &#8220;<span class="quote">mg3</span>&#8221;. The parameter definition underneath is considered to be in
+        both groups.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ugr.tools.cde.parm_definition.aggregates"></a>1.6.2.&nbsp;Parameter declarations for Aggregates</h3></div></div></div><p>Aggregates declare parameters which always must override a parameter setting
+        for a component making up the aggregate. They do this using the version of this page
+        which is shown when the descriptor is an Aggregate; here's an example:
+        
+        
+        </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="575"><tr><td><img src="../images/tools/tools.cde/image026.jpg" width="575" alt="Aggregate parameters"></td></tr></table></div></div><p>There is an additional panel shown (on the right) which lists all of the
+        components by their key names, and shows for each of them their defined parameters. To
+        add a new override for one or more of these parameters to the aggregate, select the
+        component parameter you wish to override and push the Create Override button (or, you
+        can just double-click the component parameter). This will automatically add a
+        parameter of the same name (by default &#8211; you can change the name if you like) to
+        the aggregate, putting it into the same group(s) (if groups are being used in the
+        component &#8211; this is required), and setting the properties of the parameter to
+        match those of the component (this is required).</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>If the name of the parameter being added already is in use in the aggregate,
+      and the parameters are not compatible, a new parameter name is generated by suffixing
+      the name with a number. If the parameters are compatible, the selected component
+      parameter is added to the existing aggregate parameter, as an additional override. If
+      you don't want this behavior, but want to have a new name generated in this case,
+      push the Create non-shared Override button instead, or hold down the
+      &#8220;<span class="quote">shift</span>&#8221; key when double clicking the component parameter.</p><p>The required / optional setting in the aggregate parameter is set to match that of
+        the parameter being overridden. You may want to make an optional delegate parameter
+        required. You can do this by changing that value manually in the source editor view.
+        </p></div><p>In the above example, the user has just double-clicked the
+        &#8220;<span class="quote">TypeNames</span>&#8221; parameter in the &#8220;<span class="quote">NameRecognizer</span>&#8221;
+        component. This added that parameter to this aggregate under the &#8220;<span class="quote">&lt;Not in
+        any group&gt;</span>&#8221; section &#8211; since it wasn't part of a group.</p><p>Once you have added a parameter definition to the aggregate, you can use the
+        buttons on the right side of the left panel to add additional overrides or remove
+        parameters or their overrides. <span><a name="ugr.tools.cde.parm_definition.removing_groups"></a> You can also remove
+        groups; removing a group is like removing all the parameter definitions in the
+        group.</span></p><p>In addition to adding one parameter at a time from a component, you can also add all
+        the parameters for a group within a component, or all the parameters in the component,
+        by selecting those items.</p><p>If you double-click (or push Create Override) the
+        &#8220;<span class="quote">&lt;Common&gt;</span>&#8221; group or a parameter in the &lt;Common&gt; group in
+        a component, a special group is created in the Aggregate consisting of all of the
+        groups in that component, and the overriding parameter (or parameters) are added to
+        that. This is done because each component can have different groups belonging to the
+        Common group notion; the Common group for a component is just shorthand for all the
+        groups in that component.</p><p>The Aggregate's specification of the default group and search strategy
+        override any specifications contained in the components.</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ugr.tools.cde.parameter_settings"></a>1.7.&nbsp;Parameter Settings Page</h2></div></div></div><p>The Parameter Settings page is rather straightforward; it is where the user
+      defines parameter settings for their engines. An example of such a page is given below:
+      
+      
+      </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="576"><tr><td><img src="../images/tools/tools.cde/image028.jpg" width="576" alt="Parameter settings page"></td></tr></table></div></div><p>For single valued attributes, the user simply types the default value into the
+      Value box on the right hand side. For multi-valued parameters the user should use the
+      Add, Edit and Remove buttons to manage the list of multiple parameter values.</p><p>Values within groups are shown with each group separately displayed, to allow
+      configuring different values for each group.</p><p>Values are checked for validity. For Boolean values in a list, use the words
+      <code class="literal">true</code> or <code class="literal">false</code>.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>If you specify a value in a single-valued parameter, and then delete all the
+    characters in the value, the CDE will treat this as if you wanted to not specify any setting
+    for this parameter. In order to specify a 0 length string setting for a String-valued
+    parameter, you will have to manually edit the XML using the &#8220;<span class="quote">Source</span>&#8221; tab.
+    </p><p> For array valued parameters, if you remove all of the entries for a particular array
+      parameter setting, the XML will reflect a 0-length array. To change this to an
+      unspecified parameter setting, you will have to manually edit the XML using the
+      &#8220;<span class="quote">Source</span>&#8221; tab. </p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ugr.tools.cde.type_system"></a>1.8.&nbsp;Type System Page</h2></div></div></div><p>This page declares the type system used by the annotator. For aggregates it is
+      derived by merging the type systems of all constituent AEs. The types used by the AE
+      constitute the language in which the inputs and outputs are described in the
+      Capabilities page and also affect the choice of indexes on the Indexes page. The Type
+      System page looks like the following:
+      
+      
+      </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="618"><tr><td><img src="../images/tools/tools.cde/image030.jpg" width="618" alt="Type System declaration page"></td></tr></table></div></div><p>Before discussing this page in detail, it is important to note that there are two
+      settings that affect the operation of this page. These are accessed by selecting the
+      UIMA <span class="symbol">&#8594;</span> Settings (or by going to the Eclipse Window <span class="symbol">&#8594;</span> Preferences <span class="symbol">&#8594;</span> UIMA
+      Preferences) and checking or unchecking one of the following: &#8220;<span class="quote">Auto generate
+      .java files when defining types</span>&#8221; and &#8220;<span class="quote">Display fully qualified type
+      names.</span>&#8221;</p><p><a name="ugr.tools.cde.auto_jcasgen"></a>When the Auto generate option is checked and the development language for the AE is
+      Java, any time a change is made to a type and the change is saved, the corresponding .java
+      files are generated using the JCasGen tool. The results are stored in the primary source
+      directory defined for the project. The primary source directory is that listed first
+      when you right click on your project and select Properties <span class="symbol">&#8594;</span> Java Build Path, click
+      on the Source tab and look in the list box under the text that reads: &#8220;<span class="quote">Source folder
+      on build path.</span>&#8221; If no source folders are defined, you will get a warning that you
+      have no source folders defined and JCasGen will not be run. (For information on JCasGen
+      see <a href="tools.html#ugr.tools.jcasgen" class="olink">Chapter&nbsp;6, JCasGen User's Guide
+      </a>).
+      When JCasGen is run, you can monitor the progress of the generation by observing the
+      status on the Eclipse status line (normally at the bottom of the Eclipse window).
+      JCasGen runs on the fully-merged type system, consisting of the type specification
+      plus any imported type system, plus (for aggregates) the merged type systems of all the
+      components in an aggregate.</p><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Warning</h3><p>If the components of the aggregate have different definitions for the same 
+    type name, the CDE will show a warning.  It is possible to continue past this warning, 
+    in which case the CDE will produce the correct 
+    Java source files representing the merged types (that is, the
+    type definition that contains all of the features defined on that type by all of your
+    components).  However, it is not recommended to use this feature 
+    (of having different definitions for the same type name) since it can make it 
+    difficult to combine/package your annotator with others. See <a href="../references/references.html#ugr.ref.jcas.merging_types_from_other_specs" class="olink">Section&nbsp;5.5, &#8220;Merging Types&#8221;</a> in <span class="olinkdocname">UIMA References</span> for more information.
+  </p></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>In addition to running automatically, you can manually run JCasGen on the
+    fully merged type system by clicking the JCasGen button, or by selecting Run JCasGen from
+    the UIMA pulldown menu: </p></div><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="530"><tr><td><img src="../images/tools/tools.cde/image032.jpg" width="530" alt="Setting JCasGen options"></td></tr></table></div></div><p>When &#8220;<span class="quote">Display fully qualified type names</span>&#8221; is left unchecked, the
+      namespace of types is not displayed, i.e. if a fully qualified type name is
+      my.namespace.person, only the abbreviated type name person will be displayed. In the
+      Type page diagram shown above, &#8220;<span class="quote">Display fully qualified type names</span>&#8221; is
+      in fact unchecked.</p><p>To add, edit, or remove types the buttons on the top left section are used. When
+      adding or editing types, fully qualified type names should of course be used,
+      regardless of whether the &#8220;<span class="quote">Display fully qualified type names</span>&#8221; is
+      unchecked. Removing or editing a type will have a cascading effect in that the type
+      removal/edit will effect inputs, outputs, indexes and type priorities in the natural
+      way.</p><p>When a type is added, this dialog is shown:
+      
+      
+      </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="360"><tr><td><img src="../images/tools/tools.cde/image034.jpg" width="360" alt="Adding a type"></td></tr></table></div></div><p>Type names should be specified using a namespace. The namespace is like a Java
+      package name, and serves to insure type names are unique. It also serves as the package
+      name for the generated JCas classes. The namespace name is the set of names up to the last
+      period in the string.</p><p>The supertype must be picked from an existing type. The entry field for the
+      supertype supports Eclipse-style content assist. To use it, put the cursor in the
+      supertype field, and type a letter or two of the supertype name (lower case is fine),
+      either starting with the name space, or just with the type name (without the name space),
+      and hold down the Control key and then press the spacebar. When you do this, you can see a
+      list of suitable matching types. You can then type more letters to narrow down your
+      choices, or pick the right entry with the mouse.</p><p>To see the available types and pick one, press the Browse button. This will show the
+      available types, and as you type letters for the type name (in lower case &#8211;
+      capitalization is ignored), the available types that match are narrowed. When
+      you've typed enough to specify the type you want, press Enter. Or you can use the
+      list of matching type names and pick the one you want with the mouse.</p><p>Once you've added the type, you can add features to it by highlighting the
+      type, and pressing the Add button.</p><p>If the type being defined is a subtype of uima.cas.String, the Add button allows you
+      to add allowed values for the string, instead of adding features.</p><p>To edit a type or feature, you can double click the entry, or highlight the entry and
+      press the Edit button. To delete a type or feature, you highlight the entry to be deleted,
+      and click the delete button or push the delete key.</p><p>If the range of a feature is an array or one of the built-in list types, an additional
+      specification allows you to specify if multiple references to the object referenced by
+      this feature are allowed. If they are not allowed then the XMI serialization of
+      instances of this type use a more efficient format.</p><p>If the range of a feature is an array of Feature Structures, then it is possible to
+      specify an element type for the array. This information is used in the XMI serialization
+      and also by the JCas generation routines to generate more efficient code.
+      
+      
+      </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="360"><tr><td><img src="../images/tools/tools.cde/image036.jpg" width="360" alt="Specifying a Feature Structure"></td></tr></table></div></div><p>It is also possible to import type systems for inclusion in your descriptor. To do
+      this, use the Type Import panel's<code class="literal"> Add...</code> button. This
+      allows you to import a type system descriptor.</p><p>When importing by name, the name is resolved using the class path for the Eclipse
+      project containing the descriptor file being edited, or by looking up this name in the
+      UIMA DataPath. The DataPath can be set by pushing the Set DataPath button. It will be
+      remembered for this Eclipse project, as a project Property, so you only have to set it
+      once (per project). The value of the DataPath setting is written just like a class path,
+      and can include directories or JAR files, just as is true for class paths.</p><p>The following dialog allows you to pick one or more files from the Eclipse
+      workspace, or one file (at a time) from the file system:
+      
+      
+      </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="300"><tr><td><img src="../images/tools/tools.cde/import-chooser.jpg" width="300" alt="Picking files for importing"></td></tr></table></div></div><p>This is essentially the same dialog as was used to add component engines to an
+      aggregate. To import from a type system descriptor that is not part of your Eclipse
+      workspace, click the Browse the file system.... button.</p><p>Imported types are validated, and if OK, they are added to the list in the Imported
+      Type Systems section of the Type System page. Any types they define are merged with the
+      existing type system.</p><p>Imported types and features which are only defined in imports are shown in the Type
+      System section, but in a grayed-out font; these type cannot be edited here. To change
+      them, open up the imported type system descriptor, and change them there.</p><p>If you hover the mouse over an import specification, it will show more information
+      about the import. If you right-click, it will bring up a context menu that allows opening
+      the imported file in the Editor, if the imported file is part of the Eclipse workspace.
+      Changes you make, however, won't be seen until you close and reopen the editor on
+      the importing file.</p><p>It is not possible to define types for an aggregate analysis engine. In this case the
+      type system is computed from the component AEs. The Type System information is shown in a
+      grayed-out font.</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ugr.tools.cde.type_system.exporting"></a>1.8.1.&nbsp;Exporting</h3></div></div></div><p>In addition to importing type specifications, you can export as well. When you
+        push the Export... button, the editor will create a new importable XML descriptor for
+        the types in this type system, and change the existing descriptor to import that newly
+        created one.
+        
+        
+        </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="360"><tr><td><img src="../images/tools/tools.cde/image040.jpg" width="360" alt="Exporting a type system"></td></tr></table></div></div><p>The base file name you type is inserted into the path in the line below
+        automatically. You can change the path where the generated part descriptor is stored
+        by overtyping the lower text box. When you click OK, the new part descriptor will be
+        generated, and the current descriptor will be changed to import that part.</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ugr.tools.cde.capabilities"></a>1.9.&nbsp;Capabilities Page</h2></div></div></div><p>Capabilities come in &#8220;<span class="quote">sets</span>&#8221;. You can have multiple sets of
+      capabilities; each one specifies languages supported, plus inputs and outputs of the
+      Analysis Engine. The idea behind having multiple sets is the concept that different
+      inputs can result in different outputs. Many Analysis Engines, though, will probably
+      define just one set of capabilities. A sample Capabilities page is given below:
+      
+      
+      </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="500"><tr><td><img src="../images/tools/tools.cde/image042.jpg" width="500" alt="Capabilities page"></td></tr></table></div></div><p>When defining the capabilities of a primitive analysis engine, input and output
+      types can be any type defined in the type system. When defining the capabilities of an
+      aggregate the inputs must be a subset of the union of the inputs in the constituent
+      analysis engines and the outputs must be a subset of the union of the outputs of the
+      constituent analysis engines.</p><p>To add a type, first select something in the set you wish to add the type to, and press
+      Add Type. The following dialog appears presenting the user with a list of types which are
+      candidates for additional inputs:
+      
+      
+      </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="360"><tr><td><img src="../images/tools/tools.cde/image044.jpg" width="360" alt="Adding a type to the capabilities page"></td></tr></table></div></div><p>Follow the instructions to mark the types as input and / or output (a type can be
+      both). By default, the &lt;all features&gt; flag is set to true. If you want to specify a
+      subset of features of a type, read on.</p><p>When types have features, you can specify what features are input and / or output. A
+      type doesn't have to be an output to have an output feature. For example, an
+      Analysis Engine might be passed as input a type Token, and it adds (outputs) a feature to
+      the existing Token types. If no new Token instances were created, it would not be an
+      output Type, but it would have features which are output.</p><p>To specify features as input and / or output (they can be both), select a type, and
+      press Add. The following dialog box appears:
+      
+      
+      </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="360"><tr><td><img src="../images/tools/tools.cde/image046.jpg" width="360" alt="Specifying features as input or output"></td></tr></table></div></div><p>To mark a feature as being input and / or output, click the mouse in the input and / or
+      output column for the feature. If you select &lt;all features&gt;, it unmarks any
+      individual feature you selected, since &lt;all features&gt; subsumes all the
+      features.</p><p>The Languages part of the capability is where you specify what languages are
+      supported by the Analysis Engine. Supported languages should be listed using either a
+      two letter ISO-639 language code, or an ISO-639 language code followed by a two-letter
+      ISO-3166 country code. Add a language by selecting Languages and pressing the Add
+      button. The dialog for adding languages is given below.
+      
+      
+      </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="360"><tr><td><img src="../images/tools/tools.cde/image048.jpg" width="360" alt="Specifying a language"></td></tr></table></div></div><p>The Sofa part of the capability is optional; it allows defining Sofa names that this
+      component uses, and whether they are input (meaning they are created outside of this
+      component, and passed into it), or output (meaning that they are created by this
+      component). Note that a Sofa can be either input or output, but can't be
+      both.</p><p>To add a Sofa name (which is synonymous with the view name), press the Add Sofa
+      button, and this dialog appears:
+      
+      
+      </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="360"><tr><td><img src="../images/tools/tools.cde/image050.jpg" width="360" alt="Specifying a Sofa name"></td></tr></table></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ugr.tools.cde.capabilities.sofa_name_mapping"></a>1.9.1.&nbsp;Sofa (and view) name mappings</h3></div></div></div><p>Sofa names, once created, are used in Sofa Mappings. These are optional
+        mappings, done in an aggregate, that specify which Sofas are the same ones but with
+        different names. The Sofa Mappings section is minimized unless you are editing an
+        Aggregate descriptor, and have one or more Sofa names defined for the aggregate. In
+        that case, the Sofa Mappings section will look like this:
+        
+        
+        </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="500"><tr><td><img src="../images/tools/tools.cde/image052.jpg" width="500" alt="Sofa mappings"></td></tr></table></div></div><p>Here the aggregate has defined two input Sofas, named
+        &#8220;<span class="quote">MyInputSofa</span>&#8221;, and &#8220;<span class="quote">AnotherSofa</span>&#8221;. Any named sofas in
+        the aggregate's capabilities will appear in the Sofa Mapping section, listed
+        either under Inputs or Outputs. Each name in the Mappings has 0 or more delegate
+        (component) sofa names mapped to it. A delegate may have multiple Sofas, as in this
+        example, where the GovernmentOfficialRecognizer delegate has Sofas named
+        &#8220;<span class="quote">so1</span>&#8221; and &#8220;<span class="quote">so2</span>&#8221;.</p><p>Delegate components may be written as Single-View components. In this case,
+        they have one implicit, default Sofa (&#8220;<span class="quote">_InitialView</span>&#8221;), and to map to
+        it you use the form shown for the &#8220;<span class="quote">NameRecognizer</span>&#8221; &#8211; you map to
+        the delegate's key name in the aggregate, without specifying a Sofa name. You
+        can also specify the sofa name explicitly, e.g.,
+        NameRecognizer/_InitialView.</p><p>To add a new mapping, select the Aggregate Sofa name you wish to add the mapping
+        for, and press the Add button. This brings up a window like this, showing all available
+        delegates and their Sofas; select one or more (use the normal multi-select methods)
+        of these and press OK to add them.
+        
+        
+        </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="657"><tr><td><img src="../images/tools/tools.cde/image054.jpg" width="657" alt="Adding a Sofa mapping"></td></tr></table></div></div><p>To edit an existing mapping, select the mapping and press Edit. This will show the
+        existing mapping with all mapped items &#8220;<span class="quote">selected</span>&#8221;, and other
+        available items unselected. Change the items selected to match what you want,
+        deselecting some, and perhaps selecting others, and press OK.</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ugr.tools.cde.indexes"></a>1.10.&nbsp;Indexes Page</h2></div></div></div><p>The Indexes page is where the user declares what indexes and type priority lists are
+      used by the analysis engine. Indexes are used to determine which Feature
+      Structures of a particular type are fetched, using an iterator in the UIMA API.  An
+      unpopulated Indexes page is displayed below:
+      
+      
+      </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="568"><tr><td><img src="../images/tools/tools.cde/image056.jpg" width="568" alt="Index page"></td></tr></table></div></div><p>Both indexes and type priority lists can have imports. These imports work just like
+      the type system imports, described above. Both indexes and type priority lists can be
+      exported to new component descriptors, using the Export... button, just like the type
+      system export operation described above.</p><p>The built-in Annotation Index is always present. It is based on the built-in type
+      <code class="literal">uima.tcas.Annotation </code>and has keys begin (Ascending), end
+      (Descending) and TYPE_PRIORITY. There are no built-in type priorities, so this last
+      sort item does not play a role in the index unless type priorities are specified.</p><p>Type priority may be combined with other keys. Type priorities are defined in the
+      Priority Lists section, using one or more priority list. A given priority list gives an
+      ordering among a group of types. Types that appear higher in the priority list are given
+      higher priority, in other words, they sort first when TYPE_PRIORITY is specified as the
+      index key. Subtypes of these types are also ordered in a consistent manner, unless
+      overridden by another specific type priority specification. To get the ordering used
+      among all the types, all of the type priority lists are merged. This gives a partial
+      ordering among the types. Ties are resolved in an unspecified fashion. The Component
+      Descriptor Editor checks for incompatible orderings, and informs the user if they
+      exist, so they can be corrected.</p><p>To create a new index, use the Add Index button in the top left section. This brings up
+      this dialog:
+      
+      
+      </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="360"><tr><td><img src="../images/tools/tools.cde/image058.jpg" width="360" alt="Adding a new index"></td></tr></table></div></div><p>Each index needs a globally unique index name. Every index indexes one CAS type (including
+      its subtypes). If you're using Eclipse 3.2 or later, the entry field for this 
+      has content assist (start typing the type name
+      and press Control &#8211; Spacebar to get help, or press the Browse button to pick a
+      type).</p><p>Indexes can be sorted, in which case you need to specify one or more keys to sort on.
+      Sort keys are selected from features whose range type is Integer, Float, or String. Some
+      elements will be disabled if they are not relevant. For instance, if the index kind is
+      &#8220;<span class="quote">bag</span>&#8221;, you cannot provide sort keys. The order of sort keys can be
+      adjusted using the up and down buttons, if necessary.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>There is usually no need to explicitly declare a Bag index in your descriptor.  
+              As of UIMA v2.1, if you do not declare any index for a type (or any of its 
+              supertypes), a Bag index will be automatically created.  This index is 
+       accessed using the <code class="literal">getAllIndexedFS(...)</code> method defined on the index repository.</p></div><p>A set index will contain no duplicates of the same type, where a duplicate is defined
+      by the indexing comparator. That is, if you commit two feature structures of the same
+      type that are equal with respect to the indexing comparator, only the first one will be
+      entered into the index. Note that you can still have duplicates with respect to the
+      indexing order, if they are of a different type. A set index is not guaranteed to be
+      sorted. If no keys are specified for a set index, then all instances are considered by
+      default to be equal, so only the first instance (for a particular type or subtype of the
+      type being indexed) is indexed. On the other hand, &#8220;<span class="quote">bag</span>&#8221; indicates that
+      all annotation instances are indexed, including duplicates.</p><p>The Priority Lists section of the Indexes page is used to specify Priority Lists of
+      types. Priority Lists are unnamed ordered sets of type names. Add a new priority list by
+      clicking the Add Set button. Add a type to an existing priority list by first selecting
+      the set, and then clicking Add. You can use the up and down buttons to adjust the order as
+      necessary; these buttons move the selected item up or down.</p><p>Although it is possible to import self-contained index and type priority files,
+      the creation of such files is not yet supported by the Component Descriptor Editor. If
+      you create these files using another editor, they can be imported using the
+      corresponding Import panels, shown on the right. Imports are specified in the same
+      manner as they are for Type System imports.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ugr.tools.cde.resources"></a>1.11.&nbsp;Resources Page</h2></div></div></div><p>The resources page describes resource dependencies (for primitive Analysis
+      Engines) and external Resource specification and their bindings to the resource
+      dependencies.</p><p>Only primitive Analysis Engines define resource dependencies. Primitive and
+      Aggregate Analysis Engines can define external resources and connect them (bind them)
+      to resource dependencies.</p><p>When an Aggregate is providing an external resource to be bound to a dependency, the
+      binding is specified using a possibly multi-level path, starting at the Aggregate, and
+      specify which component (by its key name), and then if that component is, in turn, an
+      Aggregate, which component (again by its key name), and so on until you reach a
+      primitive. The sequence of key names is made into the binding specification by joining
+      the parts with a &#8220;<span class="quote">/</span>&#8221; character. All of this is done for you by the Component
+      Descriptor Editor.</p><p>Any external resource provided by an Aggregate will override any binding provided
+      by any lower level component for the same resource dependency.</p><p>There are two views of the Resources page, depending on whether the Analysis Engine
+      is an Aggregate or Primitive. Here's the view for a Primitive:
+      
+      
+      </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="515"><tr><td><img src="../images/tools/tools.cde/image060.jpg" width="515" alt="Resources page for a primitive"></td></tr></table></div></div><p>To declare a resource dependency, click the Add button in the right hand panel. This
+      puts up the dialog:
+      
+      
+      </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="396"><tr><td><img src="../images/tools/tools.cde/image062.jpg" width="396" alt="Specifying a resource dependency"></td></tr></table></div></div><p>The Key must be unique within the descriptor declaring it. The Interface, if
+      present, is the name of a Java interface the Analysis Engine uses to access the
+      resource.</p><p>Declare actual External resource on the left side of the page. Clicking
+      &#8220;<span class="quote">Add</span>&#8221; brings up this dialog:
+      
+      
+      </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="396"><tr><td><img src="../images/tools/tools.cde/image064.jpg" width="396" alt="Specifying an External Resource"></td></tr></table></div></div><p>The Name must be unique within this Analysis Engine. The URL identifies a file
+      resource. If both the URL and URL suffix are used, the file resource is formed by
+      combining the first URL part with the language-identifier, followed by the URL suffix;
+      see <a href="../references/references.html#ugr.ref.xml.component_descriptor.aes.primitive.resource_manager_configuration" class="olink">Section&nbsp;2.4.1.11, &#8220;Resource Manager Configuration&#8221;</a> in <span class="olinkdocname">UIMA References</span>
+      . URLs may be written as &#8220;<span class="quote">relative</span>&#8221; URLs; in this case they are resolved by
+      looking them up relative to the classpath and/or datapath. A relative URL has the path
+      part starting without an intial &#8220;<span class="quote">/</span>&#8221;; for example:
+      file:my/directory/file. An absolute URL starts with file:/ or file:/// or
+      file://some.network.address/. For more information about URLs, please read the
+      javaDoc information for the Java class &#8220;<span class="quote">URL</span>&#8221;.</p><p>The Implementation is optional, and if given, must be a Java class that implements
+      the interface specified in any Resource Dependencies this resource is bound
+      to.</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ugr.tools.cde.resources.binding"></a>1.11.1.&nbsp;Binding</h3></div></div></div><p>Once you have an external resource definition, and a Resource Dependency, you
+        can bind them together. To do this, you select the two things (an external resource
+        definition, and a Resource Dependency) that you want to bind together, and click
+        Bind.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ugr.tools.cde.resources.aggregates"></a>1.11.2.&nbsp;Resources with Aggregates</h3></div></div></div><p>When editing an Aggregate Descriptor, the Resource definitions panel will show
+        all the resources at the primitive level, with paths down through the components
+        (multiple levels, if needed) to get to the primitives. The Aggregate can define
+        external resources, and bind them to one or more uses by the primitives.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ugr.tools.cde.resources.imports_exports"></a>1.11.3.&nbsp;Imports and Exports</h3></div></div></div><p>Resource definitions and their bindings can be imported, just like other
+        imports. Existing Resource definitions and their bindings can be exported to a new
+        importable part, and replaced with an import for that importable part, using the
+        &#8220;<span class="quote">Export...</span>&#8221; button, just like the similar function on the Type System
+        page.</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ugr.tools.cde.source"></a>1.12.&nbsp;Source Page</h2></div></div></div><p>The Source page is a text view of the xml content of the Analysis Engine or Type System
+      being configured. An example of this page is displayed below:
+      
+      
+      </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="576"><tr><td><img src="../images/tools/tools.cde/image066.jpg" width="576" alt="Source page"></td></tr></table></div></div><p>Changes made in the GUI are immediately reflected in the xml source, and changes
+      made in the xml source are immediately reflected back in the GUI. The thought here is that
+      the GUI view and the Source view are just two ways of looking at the same data. When the data
+      is in an unsaved state the file name is prefaced with an asterisk in the currently
+      selected file tab in the editor pane inside Eclipse (as in the example above).</p><p>You may accidentally create invalid descriptors or XML by editing directly in the
+      Source view. If you do this, when you try and save or when you switch to a different view,
+      the error will be detected and reported. In the case of saving, the file will be saved,
+      even if it is in an error state.</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ugr.tools.cde.source.formatting"></a>1.12.1.&nbsp;Source formatting &#8211; indentation</h3></div></div></div><p>The XML is indented using an indentation amount saved as a global UIMA
+        preference. To change this preference, use the Eclipse menu item: Windows <span class="symbol">&#8594;</span>
+        Preferences <span class="symbol">&#8594;</span> UIMA Preferences.</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ugr.tools.cde.creating_self_contained_type_system"></a>1.13.&nbsp;Creating a Self-Contained Type System</h2></div></div></div><p>It is also possible to use the Component Descriptor Editor to create or edit
+      self-contained type systems. To create a self-contained type system, select the menu
+      item File <span class="symbol">&#8594;</span> New <span class="symbol">&#8594;</span> Other and then select Type System Descriptor File. From the
+      next page of the selection wizard specify a Parent Folder and File name and click Finish.
+      
+      
+      </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="300"><tr><td><img src="../images/tools/tools.cde/image068.jpg" width="300" alt="Working with a self-contained type system"></td></tr></table></div></div><p>
+      
+      
+      </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="300"><tr><td><img src="../images/tools/tools.cde/image070.jpg" width="300"></td></tr></table></div></div><p>This will take you to a version of the Component Descriptor Editor for editing a type
+      system file which contains just three pages: an overview page, a type system page, and a
+      source page. The overview page is a bit more spartan than in the case of an AE. It looks like
+      the following:
+      
+      
+      </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="300"><tr><td><img src="../images/tools/tools.cde/image072.jpg" width="300" alt="Editing a type system object"></td></tr></table></div></div><p>Just like an AE has an associated name, version, vendor and description, the same is
+      true of a self-contained type system. The Type System page is identical to that in an AE
+      descriptor file, as is the Source page. Note that a self-contained type system can
+      import type systems just like the type system associated with an AE.</p><p>A type system component can also be created from an existing descriptor which
+      contains a type system definition section, by clicking on the Export... button on the
+      Type System page.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ugr.tools.cde.creating_other_descriptor_components"></a>1.14.&nbsp;Creating Other Descriptor Components</h2></div></div></div><p>The new wizard can create several other kinds of components: Collection
+      Processing Management (CPM) components, flow controllers, and importable parts
+      (besides Type Systems, described above, Indexes, Type Priorities, and Resource
+      Manager Configuration imports).</p><p>The CPM components supported by this editor include the Collection Reader, CAS
+      Initializer, and CAS Consumer descriptors. Each of these is basically treated just
+      like a primitive AE descriptor, with small changes to accommodate the different
+      semantics. For instance, a CAS Consumer can't declare in its capabilities
+      section that it outputs types or features.</p><p>Flow controllers are components that control the flow of CASes within an
+      aggregate, an are edited in a similar fashion as a primitive Analysis Engine.</p><p>The importable part support requires context information to enable the editor to
+      work, because much of the power of this editor comes from extensive checking that
+      requires additional information, other than what is available in just the importable
+      part. For instance, when you create or edit an Indexes import, the facility for adding
+      new indexes needs the type information, which is not present in this part when it is
+      edited alone. To overcome this, when you edit these descriptors, you will be asked to
+      specify a context descriptor, usually a descriptor which would import the part being
+      edited, which would have the additional information needed. Various methods are used
+      to guess what the context descriptor should be - and if the guess is correct, you can just
+      press the Enter key to confirm. The last successful context file is remembered and will
+      be suggested as the context file to use at the next edit session</p></div></div><div class="chapter" lang="en" id="ugr.tools.cpe"><div class="titlepage"><div><div><h2 class="title"><a name="ugr.tools.cpe"></a>Chapter&nbsp;2.&nbsp;Collection Processing Engine Configurator User's Guide</h2></div></div></div><p>A <span class="emphasis"><em>Collection Processing Engine (CPE)</em></span> processes
+    collections of artifacts (documents) through the combination of the following
+    components: a Collection Reader, Analysis Engines, and CAS Consumers.
+    <sup>[<a name="d0e961" href="#ftn.d0e961">1</a>]</sup>
+    </p><p>The <span class="emphasis"><em>Collection Processing Engine Configurator(CPE
+    Configurator)</em></span> is a graphical tool that allows you to assemble and run
+    CPEs.</p><p>For an introduction to Collection Processing Engine concepts, including
+    developing the components that make up a CPE, read <a href="../tutorials_and_users_guides/tutorials_and_users_guides.html#ugr.tug.cpe" class="olink">Chapter&nbsp;2, Collection Processing Engine Developer's Guide
+      </a> in <span class="olinkdocname">UIMA Tutorial and Developers' Guides</span>. This
+    chapter is a user's guide for using the CPE Configurator tool, and does not describe
+    UIMA's Collection Processing Architecture itself.</p><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ugr.tools.cpe.limitations"></a>2.1.&nbsp;Limitations of the CPE Configurator</h2></div></div></div><p>The CPE Configurator only supports basic CPE configurations.</p><p>It only supports &#8220;<span class="quote">Integrated</span>&#8221; deployments (although it will
+      connect to remotes if particular CAS Processors are specified with remote service
+      descriptors). It doesn't support configuration of the error handling. It
+      doesn't support Sofa Mappings; it assumes all Single-View components are
+      operating with the _InitialView Sofa. Multi-View components will not have their names
+      mapped. It sets up a fixed-sized CAS Pool.</p><p>To set these additional options, you must edit the CPE Descriptor XML file
+      directly.  See <a href="../references/references.html#ugr.ref.xml.cpe_descriptor" class="olink">Chapter&nbsp;3, Collection Processing Engine Descriptor Reference
+      </a> in <span class="olinkdocname">UIMA References</span> for the syntax.
+      You may then open the CPE Descriptor in the CPE Configurator and run it.  The changes
+      you applied to the CPE Descriptor <span class="emphasis"><em>will</em></span> be respected, although you
+      will not be able to see them or edit them from the GUI.
+    </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ugr.tools.cpe.starting"></a>2.2.&nbsp;Starting the CPE Configurator</h2></div></div></div><p>The CPE Configurator tool can be run using the <code class="literal">cpeGui</code> shell
+      script, which is located in the <code class="literal">bin</code> directory of the UIMA SDK. If
+      you've installed the example Eclipse project (see <a href="../overview_and_setup/overview_and_setup.html#ugr.ovv.eclipse_setup.example_code" class="olink">Section&nbsp;3.2, &#8220;Setting up Eclipse to view Example Code&#8221;</a> in <span class="olinkdocname">Overview &amp; Setup</span>, you can also run it using the
+      &#8220;<span class="quote">UIMA CPE GUI</span>&#8221; run configuration provided in that project.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>If you are planning to build a CPE using components other than the examples
+    included in the UIMA SDK, you will first need to update your CLASSPATH environment
+    variable to include the classes needed by these components.</p></div><p>When you first start the CPE Configurator, you will see the main window shown here:
+      
+      
+      </p><div class="screenshot"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="573"><tr><td><img src="../images/tools/tools.cpe/image002.jpg" width="573" alt="CPE Configurator main GUI window"></td></tr></table></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ugr.tools.cpe.selecting_component_descriptors"></a>2.3.&nbsp;Selecting Component Descriptors</h2></div></div></div><p>The CPE Configurator's main window is divided into three sections, one each for the Collection

[... 896 lines stripped ...]