<div class="section" id="overview">
<span id="index-0"></span><span id="id1"></span>
<p>This section gives an overview of the steps involved in using ecFlow.</p>
<div class="section" id="write-a-suite-definition">
<h2>Write a suite definition<a class="headerlink" href="#write-a-suite-definition" title="Permalink to this headline">¶</a></h2>
<p>The <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-suite-definition"><em class="xref std std-term">suite definition</em></a> defines how your tasks run and interact.
<a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-task"><em class="xref std std-term">task</em></a> s are placed in families, which themselves may be placed in families
and/or <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-suite"><em class="xref std std-term">suite</em></a> s. All the entities are called <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-node"><em class="xref std std-term">node</em></a> s and form a
hierarchical tree.</p>
<p>There are two main methods for describing a <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-suite-definition"><em class="xref std std-term">suite definition</em></a> to the <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-ecflow-server"><em class="xref std std-term">ecflow_server</em></a>.</p>
<ul>
<li><p class="first">via a <strong>text</strong> <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-suite-definition"><em class="xref std std-term">suite definition</em></a></p>
<p>The grammar of this text definition is described by <a class="reference internal" href="/wiki/display/ECFLOW/Definition+file+Grammar#grammer"><em>Definition file Grammar</em></a>.
This grammar does not support conditional statements (such as if,while,for)
nor the ability to define functions. However, the text definition file can
be generated/created using any language which in itself supports conditional statements.
The text definition is similar to that offered by SMS/CDP and as such may be an
appropriate migration path for some.</p>
</li>
<li><p class="first">via a <strong>python</strong> <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-suite-definition"><em class="xref std std-term">suite definition</em></a></p>
<p>This allows more checking and functionality and as
such is our <strong>preferred</strong> method. See <a class="reference internal" href="/wiki/display/ECFLOW/ecFlow+Python+Api#python-api"><em>ecFlow Python Api</em></a>.</p>
</li>
</ul>
</div>
<div class="section" id="write-your-scripts">
<h2>Write your scripts<a class="headerlink" href="#write-your-scripts" title="Permalink to this headline">¶</a></h2>
<p><a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-ecf-script"><em class="xref std std-term">ecf script</em></a> will correspond with the <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-task"><em class="xref std std-term">task</em></a> in the <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-suite-definition"><em class="xref std std-term">suite definition</em></a>.
The script defines the <strong>main work</strong> that is to be carried out.
The script includes <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-child-command"><em class="xref std std-term">child command</em></a> s and special comments and manual sections
that provides information for operators.</p>
<p>The <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-child-command"><em class="xref std std-term">child command</em></a> s are a restricted set of <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-ecflow-client"><em class="xref std std-term">ecflow_client</em></a> commands that communicate with
the <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-ecflow-server"><em class="xref std std-term">ecflow_server</em></a>. They inform the server when the job has started, completed or
set some <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-event"><em class="xref std std-term">event</em></a>.</p>
</div>
<div class="section" id="start-a-server">
<h2>Start a server<a class="headerlink" href="#start-a-server" title="Permalink to this headline">¶</a></h2>
<p>After <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-ecflow-server"><em class="xref std std-term">ecflow_server</em></a> is started, the <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-suite-definition"><em class="xref std std-term">suite definition</em></a>, can then be loaded into it.</p>
<ul class="simple">
<li>The user then initiates <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-scheduling"><em class="xref std std-term">scheduling</em></a> in the <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-ecflow-server"><em class="xref std std-term">ecflow_server</em></a></li>
<li><a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-scheduling"><em class="xref std std-term">scheduling</em></a> will check <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-dependencies"><em class="xref std std-term">dependencies</em></a> in the <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-suite-definition"><em class="xref std std-term">suite definition</em></a>
every minute. If these <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-dependencies"><em class="xref std std-term">dependencies</em></a> are free, the server will submit the <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-task"><em class="xref std std-term">task</em></a>.
This process is called <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-job-creation"><em class="xref std std-term">job creation</em></a>. The running process corresponding to the
<a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-task"><em class="xref std std-term">task</em></a> is referred to as a job.</li>
</ul>
<p>The running jobs will communicate back to the server using <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-child-command"><em class="xref std std-term">child command</em></a> s.
These cause:</p>
<ul class="simple">
<li><a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-status"><em class="xref std std-term">status</em></a> changes on the <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-node"><em class="xref std std-term">node</em></a> s held in the server.</li>
<li>update to attributes of a node (i.e like <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-event"><em class="xref std std-term">event</em></a> s, <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-meter"><em class="xref std std-term">meter</em></a> s and <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-label"><em class="xref std std-term">label</em></a> s)</li>
</ul>
</div>
<div class="section" id="use-the-gui">
<h2>Use the GUI<a class="headerlink" href="#use-the-gui" title="Permalink to this headline">¶</a></h2>
<p>ecFlow has a specialised GUI client, called <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-ecflowview"><em class="xref std std-term">ecflowview</em></a>. This is used to
visualise and monitor:</p>
<ul class="simple">
<li>The hierarchical structure of the <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-suite-definition"><em class="xref std std-term">suite definition</em></a>. (<a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-suite"><em class="xref std std-term">suite</em></a>, <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-family"><em class="xref std std-term">family</em></a>, <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-task"><em class="xref std std-term">task</em></a>)</li>
<li>state changes in the nodes and server.</li>
<li>Attributes of the nodes and any <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-dependencies"><em class="xref std std-term">dependencies</em></a>.</li>
<li><a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-ecf-script"><em class="xref std std-term">ecf script</em></a> file and the expanded <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-job-file"><em class="xref std std-term">job file</em></a>.</li>
</ul>
<p>In addition <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-ecflowview"><em class="xref std std-term">ecflowview</em></a> provides a rich set of <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-ecflow-client"><em class="xref std std-term">ecflow_client</em></a> commands that can interact with
the server.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">The following tutorial will show examples in plain text and python.
However it is recommended that you use python, since the later tutorial
examples use conditionals like ‘if’ and looping constructs.</p>
</div>
</div>
</div>
|