Sie zeigen eine alte Version dieser Seite an. Zeigen Sie die aktuelle Version an.

Unterschiede anzeigen Seitenhistorie anzeigen

« Vorherige Version anzeigen Version 12 Nächste Version anzeigen »

Allgemein

Regeln des Typs "Job" können nur Fristen zugewiesen werden und müssen das Interface "JobRule" implementieren.

Innerhalb des Baums mit der Regelbibliothek werden sie dem Knoten "Job" zugeschrieben.

Struktur

Quellcode einer Klasse des Typs "Job":

package org.nuclet.lager; 

import org.nuclos.api.rule.JobRule; 
import org.nuclos.api.context.JobContext; 
import org.nuclos.api.annotation.Rule; 
import org.nuclos.api.exception.BusinessException; 

/** @name        
  * @description 
  * @usage       
  * @change      
*/

@Rule(name="Job Lager", description="Job Lager")
public class JobLager implements JobRule {
   
 public void execute(JobContext context) { 
    }
}

 

Das entsprechende Interface schreibt die Implementierung der Methode "execute" vor und liefert als Kontext die Klasse JobContext. Darin enthalten ist die Session-Id. 

Innerhalb der execute-Methode kann der Regelprogrammierer auch eine BusinessException auslösen, die zwar geloggt wird, aber nicht zum Abbruch der Jobdurchführung führt.

Die Angabe der Annotation "Rule" ist nicht zwingend notwendig, wird aber empfohlen, da die Beschreibungen (name und description) im Regelbibliotheksbaum angezeigt werden.

 

Transaktionale Jobs

(ab Nuclos 4.3)

Normalerweise wird die gesamte Verarbeitung des Jobs in nur einer Transaktion ausgeführt. Wenn man die Verarbeitung auf mehrere Transaktionen verteilen möchte muss das Interface TransactionalJobRule zusätzlich implementiert werden. Die Methode getTransactionalObjects(JobContext context) liefert eine Liste vom Typ Object wobei nun für jedes Element in der Liste eine eigene Transaktion eröffnet wird. Dabei wird für jedes Object die Methode execute(JobContext context) aufgerufen. Das Object kann vom JobContext mittels .getTransactionalObject() abgeholt werden.


Struktur TransactionalJobRule

Quellcode einer Klasse des Typs "Job" mit "TransactionalJobRule":

package example.rest; 

import java.util.ArrayList;
import java.util.List;

import org.nuclos.api.annotation.Rule;
import org.nuclos.api.context.JobContext;
import org.nuclos.api.exception.BusinessException;
import org.nuclos.api.provider.QueryProvider;
import org.nuclos.api.rule.JobRule;
import org.nuclos.api.rule.TransactionalJobRule;

/** @name        
  * @description 
  * @usage       
  * @change      
*/

@Rule(name="OrderJob", description="Example transactional job rule")
public class OrderJob implements JobRule, TransactionalJobRule {

	public void execute(JobContext context) {
		// encapsulated transaction begin
		Order myOrder = (Order) context.getTransactionalObject();
		// do something ...

		// encapsulated transaction end
	}

	public List<Object> getTransactionalObjects(JobContext context) {
		List<Object> result = new ArrayList<Object>();
		try {
			result.addAll(QueryProvider.getByState(Order.class, ExampleorderSM.State_80));
		} catch (BusinessException e) {
			context.joblogError(e.getMessage());
		}
		return null;
	}
}


Zuweisung

Klassen des Typs "Job" können nur Fristen zugewiesen werden. Nach der Verknüpfung erscheint die Klasse nach Auswahl der Frist und des Typs im Zuweisungsfenster.

 

 

Mit dem Symbol des Mülleimers kann die Zuweisung der Klasse zur Frist gelöscht werden. Wichtig ist, dass damit nur die Zuweisung gelöscht wird. Weiterhin lässt sich mit Hilfe der Pfeile-Buttons die Ausführungsreihenfolge verändern.

Jede Änderung wird automatisch gespeichert.

Beispiel

Hier finden Sie ein Beispiel, das den Aufbau einer Regel vom Typ "Job" veranschaulicht.

Probleme und Lösungen

Support und Informationen zur Problembehandlung finden Sie hier.

 

  • Keine Stichwörter