Class NodeGroupInterpreter
This class extends Interpreter to provide workflow execution
capabilities while delegating node group operations to a wrapped NodeGroup instance.
This follows the same three-level architecture as NodeInterpreter:
- Level 1 (POJO):
NodeGroup- pure POJO with inventory management - Level 2 (Actor): ActorRef<NodeGroup> - actor wrapper for concurrent execution
- Level 3 (Workflow): NodeGroupInterpreter - workflow capabilities + IIActorRef wrapper
Design principle: NodeGroup remains a pure POJO, independent of ActorSystem. NodeGroupInterpreter wraps NodeGroup to add workflow capabilities without modifying the NodeGroup class.
- Author:
- devteam@scivics-lab.com
-
Nested Class Summary
Nested classes/interfaces inherited from class com.scivicslab.pojoactor.workflow.Interpreter
com.scivicslab.pojoactor.workflow.Interpreter.Builder -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate DistributedLogStoreDistributed log store for structured logging.private final NodeGroupThe wrapped NodeGroup POJO that handles inventory and node creation.private StringThe overlay directory path for YAML overlay feature.private longSession ID for the current workflow execution.private booleanVerbose output flag.Fields inherited from class com.scivicslab.pojoactor.workflow.Interpreter
code, currentState, currentVertexIndex, logger, selfActorRef, system, workflowBaseDir -
Constructor Summary
ConstructorsConstructorDescriptionNodeGroupInterpreter(NodeGroup nodeGroup, com.scivicslab.pojoactor.workflow.IIActorSystem system) Constructs a NodeGroupInterpreter that wraps the specified NodeGroup. -
Method Summary
Modifier and TypeMethodDescriptionCreates a single Node for localhost execution.createNodesForGroup(String groupName) Creates Node objects for all hosts in the specified group.Gets the inventory object.Gets the log store.Gets the wrapped NodeGroup instance.Gets the overlay directory path.longGets the session ID.booleanChecks if verbose mode is enabled.protected voidonEnterVertex(com.scivicslab.pojoactor.workflow.Vertex vertex) Hook called when entering a vertex during workflow execution.voidsetLogStore(DistributedLogStore logStore, long sessionId) Sets the distributed log store for structured logging.voidsetOverlayDir(String overlayDir) Sets the overlay directory for YAML overlay feature.voidsetVerbose(boolean verbose) Sets verbose mode for detailed output.Methods inherited from class com.scivicslab.pojoactor.workflow.Interpreter
action, addToAccumulator, addToAccumulator, apply, call, execCode, findMatchingActors, findMatchingChildActors, findNextMatchingVertex, generateChildName, getCode, getCurrentState, getCurrentVertexIndex, getToState, getWorkflowBaseDir, hasCodeLoaded, loadWorkflowFromClasspath, matchesCurrentState, matchesStatePattern, readJson, readXml, readYaml, readYaml, readYaml, removeChildActor, reset, runUntilEnd, runUntilEnd, runWorkflow, runWorkflow, setCode, setSelfActorRef, setWorkflowBaseDir, transitionTo
-
Field Details
-
nodeGroup
-
overlayDir
The overlay directory path for YAML overlay feature. When set, workflows are loaded with overlay applied. -
verbose
Verbose output flag. When true, displays full YAML for each vertex instead of truncated version. -
logStore
Distributed log store for structured logging. -
sessionId
Session ID for the current workflow execution.
-
-
Constructor Details
-
NodeGroupInterpreter
public NodeGroupInterpreter(NodeGroup nodeGroup, com.scivicslab.pojoactor.workflow.IIActorSystem system) Constructs a NodeGroupInterpreter that wraps the specified NodeGroup.- Parameters:
nodeGroup- theNodeGroupinstance to wrapsystem- the actor system for workflow execution
-
-
Method Details
-
createNodesForGroup
Creates Node objects for all hosts in the specified group.Delegates to the wrapped
NodeGroup.createNodesForGroup(String)method.- Parameters:
groupName- the name of the group from the inventory file- Returns:
- the list of created Node objects
-
createLocalNode
Creates a single Node for localhost execution.Delegates to the wrapped
NodeGroup.createLocalNode()method.- Returns:
- a list containing a single localhost Node
-
getInventory
Gets the inventory object.- Returns:
- the loaded inventory, or null if not loaded
-
getNodeGroup
Gets the wrapped NodeGroup instance.This allows direct access to the underlying POJO when needed.
- Returns:
- the wrapped NodeGroup
-
setOverlayDir
Sets the overlay directory for YAML overlay feature.When an overlay directory is set, workflows will be loaded with overlay applied, allowing environment-specific configuration.
- Parameters:
overlayDir- the path to the overlay directory containing overlay-conf.yaml
-
getOverlayDir
Gets the overlay directory path.- Returns:
- the overlay directory path, or null if not set
-
setVerbose
Sets verbose mode for detailed output.When enabled, displays full YAML for each vertex in cowsay output instead of the truncated version.
- Parameters:
verbose- true to enable verbose output
-
isVerbose
Checks if verbose mode is enabled.- Returns:
- true if verbose mode is enabled
-
setLogStore
Sets the distributed log store for structured logging.- Parameters:
logStore- the log store to usesessionId- the session ID for this execution
-
getLogStore
Gets the log store.- Returns:
- the log store, or null if not set
-
getSessionId
-
onEnterVertex
Hook called when entering a vertex during workflow execution.Displays the workflow name and vertex definition using cowsay. In normal mode, shows first 10 lines. In verbose mode, shows the full YAML after the cowsay output.
- Overrides:
onEnterVertexin classcom.scivicslab.pojoactor.workflow.Interpreter- Parameters:
vertex- the vertex being entered
-