<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed 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.
-->
<cas:elements xmlns:cas="http://oodt.jpl.nasa.gov/1.0/cas">
   <element id="urn:oodt:InputFiles" name="InputFiles">
        <!--  
         You can optionally specify a 'trim' tag to identify whether
         or not you want newlines trimmed from the element description. To
         turn off trimming (now done by default), include the following with your
         description definition: trim="false"       
         -->   
       <description>The set of input files that went into producing this file.</description>
       <dcElement/>
   </element>
   <element id="urn:oodt:OutputFiles" name="OutputFiles">
        <description>The set of output files that included this file in its input.</description>
        <dcElement/>
   </element>
   
   <element id="urn:oodt:JobId" name="JobId">
       <description>The unique identifier generated by the workflow manager for the job
       that produced this file.</description>
       <dcElement/>   
   </element>
   
   <element id="urn:oodt:ProductionDateTime" name="ProductionDateTime">
       <description>The date/time stamp that this file was produced either by ingestion 
       or processing.</description>
       <dcElement/>
   </element>
   
   <element id="urn:oodt:ExecutablePathnames" name="ExecutablePathnames">
    <description>The pathnames to the exectuables used to generate this product.</description>
    <dcElement/>
  </element>

  <element id="urn:oodt:ExecutableVersions" name="ExecutableVersions">
    <description>The versions of the exectuables used to generate this product.</description>
    <dcElement/>
  </element>

  <element id="urn:oodt:ApplicationSuccessFlag" name="ApplicationSuccessFlag">
    <description>An indication of whether the generating application completed
      successfully.</description>
    <dcElement/>
  </element>
  
  <element id="urn:oodt:TaskSuccessFlag" name="TaskSuccessFlag">
    <description>An indication of whether the PCS Workflow Task that ran the PGE completed
      successfully.</description>
    <dcElement/>
  </element>

  <element id="urn:oodt:JobSuccessFlag" name="JobSuccessFlag">
    <description>An indication of whether the PCS job ran by the PCS to create the product completed
      successfully.</description>
    <dcElement/>
  </element>
  
  <element id="urn:oodt:PGEVersion" name="PGEVersion">
    <description>Captures the version of the algorithm that has been run on the data.</description>
    <dcElement/>
  </element>

  <element id="urn:oodt:ProcessingNode" name="ProcessingNode">
    <description>The node that the job that produced this product was run on.</description>
    <dcElement/>
  </element>
     
 <element id="urn:oodt:ExecutionTime" name="ExecutionTime">
    <description>The amount of time that the job that produced this product took to run.</description>
    <dcElement/>
 </element>

  <element id="urn:oodt:CmdLineParameters" name="CmdLineParameters">
    <description>The command line parameters that were used to invoke this job.</description>
    <dcElement/>
  </element>  
    
   
</cas:elements>
