/* Copyright 2014 MITRE Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.mitre.provenance.workflows;
import org.mitre.provenance.Metadata;
import org.mitre.provenance.PLUSException;
import org.mitre.provenance.plusobject.PLUSEdge;
import org.mitre.provenance.plusobject.PLUSInvocation;
import org.mitre.provenance.plusobject.PLUSString;
import org.mitre.provenance.plusobject.PLUSWorkflow;
import org.mitre.provenance.plusobject.ProvenanceCollection;
import org.mitre.provenance.workflowengine.RelationalLineageCapture;
import org.mitre.provenance.workflowengine.Transition;
import org.mitre.provenance.workflowengine.Workflow;
import org.mitre.provenance.workflowengine.activity.Activity;
/**
* The simplest, most straightforward workflow available.
* A transitions to B, transitions to C. End of story.
* @author moxious
*
*/
public class SimpleWorkflow extends ProvenanceCollection {
protected PLUSWorkflow wf = null;
public SimpleWorkflow() throws PLUSException {
super();
wf = new PLUSWorkflow();
wf.setName("Simple ABC Workflow");
addNode(wf);
PLUSInvocation a = new PLUSInvocation("A");
PLUSInvocation b = new PLUSInvocation("B");
PLUSInvocation c = new PLUSInvocation("C");
addNode(a); addNode(b); addNode(c);
PLUSString inputToA = new PLUSString("Input to A");
PLUSString outputOfA = new PLUSString("Output of A");
PLUSString outputOfB = new PLUSString("Output of B");
PLUSString outputOfC = new PLUSString("Output of C");
addNode(inputToA); addNode(outputOfA); addNode(outputOfB);
addNode(outputOfC);
addEdge(new PLUSEdge(inputToA, a, wf));
addEdge(new PLUSEdge(a, outputOfA, wf));
addEdge(new PLUSEdge(outputOfA, b, wf));
addEdge(new PLUSEdge(b, outputOfB, wf));
addEdge(new PLUSEdge(outputOfB, c, wf));
addEdge(new PLUSEdge(c, outputOfC, wf));
}
} // End SimpleWorkflow