Class DatabaseAccumulator
java.lang.Object
com.scivicslab.actoriac.accumulator.DatabaseAccumulator
- All Implemented Interfaces:
com.scivicslab.pojoactor.core.accumulator.Accumulator
public class DatabaseAccumulator
extends Object
implements com.scivicslab.pojoactor.core.accumulator.Accumulator
Accumulator that writes output to an H2 database via DistributedLogStore.
This accumulator writes all output to the H2 database asynchronously. It uses a dedicated executor to avoid blocking workflow execution.
Usage
DatabaseAccumulator dbAcc = new DatabaseAccumulator(logStoreActor, dbExecutor, sessionId);
dbAcc.add("node-1", "stdout", "command output");
dbAcc.add("workflow", "cowsay", renderedCowsayArt);
- Since:
- 2.12.0
- Author:
- devteam@scivicslab.com
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final AtomicIntegerprivate final ExecutorServiceprivate final com.scivicslab.pojoactor.core.ActorRef<DistributedLogStore> private final long -
Constructor Summary
ConstructorsConstructorDescriptionDatabaseAccumulator(com.scivicslab.pojoactor.core.ActorRef<DistributedLogStore> logStoreActor, ExecutorService dbExecutor, long sessionId) Constructs a DatabaseAccumulator. -
Method Summary
Modifier and TypeMethodDescriptionvoidvoidclear()private StringformatOutput(String source, String data) Formats the output with a fixed-width source prefix on each line.private StringformatPrefix(String source) Creates a prefix from the source name.intgetCount()
-
Field Details
-
logStoreActor
-
dbExecutor
-
sessionId
-
count
-
-
Constructor Details
-
DatabaseAccumulator
public DatabaseAccumulator(com.scivicslab.pojoactor.core.ActorRef<DistributedLogStore> logStoreActor, ExecutorService dbExecutor, long sessionId) Constructs a DatabaseAccumulator.- Parameters:
logStoreActor- the actor reference for the distributed log storedbExecutor- the executor service for async DB writessessionId- the session ID for this workflow execution
-
-
Method Details
-
add
-
formatOutput
Formats the output with a fixed-width source prefix on each line.- Parameters:
source- the source identifier (e.g., "node-web-01", "cli")data- the output data (may contain multiple lines)- Returns:
- the formatted output string with prefix on each line
-
formatPrefix
Creates a prefix from the source name.- Parameters:
source- the source identifier- Returns:
- formatted prefix like "[node-web-01] "
-
getSummary
- Specified by:
getSummaryin interfacecom.scivicslab.pojoactor.core.accumulator.Accumulator
-
getCount
- Specified by:
getCountin interfacecom.scivicslab.pojoactor.core.accumulator.Accumulator
-
clear
- Specified by:
clearin interfacecom.scivicslab.pojoactor.core.accumulator.Accumulator
-