Documentation
¶
Overview ¶
Package workflow is for problem workflow manipulation.
Workflow Graph ¶
Workflow Graph is a directed acyclic graph (DAG) which describes how to perform a single testcase's judgement.
Each node of the graph represents a processor, with its input files and output files naming inbound and outbound respectively.
A directed edge goes either from one of the outbounds of the source (node) to one of the inbounds of the destination (node), or from a field of a datagroup to one of the inbounds of the destination (node).
Datagroups is where all data files are given from.
Analyzer ¶
An analyzer examines up all nodes' execution result and all generated files to evaluate the whole process, and then returns the structured result.
Builder ¶
Builder provides convenient ways to create a workflow graph.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Analyzer ¶
type Analyzer interface {
Analyze(nodes map[string]RuntimeNode, fullscore float64) Result
}
Analyzer generates result of a workflow.
func LoadAnalyzer ¶
type Builder ¶
type Builder struct {
// contains filtered or unexported fields
}
Build a workflow
func (*Builder) AddInbound ¶
func (*Builder) WorkflowGraph ¶
func (r *Builder) WorkflowGraph() (*WorkflowGraph, error)
type DefaultAnalyzer ¶
type DefaultAnalyzer struct {
}
func (DefaultAnalyzer) Analyze ¶
func (r DefaultAnalyzer) Analyze(nodes map[string]RuntimeNode, fullscore float64) Result
type Result ¶
type Result struct {
ResultMeta
// a list of file content to display
File []ResultFileDisplay
}
Result of a workflow, typically generated by Analyzer.
type ResultFileDisplay ¶
func FileDisplay ¶
func FileDisplay(path string, title string, len int) ResultFileDisplay
Display content of a text file with max-length limitation
type ResultMeta ¶
type RuntimeNode ¶
type Workflow ¶
type Workflow struct {
*WorkflowGraph
Analyzer
}
workflow describes how to perform a single testcase's judgement
type WorkflowGraph ¶
type WorkflowGraph struct {
// a node itself is just a processor
Node map[string]Node
Edge []Edge
// inbound consists a series of data group.
// Inbound: map[datagroup_name]*map[field]Bound
Inbound map[Groupname]*map[string][]Inbound
}
func NewGraph ¶
func NewGraph() WorkflowGraph
func (*WorkflowGraph) EdgeFrom ¶
func (r *WorkflowGraph) EdgeFrom(name string) []Edge
All edges starting from Node[nodeid]
func (*WorkflowGraph) EdgeTo ¶
func (r *WorkflowGraph) EdgeTo(name string) []Edge
All edges ending at Node[nodeid]