Manual de jDTS

Cómo se configura : Fichero XML.

La configuración de jDTS puede realizarse desde un fichero XML y cargarse mediante la clase JDTSLoader.

El siguiente fichero define una conexión y un comando a ejecutar.

<jdts start="task0">
	<connection id="conn1">
		<class>org.gjt.mm.mysql.Driver</class>
		<string>jdbc:mysql://localhost/JDTS?user=user&password=pass</string>
	</connection>
</jdts>
	

El elemento jdts

El elemento jdts simboliza un objeto de la clase JDTS, que es el encargado de gestionar el LOG, las conexiones, y lanzar las diferentes tareas a realizar.

Parámetros

start: (obligatorio) es el nombre de la primera tarea a ejecutar.

El elemento connection

El elemento connection simboliza un objeto de la clase DBConnection, que establece una posible conexión con una base de datos.

Parámetros

id: (obligatorio) es el identificador que se utilizará después para especificar a las tareas en qué base de datos (de cual a cual) deben actuar.

Elemento class: (obligatorio) es el nombre del driver JDBC.

Elemento string: (obligatorio) es la cadena de conexión a la base de datos.

Ejemplo
<connection id="conn1">
	<class>org.gjt.mm.mysql.Driver</class>
	<string>jdbc:mysql://localhost/JDTS?user=user&password=pass</string>
</connection>
		

El elemento tasksgroup

El elemento tasksgroup simboliza un objeto de la clase DTSTaskGroup, que se encarga de agrupar tareas concretas, y de gestionar el flujo de ejecución entre grupos de tareas.

Cada grupo de tareas puede agrupar una o varias tareas a realizar cuyo orden de lanzamiento sea irrelevante, y puede determinar cual será la siguiente tarea a lanzar.

Parámetros

id: (obligatorio) es el identificador que se utilizará para referirse a esta tarea.

onSuccess: (opcional) grupo de tareas a realizar si todo se ha ejecutado correctamente.

onError: (opcional) grupo de tareas a ejecutar si ha habido algún error.

onFinish: (opcional) grupo de tareas a ejecutar cuando se finalice la ejecución de todas las tareas.

Elementos task...: las tareas a realizar.

Ejemplo
<tasksgroup id="task0" onFinish="task1">
	<taskCommand conn="conn1">
		<sql>DELETE FROM t_TableA</sql>
	</taskCommand>
</tasksgroup>
		

El elemento taskCommand

El elemento taskCommand simboliza un objeto de la clase DTSTaskCommand, que se encarga de ejecutar un comando (ALTER TABLE, DROP TABLE, DELETE, etc.) directamente en la base de datos.

Parámetros

id: (opcional) útil si vas a activar el LOG.

conn: (obligatorio) identificador de la conexión dónde debe ejecutarse.

Elemento sql: comando a ejecutar.

Ejemplo
<tasksgroup id="task0" onFinish="task1">
	<taskCommand conn="conn1">
		<sql>DELETE FROM t_TableA</sql>
	</taskCommand>
</tasksgroup>
		

El elemento taskInsert

El elemento taskInsert simboliza un objeto de la clase DTSTaskInsert, que se encarga de realizar una inserción de un registro.

Su verdadera utilidad vendrá si algún día pueden manipularse variables entre tareas y grupos de tareas.

Parámetros

id: (opcional) útil si vas a activar el LOG.

conn: (obligatorio) identificador de la conexión dónde debe ejecutarse.

table: (obligatorio) tabla dónde se realizará la inserción.

Elemento fields: nombres de los campos, separados por comas.

Elemento values: valores de los campos, separados por comas.

Ejemplo
<tasksgroup id="task0" onFinish="task1">
	<taskInsert id="ins1d1" conn="conn1" table="t_TableA">
		<fields>sText,nNumber</fields>
		<values>'Albin #1',1</values>
	</taskInsert>
</tasksgroup>
		

El elemento taskCopyRows

El elemento taskCopyRows simboliza un objeto de la clase DTSTaskCopyRows, que se encarga de realizar copiar registros entre tablas de la misma o de diferentes bases de datos.

Si no se define el elemento transform se considerará que son todos los campos que no sean autoincrement en el destino, y que los campos tienen el mismo nombre en ambas tablas.

Parámetros

id: (opcional) útil si vas a activar el LOG.

connSrc: (obligatorio) identificador de la conexión dónde debe realizarse la consulta.

