Referenz zu Datenaufnahmeplan

Datenbankobjekte und Prozeduren

Die folgenden Prozeduren werden von der Datei scheduler/scheduler.sql erstellt.

PUBLIC.CREATE_SCHEDULER()

Diese Prozedur dient als Einstiegspunkt zwischen SQL und Java. Erstellt eine Aufgabenausführung, die gemäß dem in der Tabelle APP_STATE verfügbaren Zeitplan ausgeführt wird. Bei der Ausführung dieser Aufgabe wird die Prozedur PUBLIC.RUN_SCHEDULER_ITERATION() ausgeführt.

PUBLIC.RUN_SCHEDULER_ITERATION()

Diese Prozedur ist ein Einstiegspunkt in die Java-Implementierung der eigentlichen Scheduling-Aufgabe. Wird immer dann aufgerufen, wenn die Scheduler-Aufgabe ausgeführt wird.

PUBLIC.ON_INGESTION_SCHEDULED (process_id VARCHAR)

Diese Prozedur definiert den Datenaufnahmeablauf für einen einzelnen Prozess, der vom Scheduler zur Ausführung genommen wurde. Die Standardimplementierung führt keine Aktion aus. Wir empfehlen, dies in Java unter Verwendung der Schnittstelle OnIngestionScheduledCallback zu implementieren.

Kundenspezifischer Handler

Das Feature Datenaufnahme-Scheduler besteht aus zwei verschiedenen Handlern, die als Einstiegspunkt von SQL nach Java dienen:

  • CreateSchedulerHandler

  • RunSchedulerIterationHandler

Wir empfehlen, nur den letzteren Handler anzupassen.

Ansatz: Builder

RunSchedulerIterationHandler kann mithilfe von RunSchedulerIterationHandlerBuilder angepasst werden. Diese Hilfsobjekte ermöglichen kundenspezifische Implementierungen der zugrunde liegenden Schnittstellen:

  • ConnectorErrorHelper

  • OnIngestionScheduledCallback

Falls diese nicht vorhanden sind, werden die Standardimplementierungen verwendet.

class CustomOnIngestionScheduledCallback implements OnIngestionScheduledCallback {
    @Override
    public void onIngestionScheduled(String processId) {
        // CUSTOM LOGIC
    }
}

class CustomHandler {

    // Path to this method needs to be specified in the PUBLIC.RUN_SCHEDULER_ITERATION procedure using SQL
    public static Variant runIteration(Session session) {
        return RunSchedulerIterationHandler.builder(session)
            .withOnIngestionScheduledCallback(new CustomOnIngestionScheduledCallback())
            .build()
            .runIteration()
            .toVariant();
    }
}
Copy