Zschimmer GmbH Impressum und Kontakt

Job Scheduler     Erste Seite

  XML     API     Register


logo

Job_chain - Programmschnittstelle (API)

JavaJavaScriptVBScriptPerl Javadoc
   

Job_chain  –  Jobkette zur Auftragsverarbeitung

 

void  job_chain.add_end_state( state ) Fügt der Jobkette einen Endknoten hinzu
 
void  job_chain.add_job( job_name, input_state, output_state, error_state ) Erweitert die Jobkette um einen Job
 
void  job_chain.add_or_replace_order( Order ) Gibt einen Auftrag in die Jobkette und ersetzt ggfs. einen mit gleicher Kennung
 
void  job_chain.add_order( order ) Gibt einen Auftrag in die Jobkette
 
void  job_chain.set_name( String ) Name der Jobkette
String   job_chain.name()
 
Job_chain_node   job_chain.node( state ) Der Jobkettenknoten zum angegebenen Zustand
 
int   job_chain.order_count() Anzahl der Aufträge in der Jobkette
 
Order_queue   job_chain.order_queue( state ) = node(state).job().order_queue()
 
void  job_chain.set_orders_recoverable( boolean )
boolean   job_chain.orders_recoverable()
 
void  job_chain.remove() Entfernt die Jobkette
 
void  job_chain.set_title( String )
String   job_chain.title()

Beispiel  

Job_chain my_job_chain = spooler.create_job_chain();
my_job_chain.set_name( "Jobkette" );
my_job_chain.add_job( "job_100", 100,  200, 999 );
my_job_chain.add_job( "job_200", 200, 1000, 999 );
my_job_chain.add_end_state(  999 );
my_job_chain.add_end_state( 1000 );
spooler.add_job_chain( my_job_chain );

 

Eine Jobkette (Job_chain) ist eine Kette von Jobs (Jobkettenknoten oder Stellen). Diese Kette wird von Aufträgen (Order) durchlaufen.

Jeder Stelle in der Jobkette ist ein Zustand und ein Job zugeordnet. Wenn ein Auftrag der Jobkette hinzugefügt wird, setzt der Scheduler ihn an die seinem Zustand entsprechende Stelle. Der dieser Stelle zugeordnete Job führt den Auftrag aus.

Jede Stelle hat außerdem einen Folgezustand und einen Fehlerzustand. Nach der Verarbeitung eines Auftrags durch einen Jobschritt ändert der Scheduler den Zustand des Auftrags. Wenn der Jobschritt (spooler_process) true liefert, stellt der Scheduler den Folgezustand, sonst den Fehlerzustand ein. Der Auftrag rutscht damit an eine andere Stelle der Jobkette, die dem neuen Zustand zugeordnet ist. Das gilt nicht, wenn der Zustand während der Ausführung mit Order.state verändert worden ist.

Sie erzeugen eine Jobkette mit Spooler.create_job_chain(), füllen sie mit Job_chain.add_job() und Job_chain.add_end_state() und machen sie schließlich mit Spooler.add_job_chain() bekannt.

Jeder Knoten ist eindeutig einem Zustand zugeordnet. Für jeden Zustand muss genau einmal Job_chain.add_job() oder Job_chain.add_end_state() aufgerufen werden.

 

add_end_state

Fügt der Jobkette einen Endknoten hinzu

 

void  job_chain.add_end_state( String state )

 

Diesem Knoten ist kein Job zugeordnet. Ein Auftrag, der einen Endknoten erreicht, hat die Jobkette durchlaufen und wird vom Scheduler aus ihr entfernt.

Parameter

state

add_job

Erweitert die Jobkette um einen Job

 

void  job_chain.add_job( String job_name, String input_state, String output_state, String error_state )

Parameter

job_name
input_state
output_state
error_state

add_or_replace_order

Gibt einen Auftrag in die Jobkette und ersetzt ggfs. einen mit gleicher Kennung

 

void  job_chain.add_or_replace_order( Order )

 

Hat die Jobkette bereits einen Auftrag mit gleicher Kennung, dann wird dieser ersetzt. Genauer: Er wird aus der Jobkette entfernt, und der neue Auftrag wird hinzugefügt.

Solange eine Task den vorhandenen Auftrag ausführt, sind im Scheduler zwei Aufträge mit gleicher Kennung vorhanden. Allerdings ist der vorhandene Auftrag aus der Jobkette und aus der Datenbank bereits entfernt. Er ist nur noch für die Task nutzbar und verschwindet nach der Ausführung.

In diesem Fall wartet der Scheduler die Ausführung des neuen Auftrags ab, bis die Ausführung des alten Auftrags beendet ist.

Siehe Job_chain.add_order() und Order.remove_from_job_chain()

Parameter

Order

add_order

Gibt einen Auftrag in die Jobkette

 

void  job_chain.add_order( Order order )

 

Wenn der Auftrag in einer anderen Jobkette enthalten ist, entfernt der Scheduler ihn daraus.

Der Auftrag wird in die Auftragswarteschlange des Jobs, der seinem Zustand entspricht, gemäß seiner Priorität eingeordnet.

Die Jobkette mit muss <job_chain> oder Spooler.add_job_chain() dem Scheduler bekannt gemacht worden sein.

Wenn die Jobkette bereits einen Auftrag mit gleicher Order.id enthält, wird eine Exception mit Fehlercode SCHEDULER-186 geliefert. Siehe aber Job_chain.add_or_replace_order().

Parameter

order_or_payload

Rückgabe

Order  

name

Name der Jobkette

 

void  job_chain.set_name( String )
String   job_chain.name()

Beispiel  

Job_chain job_chain = spooler.create_job_chain();
job_chain.set_name( "Jobkette" );

Parameter

String

node

Der Jobkettenknoten zum angegebenen Zustand

 

Job_chain_node   job_chain.node( String state )

Parameter

state

Rückgabe

Job_chain_node  

order_count

Anzahl der Aufträge in der Jobkette

 

int   job_chain.order_count()

order_queue

= node(state).job().order_queue()

 

Order_queue   job_chain.order_queue( String state )

 

Liefert die Auftragswarteschlange des Jobs, der dem angegebenen Zustand zugeordnet ist.

Parameter

state

Rückgabe

Order_queue  

orders_recoverable

 

void  job_chain.set_orders_recoverable( boolean )
boolean   job_chain.orders_recoverable()

 

Siehe <job_chain orders_recoverable="…">.

Parameter

boolean

remove

Entfernt die Jobkette

 

void  job_chain.remove()

 

Wenn gerade Aufträge der Jobkette verarbeitet werden (in spooler_process()), dann entfernt der Scheduler die Jobkette, sobald der letzte Auftrag verarbeitet worden ist.

Die Aufträge bleiben in der Datenbank erhalten. Wenn später eine Jobkette mit gleichen Namen hinzugefügt wird (Spooler.add_job_chain()), dann lädt der Scheduler diese Aufträge erneut. Die Zustände der Aufträge müssen in der erneuerten Jobkette vorhanden sein.

Meldungen

[info] SCHEDULER-873 Job_chains job_chains(2) share order IDs because 'Job_chain(1) ' has been removed 
[info] SCHEDULER-874 Order_id_space has been closed 

title

 

void  job_chain.set_title( String )
String   job_chain.title()

 

Siehe <job_chain title="…">.

Parameter

String

Software- und Organisations-Service GmbH

Zuletzt geändert von Joacim Zschimmer, 2008-04-29