<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more contributor
license agreements.  See the NOTICE.txt 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.
-->
<!-- FIXME: Change namespace URI? -->
<cas:workflowlifecycles xmlns:cas="http://oodt.jpl.nasa.gov/1.0/cas">
<!-- 
  To preserve backwards compatibility. In this
       case, the given description will simply be the 
       provided status name.
       
     As of Apache OODT 0.4, statuses in this file can 
     also take the form:
     
       &lt;status name=&quot;Name&quot;&gt;
        &lt;description&gt;Description&lt;/description&gt;   
       &lt;/status&gt;
       
 -->
<default>
  <stage name="setup">
    <status>QUEUED</status>
    <status>CREATED</status>
  </stage>
  <stage name="met_check">
    <status>METMISS</status>
  </stage>
  <stage name="precond_check">
    <status>PAUSED</status>  
  </stage>
  <stage name="workflow_start">
    <status>RSUBMIT</status>
    <status>STARTED</status>
  </stage>
  <stage name="completion">
    <status>FINISHED</status>
  </stage>
</default>

<!-- 
  Lifecycles can also be specified at the 
  Workflow Id level, by starting with a 
  <lifecycle name="" workflowId="some_id">
    
    declaration, and then using the stage
    and status tags appropriately as shown
    above
    
  </lifecycle>
 -->
</cas:workflowlifecycles>
