﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="../scheduler.xsl" type="text/xsl"?>

<!--$Id: process_class.xml,v 1.6 2004/09/06 07:53:28 jz Exp $-->

<!--         title    = "Prozessklasse"-->

<xml_element name     = "process_class" 
             title    = "Process classes"
             category = "Configuration"
             base_dir = "../"
             parent_page = "../konfiguration.xml"
             author   = "$Author: jz $"
             date     = "$Date: 2008-02-04 22:24:31 +0100 (Mo, 04 Feb 2008) $">

    <description>
        <p>
            Defines or modifies a process class.
        <!--Definiert oder ändert eine Prozessklasse.-->
        </p>
        <p>
            See also <scheduler_element name="process_class.remove"/>.
        <!--Siehe auch <scheduler_element name="process_class.remove"/>.-->
        </p>
    </description>

    <xml_parent_elements>
        <xml_parent_element name="process_classes">
        </xml_parent_element>
    </xml_parent_elements>

    <xml_attributes>
        <xml_attribute setting="spooler_id"/>
        
        <xml_attribute name="name" type="name">
            <description>
                <p>
                    The name of the process class. Should this attribute be missing or empty (<code>""</code>)
                    then the default process class will be changed.
                <!--Name der Prozessklasse. Wenn das Attribut fehlt oder leer (<code>""</code>) ist,
                    dann wird die Default-Prozessklasse geändert.-->
                </p>
                <p>
                    See the <code>process_class=</code> attribute of the <scheduler_element name="job"/> element.
                <!--Siehe <scheduler_element name="job"/>, Attribut <code>process_class=</code>.-->
                </p>
            </description>
        </xml_attribute>

        <xml_attribute name="max_processes" type="number" initial="30">
   <!-- <xml_attribute name="max_processes" type="zahl" initial="30">-->
            <description>
                <p>
                    Limits the number of processes.
                <!--Begrenzt die Zahl der Prozesse.-->
                </p>
                <p>
                    Some operating systems limit the number of processes which the Job Scheduler can start.
                    The number of processes configured here should not exceed the number allowed by the operating system.
                    A value below 64 is usually safe.
                <!--Manche Betriebsysteme limitieren die Zahl der Prozesse, die der Scheduler starten darf.
                    Es sollten nicht mehr Prozesse konfiguriert werden als das Betriebssystem erlaubt.-->
                </p>
                <p>
                    For Microsoft Windows systems, the maximum number of processes 
                    that are allowed to be executed in parallel is currently 30.
                <!--Für Microsoft Windows Betriebssysteme gilt derzeit eine Beschränkung von max. 30
                    für die parallele Ausführung zugelassenen Prozessen.-->
                </p>
            </description>
        </xml_attribute>   

        <xml_attribute name="remote_scheduler" type="host:port" title="Task execution on remote computers">
    <!--<xml_attribute name="remote_scheduler" type="host:port" title="Ausführung der Tasks auf entferntem Rechner">-->
            <description>
                <p>
                    Specifies the remote computer 
                    on which the tasks of this process class are to be executed.
                    This computer is specified using its host name or IP number and TCP port
                    (see <scheduler_element name="config" attribute="tcp_port"/>).
                <!--Bestimmt den entfernten Scheduler,
                    auf dem die Tasks dieser Prozessklasse ausgeführt werden sollen,
                    durch Hostnamen oder IP-Nummer und TCP-Port
                    (s. <scheduler_element name="config" attribute="tcp_port"/>).-->
                </p>
                <p>
                    The remote computer must allow access with
                    <scheduler_element name="allowed_host" attribute="level" value="all"/>.
                <!--Der entfernte Scheduler muss den Zugriff mit
                    <scheduler_element name="allowed_host" attribute="level" value="all"/> erlauben.-->
                </p>
                <p>
                    Tasks executed communicate with the controlling Job Scheduler via the API.
                    However, the following points should be noted:
                <!--Die ausgeführten Tasks kommunizieren über die API mit dem steuernden Scheduler.
                    Dabei gibt es einige Besonderheiten:-->
                </p>
                <ul>
                    <li>
                        <scheduler_element name="include"/> within <scheduler_element name="script"/> 
                        is executed by a task process.
                        The file to be included is thereby read by the computer which carries out the task.
                    <!--<scheduler_element name="include"/> innerhalb von <scheduler_element name="script"/> wird vom Task-Prozess ausgeführt.
                        Die einzuschließende Datei wird also vom Rechner, der die Task ausführt, gelesen.-->
                    </li>
                    <li>
                        The <scheduler_method class="Subprocess" property="timeout"/> and 
                        <scheduler_method class="Task" object="spooler_task" method="add_pid"/> 
                        methods do not work.
                        The Job Scheduler cannot terminate remote subprocesses whose time limits have been exceeded.
                    <!--<scheduler_method class="Subprocess" property="timeout"/> und 
                        <scheduler_method class="Task" object="spooler_task" method="add_pid"/> wirken nicht.
                        Der Scheduler kann entfernte Subprozesse, deren Frist abgelaufen ist, nicht abbrechen.-->
                    </li>
                    <li>
                        <scheduler_method class="Log" method="log_file"/> is,
                        as with almost all methods, carried out on the computer on which the Job Scheduler is running
                        and thereby accesses the files of its local file system.
                    <!--<scheduler_method class="Log" method="log_file"/> wird,
                        wie fast alle Methoden, auf dem Rechner des Schedulers ausgeführt,
                        greift also auf die Dateien des dortigen Dateisystems zu.-->
                    </li>
                </ul>
                <p>
                    Some settings are taken from the remote instead of from the controlling Job Scheduler:
                <!--Einige Einstellungen werden vom entfernten statt vom eigenen Scheduler übernommen:-->
                </p>
                <ul>
                    <li>
                        <scheduler_ini_entry file="sos.ini" section="java" entry="javac"/>
                    </li>
                    <li>
                        <scheduler_ini_entry file="factory.ini" section="spooler" entry="tmp"/>
                    </li>
                    <li>
                        <scheduler_element name="config" attribute="java_options"/>
                    </li>
                    <li>
                        <scheduler_element name="config" attribute="java_class_path"/>
                    </li>
                    <li>
                        <scheduler_element name="config" attribute="include_path"/>
                    </li>
                </ul>
            </description>
            
            <messages>
                <message level="info" code="SCHEDULER-848"/>
                <message level="warn" code="SCHEDULER-849"/>
                <message level="warn" code="SCHEDULER-850"/>
            </messages>
        </xml_attribute>

        <xml_attribute name="replace" type="yes|no" initial="yes">
            <description>
                <p>
                    <code>replace="yes"</code> replaces the existing process class.
                <!--<code>replace="yes"</code> ersetzt die vorhandene Prozessklasse.-->
                </p>
                <p>
                    <code>replace="no"</code> only changes the attributes which are set by the process class.
                <!--<code>replace="no"</code> ändert nur die gesetzten Attribute der Prozessklasse.-->
                </p>
            </description>
        </xml_attribute>

    </xml_attributes>
    
    
    <behavior_with_xml_element element="base" complete="yes"/>
</xml_element>
