Class OracleSaver

java.lang.Object
All Implemented Interfaces:
BaseCheckpointSaver, LG4JLoggable

public class OracleSaver extends AbstractOracleSaver

OracleSaver is an extension of MemorySaver that enables persistent, reliable storage of workflow state in an Oracle database.

Two tables are used to store the workflow state:

     CREATE TABLE LANGRAPH4J_THREAD (
          thread_id VARCHAR2(36) PRIMARY KEY,
          thread_name VARCHAR(255),
          is_released BOOLEAN DEFAULT FALSE NOT NULL
     )
     CREATE INDEX IDX_LANGRAPH4J_THREAD_NAME_RELEASED
          ON LANGRAPH4J_THREAD(thread_name, is_released)

     CREATE TABLE LANGRAPH4J_CHECKPOINT (
          checkpoint_id VARCHAR2(36) PRIMARY KEY,
          thread_id VARCHAR2(36) NOT NULL,
          node_id VARCHAR(255),
          next_node_id VARCHAR(255),
          state_data JSON NOT NULL,
          saved_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,

          CONSTRAINT LANGRAPH4J_FK_THREAD
              FOREIGN KEY(thread_id)
              REFERENCES LANGRAPH4J_THREAD(thread_id)
              ON DELETE CASCADE
     )
 

A builder can be use to create an instance or OracleSaver. The builder allows to configure the following options: - DataSource: indicates which data source should be used to connect to the database - CreateOption : indicates whether the tables should be created or existing tables should be used.

Ex:

 var saver = OracleSaver.builder()
         .createOption(CreateOption.CREATE_OR_REPLACE)
         .dataSource(DATA_SOURCE)
         .build();