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 _key node_ is specially treated by analyzer which means the main process of submission's testing.
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 a structured result.
Builder ¶
Builder provides a convenient way to create a workflow graph.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Analyzer ¶
type Analyzer interface {
Analyze(w Workflow, 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(w Workflow, 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
Try to display content of a text file with max-length limitation. It is well-processed if an executable file is provided.
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 (*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]