<!--
  - Authors:
  -   Christian Schulte <schulte@ps.uni-sb.de>
  -
  - Copyright:
  -   Christian Schulte, 1998
  -
  - Last change:
  -   $Date$ by $Author$
  -   $Revision$
  -
  - This file is part of Mozart, an implementation
  - of Oz 3
  -    http://www.mozart-oz.org
  -
  - See the file "LICENSE" or
  -    http://www.mozart-oz.org/LICENSE.html
  - for information on usage and redistribution
  - of this file, and for a DISCLAIMER OF ALL
  - WARRANTIES.
  -
  -->

<Chapter id="chapter.jobshop">
  <Title/Job-Shop Scheduling/
  <Author.Extern to="author.db" key="Christian.Schulte">

  <P>
    <List class=linkmenu>
      <Item><Ref.Extern to="applets/JobShop.oza"/Start Applet/
      <Item>
	<Ref.extern to="ozdoc:install" key="appendix.applets"/How to enable Applets/
    </List>

  <P>
    The scheduler allows to <Ref to="section.jobshop.edit"/edit/
    job-shop scheduling problems and to compute 
    <Ref to="section.jobshop.schedule"/schedules/
    for the edited problem.

  <p>
    The applet makes use of scheduling propagators and distributors. More 
    information 
    on scheduling in Oz you can find in 
    <ptr.extern to="ozdoc:fdt" key="chapter.scheduling">.

  <Section class=unnumbered id="section.jobshop.edit">
    <Title/Edit Jobs/

    <P>
      <List>
        <Entry>Resource
        <Item>
	  Clicking a resource selects it and makes the resource tool
          active.  While the resource tool is active, the resource of
          a task can be changed by clicking the task.
        <Entry>Duration
        <Item>
	  Clicking a duration value selects this value and makes the
	  duration tool active. While the duration tool is active, the
	  duration of a task can be changed to the selected value by
	  clicking the task. 
	<Entry>Create Task
        <Item>	
          After clicking this tool, new tasks can be
	  created. Newly created tasks are created as being
	  the last task of a job.  The resource and duration
	  of a newly created task is described by the
	  setting of the Resource- and Duration-tool.
	<Entry>Delete Task
	<Item>
	  After clicking this tool, tasks can be 
	  deleted by clicking them.
      </List>     
    </P>
  </Section>

  <Section class=unnumbered id="section.jobshop.schedule">
    <Title/Schedule Jobs/
    <P>   
      <List>
        <Entry>Reset
	<Item>
          Resets the scheduling engine.
	<Entry>Next
        <Item>
	  Searches for a next schedule and displays the
	  schedule found and its maximal span.  Search can
	  be interrupted by clicking
	  <<Stop>>.
	<Entry>Best
        <Item>
	  Searches for a best schedule and displays the
	  schedule found and its maximal span. All schedules
	  found in between are displayed together with their
	  maximal span.  Search can be interrupted by
	  clicking <<Stop>>.
	<Entry>Stop
        <Item>	
	  Stops the search for a next or a best
	  schedule.
	<Entry>Search Tree
        <Item>
	  Displays the search tree of the scheduling
	  problem in the Oz Explorer (see also <ptr.extern to="ozdoc:explorer">).
      </List>
     </P>
   </Section>

  <section class=unnumbered id="section.jobshop.implementation">
    <title/Implementation/

    <subsection class=unnumbered id=code.jobshop.main>
      <title>Root functor: <file/Main.oz/</title>
      <para><title><ref.extern to="JobShop/Main.oz">Source
File</ref.extern></title>
<code.extern display to="JobShop/Main.oz" proglang=oz></para>
    </subsection>

    <subsection class=unnumbered id=code.jobshop.compiler>
      <title>Compiler to create scheduling scripts: <file/Compiler.oz/</title>
      <para><title><ref.extern to="JobShop/Compiler.oz">Source
File</ref.extern></title>
<code.extern display to="JobShop/Compiler.oz" proglang=oz></para>
    </subsection>

    <subsection class=unnumbered id=code.jobshop.examples>
      <title>Example problems: <file/Examples.oz/</title>
      <para><title><ref.extern to="JobShop/Examples.oz">Source
File</ref.extern></title>
<code.extern display to="JobShop/Examples.oz" proglang=oz></para>
    </subsection>

    <subsection class=unnumbered id=code.jobshop.scheduler>
      <title>Scheduling interface: <file/Scheduler.oz/</title>
      <para><title><ref.extern to="JobShop/Scheduler.oz">Source
File</ref.extern></title>
<code.extern display to="JobShop/Scheduler.oz" proglang=oz></para>
    </subsection>

    <subsection class=unnumbered id=code.jobshop.taskboard>
      <title>Widget to display and edit tasks: <file/TaskBoard.oz/</title>
      <para><title><ref.extern to="JobShop/TaskBoard.oz">Source
File</ref.extern></title>
<code.extern display to="JobShop/TaskBoard.oz" proglang=oz></para>
    </subsection>

    <subsection class=unnumbered id=code.jobshop.tools>
      <title>Graphical tools to manipulate tasks: <file/Tools.oz/</title>
      <para><title><ref.extern to="JobShop/Tools.oz">Source
File</ref.extern></title>
<code.extern display to="JobShop/Tools.oz" proglang=oz></para>
    </subsection>

    <subsection class=unnumbered id=code.jobshop.configure>
      <title>Predefinied values: <file/Configure.oz/</title>
      <para><title><ref.extern to="JobShop/Configure.oz">Source
File</ref.extern></title>
<code.extern display to="JobShop/Configure.oz" proglang=oz></para>
    </subsection>


</Chapter>
