func (p *BaseProcess) OutPort(portName string) *OutPort {
	if _, ok := p.outPorts[portName]; !ok {
		p.Failf("No such out-port ('%s'). Please check your workflow code!", portName)
	}
	return p.outPorts[portName]
}
OutPort returns the out-port with name portName
package scipipe
import "fmt"
type BaseProcess struct {
	name          string
	workflow      *Workflow
	inPorts       map[string]*InPort
	outPorts      map[string]*OutPort
	inParamPorts  map[string]*InParamPort
	outParamPorts map[string]*OutParamPort
}
func NewBaseProcess(wf *Workflow, name string) BaseProcess {
	return BaseProcess{
		workflow:      wf,
		name:          name,
		inPorts:       make(map[string]*InPort),
		outPorts:      make(map[string]*OutPort),
		inParamPorts:  make(map[string]*InParamPort),
		outParamPorts: make(map[string]*OutParamPort),
	}
}
func (p *BaseProcess) Name() string {
	return p.name
}
func (p *BaseProcess) Workflow() *Workflow {
	return p.workflow
}
func (p *BaseProcess) InPort(portName string) *InPort {
	if _, ok := p.inPorts[portName]; !ok {
		p.Failf("No such in-port ('%s'). Please check your workflow code!", portName)
	}
	return p.inPorts[portName]
}
func (p *BaseProcess) InitInPort(proc WorkflowProcess, portName string) {
	if _, ok := p.inPorts[portName]; ok {
		p.Failf("Such an in-port ('%s') already exists. Please check your workflow code!", portName)
	}
	ipt := NewInPort(portName)
	ipt.process = proc
	p.inPorts[portName] = ipt
}
func (p *BaseProcess) InPorts() map[string]*InPort {
	return p.inPorts
}
func (p *BaseProcess) DeleteInPort(portName string) {
	if _, ok := p.inPorts[portName]; !ok {
		p.Failf("No such in-port ('%s'). Please check your workflow code!", portName)
	}
	delete(p.inPorts, portName)
}
func (p *BaseProcess) InitOutPort(proc WorkflowProcess, portName string) {
	if _, ok := p.outPorts[portName]; ok {
		p.Failf("Such an out-port ('%s') already exists. Please check your workflow code!", portName)
	}
	opt := NewOutPort(portName)
	opt.process = proc
	p.outPorts[portName] = opt
}