connTrg: (obligatorio) identificador de la conexión dónde debe realizarse la inserción.

Elemento src-query: (obligatorio) consulta a realizar para obtener los registros.

Elemento trg-table: (obligatorio) tabla dónde serán insertados los registros.

Elemento transform: (opcional) nombres de los campos en origen y en destino.

Ejemplo
<tasksgroup id="task0" onFinish="task1">
	<taskCopyRows id="cr2d1" connSrc="conn1" connTrg="conn2">
		<src-query>SELECT * FROM t_TableA</src-query>
		<trg-table>t_TableB</trg-table>
	</taskCopyRows>
</tasksgroup>
		

El elemento transform

El elemento transform simboliza un objeto de la clase DTSTransform, que se encarga de emparejar los campos de origen y de destino en un movimiento de registros.

Será mucho más útil cuando se puedan indicar transformaciones a realizar en el momento de la copia.

Parámetros

Elemento field atributo src: (obligatorio) nombre del campo en el origen.

Elemento field atributo trg: (obligatorio) nombre del campo en el destino.

Ejemplo
<tasksgroup id="task0" onFinish="task1">
	<taskCopyRows id="cr2d2" connSrc="conn1" connTrg="conn2">
		<src-query>SELECT * FROM t_TableA</src-query>
		<trg-table>t_TableC</trg-table>
		<transform>
			<field src="sText"   trg="sSomeText"   />
			<field src="nNumber" trg="nSomeNumber" />
		</transform>
	</taskCopyRows>
</tasksgroup>
		

El elemento taskGetValues

El elemento taskGetValues simboliza un objeto de la clase DTSTaskGetValues, que se encarga de recoger en variables array el contenido de todos los registros de una consulta de los campos especificados.

Todos los valores se almacenan en memoria (en un Vector<String>), así que cuidado con utilizar consultas muy bestias.

Parámetros

id: (opcional) útil si vas a activar el LOG.

conn: (obligatorio) identificador de la conexión dónde debe realizarse la consulta.

Elemento var atributo name: (obligatorio) nombre de la variable.

Elemento var atributo value-field: (obligatorio) nombre del campo cuyos valores se desean almacenar.

Ejemplo
<taskGetValues conn="conn1">
	<query>SELECT * FROM t_TableA</query>
	<values>
		<var name="$aTexts" value-field="nNumber" />
	</values>
</taskGetValues>
		

El elemento taskDeleteValues

El elemento taskDeleteValues simboliza un objeto de la clase DTSTaskDeleteValues, que se encarga eliminar los registros cuyo valor en un campo esté contenido en una variable.

Parámetros

id: (opcional) útil si vas a activar el LOG.

conn: (obligatorio) identificador de la conexión dónde debe realizarse la consulta.

table: (obligatorio) tabla cuyos registros van a eliminarse.

Elemento field atributo name: (obligatorio) nombre del campo.

Elemento field atributo equals-var: (obligatorio) nombre de la variable que contiene los valores que determinan qué registros eliminar.

Ejemplo
<taskDeleteValues id="delval" conn="conn1" table="t_TableB">
	<fields>
		<field name="nNumber" equals-var="$aTexts" />
	</fields>
</taskDeleteValues>
		

Cómo se configura : Programáticamente.

La misma tarea podría haberse configurado programáticamente con las siguientes líneas de código:

JDTS           jdts;      // El objeto JDTS que realiza las tareas
DBConnection   dbConn1;   // La conexión con la base de datos
DTSTaskGroup   group1;    // Un grupo de tareas
DTSTaskCommand taskCmd;   // Una tarea de tipo comando

String sDriver  = "org.gjt.mm.mysql.Driver";
String sConnStr = "jdbc:mysql://localhost/JDTS?user=user&password=pass";

jdts    = new JDTS("task0");
dbConn1 = new DBConnection("conn1", sDriver, sConnStr);
group1  = new DTSTaskGroup("task1");
taskCmd = new DTSTaskCommand(dbConn1);
taskCmd.setCommand("DELETE FROM t_TableA");
group1.addTask(taskCmd);        // Añadimos la tarea al grupo de tareas

jdts.addTaskGroup(group1);      // Añadimos el grupo de tareas al objeto JDTS
jdts.addConnection(dbConn1);    // Añadimos la conexión al objeto JDTS
jdts.run();                     // Ejecutamos las tareas