Initial Commit
This commit is contained in:
+10
@@ -0,0 +1,10 @@
|
||||
.directory
|
||||
*.log
|
||||
*.aux
|
||||
*.bbl
|
||||
*.blg
|
||||
*.pdf
|
||||
*.toc
|
||||
thesis.run.xml
|
||||
thesis-blx.bib
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
|
||||
\chapter{Background}
|
||||
|
||||
\input{background/workflowmodel}
|
||||
Executable
+2690
File diff suppressed because it is too large
Load Diff
+499
@@ -0,0 +1,499 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
|
||||
<!--Created by yEd 3.14-->
|
||||
<key for="graphml" id="d0" yfiles.type="resources"/>
|
||||
<key for="port" id="d1" yfiles.type="portgraphics"/>
|
||||
<key for="port" id="d2" yfiles.type="portgeometry"/>
|
||||
<key for="port" id="d3" yfiles.type="portuserdata"/>
|
||||
<key attr.name="url" attr.type="string" for="node" id="d4"/>
|
||||
<key attr.name="description" attr.type="string" for="node" id="d5"/>
|
||||
<key for="node" id="d6" yfiles.type="nodegraphics"/>
|
||||
<key attr.name="Beschreibung" attr.type="string" for="graph" id="d7"/>
|
||||
<key attr.name="url" attr.type="string" for="edge" id="d8"/>
|
||||
<key attr.name="description" attr.type="string" for="edge" id="d9"/>
|
||||
<key for="edge" id="d10" yfiles.type="edgegraphics"/>
|
||||
<graph edgedefault="directed" id="G">
|
||||
<data key="d7"/>
|
||||
<node id="n0">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="60.0" width="122.0" x="688.9031357885135" y="212.60369389972976"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="16" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="30.0" modelName="custom" textColor="#000000" visible="true" width="26.0" x="48.0" y="15.0"><html>
|
||||
A<sub>1</sub>
|
||||
</html><y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n1">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="5.0" width="21.0" x="688.9031357885135" y="272.60369389972976"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="8.5" y="0.5">
|
||||
<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n2">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="60.0" width="122.0" x="618.0" y="314.5"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="16" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="30.0" modelName="custom" textColor="#000000" visible="true" width="26.0" x="48.0" y="15.0"><html>
|
||||
A<sub>2</sub>
|
||||
</html><y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n3">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="60.0" width="122.0" x="770.0" y="314.5"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="16" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="30.0" modelName="custom" textColor="#000000" visible="true" width="26.0" x="48.0" y="15.0"><html>
|
||||
A<sub>3</sub>
|
||||
</html><y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n4">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="60.0" width="122.0" x="688.9031357885135" y="416.39630610027024"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="16" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="30.0" modelName="custom" textColor="#000000" visible="true" width="26.0" x="48.0" y="15.0"><html>
|
||||
A<sub>4</sub>
|
||||
</html><y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n5">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="5.0" width="21.0" x="688.9031357885135" y="207.60369389972976"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="8.5" y="0.5">
|
||||
<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n6">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="5.0" width="21.0" x="618.0" y="309.5"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="8.5" y="0.5">
|
||||
<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n7">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="5.0" width="21.0" x="618.0" y="374.5"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="8.5" y="0.5">
|
||||
<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n8">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="5.0" width="21.0" x="770.0" y="309.5"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="8.5" y="0.5">
|
||||
<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n9">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="5.0" width="21.0" x="770.0" y="374.5"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="8.5" y="0.5">
|
||||
<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n10">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="5.0" width="21.0" x="688.9031357885135" y="411.39630610027024"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="8.5" y="0.5">
|
||||
<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n11">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="5.0" width="21.0" x="688.9031357885135" y="476.39630610027024"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="8.5" y="0.5">
|
||||
<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n12">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="30.0" width="55.0" x="500.0" y="220.0"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="16" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="22.625" modelName="custom" textColor="#000000" visible="true" width="64.1171875" x="-4.55859375" y="3.6875">Activity<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n13">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="30.0" width="116.0" x="469.5" y="262.5"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="16" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="22.625" modelName="custom" textColor="#000000" visible="true" width="113.9765625" x="1.01171875" y="3.6875">Data Transfer<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n14">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="15.0" width="13.0" x="662.0" y="282.5"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="false" width="4.0" x="4.5" y="5.5">
|
||||
<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="ellipse"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n15">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="30.0" width="55.0" x="500.0" y="305.0"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="16" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="22.625" modelName="custom" textColor="#000000" visible="true" width="56.234375" x="-0.6171875" y="3.6875">In Port<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n16">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="30.0" width="70.0" x="492.5" y="347.5"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="16" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="22.625" modelName="custom" textColor="#000000" visible="true" width="70.3828125" x="-0.19140625" y="3.6875">Out Port<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n17">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="30.0" width="108.0" x="473.5" y="390.0"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="16" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="22.625" modelName="custom" textColor="#000000" visible="true" width="104.7109375" x="1.64453125" y="3.375">Dependency<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.5" nodeRatioX="0.0" nodeRatioY="0.5" offsetX="0.0" offsetY="-4.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n18">
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="10.0" width="7.0" x="706.0" y="391.5"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="false" width="4.0" x="1.5" y="3.0">
|
||||
<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="ellipse"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<edge id="e0" source="n0" target="n2">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="14" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="26.0" modelName="free" modelPosition="anywhere" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="31.0" x="-4.297784791862796" y="10.09128481803009"><html>D<sub>12</sub></html><y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
|
||||
</y:EdgeLabel>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e1" source="n0" target="n3">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="14" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="26.0" modelName="free" modelPosition="anywhere" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="31.0" x="22.771966549983404" y="8.200390829718799"><html>D<sub>13</sub></html><y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
|
||||
</y:EdgeLabel>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e2" source="n3" target="n4">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="14" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="26.0" modelName="free" modelPosition="anywhere" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="31.0" x="-7.050241963968006" y="11.498490705197412"><html>D<sub>34</sub></html><y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
|
||||
</y:EdgeLabel>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e3" source="n1" target="n6">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="-13.293288949645103" sy="5.089839781332955" tx="10.518716784893627" ty="-2.5052839608284785"/>
|
||||
<y:LineStyle color="#000000" type="dashed_dotted" width="2.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e4" source="n12" target="n0">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="40.0" sy="0.0" tx="-70.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="dotted" width="2.0"/>
|
||||
<y:Arrows source="none" target="none"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e5" source="n13" target="n14">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="60.0" sy="0.0" tx="-20.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="dotted" width="2.0"/>
|
||||
<y:Arrows source="none" target="none"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e6" source="n15" target="n6">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="30.0" sy="0.0" tx="-15.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="dotted" width="2.0"/>
|
||||
<y:Arrows source="none" target="none"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e7" source="n16" target="n7">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="40.0" sy="0.0" tx="-15.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="dotted" width="2.0"/>
|
||||
<y:Arrows source="none" target="none"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e8" source="n2" target="n4">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="14" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="26.0" modelName="free" modelPosition="anywhere" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="31.0" x="23.10523027399745" y="7.097193251213014"><html>D<sub>24</sub></html><y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
|
||||
</y:EdgeLabel>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e9" source="n17" target="n18">
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="60.0" sy="0.0" tx="-10.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="dotted" width="2.0"/>
|
||||
<y:Arrows source="none" target="none"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
</graph>
|
||||
<data key="d0">
|
||||
<y:Resources/>
|
||||
</data>
|
||||
</graphml>
|
||||
@@ -0,0 +1,47 @@
|
||||
|
||||
\section{Workflow Model}
|
||||
|
||||
The design and implementation of scientific workflows consists of two parts: an \emph{abstract part} and a \emph{concrete part}. We give a short overview of these two parts in the following subsections.
|
||||
|
||||
\begin{figure}{ht}
|
||||
\centering
|
||||
\includegraphics[width=.5\textwidth]{./background/figures/workflow-abstractpart.pdf}
|
||||
\caption{An abstract part of a scientific workflow.}
|
||||
\label{fig:dag}
|
||||
\end{figure}
|
||||
|
||||
\subsection{Workflow design: the abstract part}
|
||||
The abstract part (see Figure~\ref{fig:dag}) of a scientific workflow specification comprises a hardware and middleware agnostic (and therefore easily portable) description of the workflow structure, the activities involved (identified by a unique name and a type), and the data and control flow dependencies between the activities. The individual activities are treated as black-boxes such that only the input and the output signatures are known.
|
||||
|
||||
There are usually two different types of workflow activities:
|
||||
\begin{enumerate}
|
||||
\item \emph{Atomic activities} are basic indivisible computations units such as a legacy codes;
|
||||
\item \emph{Composite activities} combine several fine granular workflow activities, including atomic and other composite ones, to form coarse granular activities and impose a control flow on the contained inner activities.
|
||||
\end{enumerate}
|
||||
Typical composite activities are sequential and parallel loops, conditional activities, and sub-workflows.
|
||||
|
||||
|
||||
\subsection{Workflow implementation: the concrete part}
|
||||
The concrete part of a workflow contains the hardware and middleware-dependent implementations of the atomic activities and their accompanying meta-information. This part is often highly specific to each individual workflow system and the underlying DCI. It usually contains information about the available activity implementations, locations where they are installed, how they can be executed, and any other further information indented to help the workflow engine in selecting the most appropriate activity implementation.
|
||||
|
||||
|
||||
\subsection{Workflow enactment}
|
||||
A workflow engine executes a workflow instance (operation usually called \emph{workflow enactment}) by traversing the DAG representing the workflow structure, determining the state of the individual activities, transferring data from finished activities to their successors in the dependency graph, unrolling composite activities and replacing them with the resulting subgraph, and delegating the actual execution of atomic activities to the scheduling and execution subsystems.
|
||||
We call the resulting DAG where composite activities have been replaced with their contained subgraphs enriched with additional state information a \emph{Workflow Execution Plan} (WEP).
|
||||
|
||||
We distinguish between two types of workflow enactment modes:
|
||||
\begin{itemize}
|
||||
\item In \emph{early enactment mode} the engine re-evaluates the WEP as soon as there are activity state changes, and tries to complete it as early as possible. This mode usually comes with a much higher overhead, but results in a more complete WEP comprising more information, which allows the scheduler to better plan the workflow execution on the underlying resources;
|
||||
\item In \emph{late enactment mode} (also called \emph{lazy evaluation mode}) the engine only re-evaluates and completes the WEP when it is absolutely necessary for the workflow enactment, and only partially completes it as far as it is required for continuing the enactment.
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Workflow scheduling}
|
||||
Scheduling describes the process of mapping atomic activities to available computing resources where they are executed. A concrete mapping of activities to computing resources is called \emph{workflow schedule}. The scheduler usually tries to optimize the schedule by maximising or minimizing a given utility function, typically the overall execution time.
|
||||
|
||||
To be able to produce an optimal mapping the scheduler need to know the resource requirements of an individual activity in advance. We assume in this paper that the scheduler has accurate knowledge of the resources required by an individual activity, but in practice obtaining this knowledge is still a steep challenge.
|
||||
|
||||
Existing scheduling algorithms can be broadly divided into two categories~\cite{Wieczorek2009}:
|
||||
\begin{itemize}
|
||||
\item \emph{Just-in-time scheduling algorithms} only consider the next activities to be scheduled when deciding on a mapping and ignore the rest of the WEP. They are usually linear in complexity with the number of activities (i.e. $O(N)$) and come with a low overhead, but due to limited information the generated schedule may not be that good;
|
||||
\item \emph{Full-ahead scheduling algorithms} use the entire WEP when deciding on a mapping and try to find an optimal schedule in the search space. They usually come with a much higher overhead, but consider more workflow information and therefore, produce in general better results. Generating a full-ahead schedule is an NP-hard problem~\cite{ullman1975np} and therefore, most existing full-ahead scheduling algorithms are approximate heuristic algorithms~\cite{heft02}.
|
||||
\end{itemize}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
|
||||
@Article{Wieczorek2009,
|
||||
Title = {Towards a General Model of the Multi-Criteria Workflow Scheduling on the Grid},
|
||||
Author = {Marek Wieczorek and Andreas Hoheisel and Radu Prodan},
|
||||
Journal = {Future Generations Computer Systems},
|
||||
Year = {2009},
|
||||
Number = {3},
|
||||
Pages = {237-256},
|
||||
Volume = {25}
|
||||
}
|
||||
|
||||
|
||||
@Article{ullman1975np,
|
||||
Title = {NP-complete scheduling problems},
|
||||
Author = {Ullman, J.D.},
|
||||
Journal = {Journal of Computer and System sciences},
|
||||
Year = {1975},
|
||||
Number = {3},
|
||||
Pages = {384--393},
|
||||
Volume = {10},
|
||||
Publisher = {Elsevier}
|
||||
}
|
||||
|
||||
|
||||
@Article{heft02,
|
||||
Title = {Performance-effective and low-complexity task scheduling for heterogeneous computing},
|
||||
Author = {Topcuoglu, H. and Hariri, S. and Min-You Wu},
|
||||
Journal = {IEEE Transactions on Parallel and Distributed Systems},
|
||||
Year = 2002,
|
||||
Month = 3,
|
||||
Number = 3,
|
||||
Pages = {260--274},
|
||||
Volume = 13
|
||||
}
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
\chapter{Conclusion}
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
\chapter{Introduction}
|
||||
Executable
BIN
Binary file not shown.
Executable
+545
@@ -0,0 +1,545 @@
|
||||
%!PS-Adobe-2.0 EPSF-2.0
|
||||
%%Title: /home/matthias/Uni/Work/WorkflowsOnManycores/Documents/FGCS-Paper/figures/Povray.dia
|
||||
%%Creator: Dia v0.97.3
|
||||
%%CreationDate: Fri Feb 19 15:30:18 2016
|
||||
%%For: matthias
|
||||
%%Orientation: Portrait
|
||||
%%Magnification: 1.0000
|
||||
%%BoundingBox: 0 0 359 538
|
||||
%%BeginSetup
|
||||
%%EndSetup
|
||||
%%EndComments
|
||||
%%BeginProlog
|
||||
[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
|
||||
/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
|
||||
/two /three /four /five /six /seven /eight /nine /colon /semicolon
|
||||
/less /equal /greater /question /at /A /B /C /D /E
|
||||
/F /G /H /I /J /K /L /M /N /O
|
||||
/P /Q /R /S /T /U /V /W /X /Y
|
||||
/Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c
|
||||
/d /e /f /g /h /i /j /k /l /m
|
||||
/n /o /p /q /r /s /t /u /v /w
|
||||
/x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright
|
||||
/ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior
|
||||
/acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf
|
||||
/threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
|
||||
/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde
|
||||
/Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex
|
||||
/Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring
|
||||
/ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
|
||||
/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave
|
||||
/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def
|
||||
/cp {closepath} bind def
|
||||
/c {curveto} bind def
|
||||
/f {fill} bind def
|
||||
/a {arc} bind def
|
||||
/ef {eofill} bind def
|
||||
/ex {exch} bind def
|
||||
/gr {grestore} bind def
|
||||
/gs {gsave} bind def
|
||||
/sa {save} bind def
|
||||
/rs {restore} bind def
|
||||
/l {lineto} bind def
|
||||
/m {moveto} bind def
|
||||
/rm {rmoveto} bind def
|
||||
/n {newpath} bind def
|
||||
/s {stroke} bind def
|
||||
/sh {show} bind def
|
||||
/slc {setlinecap} bind def
|
||||
/slj {setlinejoin} bind def
|
||||
/slw {setlinewidth} bind def
|
||||
/srgb {setrgbcolor} bind def
|
||||
/rot {rotate} bind def
|
||||
/sc {scale} bind def
|
||||
/sd {setdash} bind def
|
||||
/ff {findfont} bind def
|
||||
/sf {setfont} bind def
|
||||
/scf {scalefont} bind def
|
||||
/sw {stringwidth pop} bind def
|
||||
/tr {translate} bind def
|
||||
|
||||
/ellipsedict 8 dict def
|
||||
ellipsedict /mtrx matrix put
|
||||
/ellipse
|
||||
{ ellipsedict begin
|
||||
/endangle exch def
|
||||
/startangle exch def
|
||||
/yrad exch def
|
||||
/xrad exch def
|
||||
/y exch def
|
||||
/x exch def /savematrix mtrx currentmatrix def
|
||||
x y tr xrad yrad sc
|
||||
0 0 1 startangle endangle arc
|
||||
savematrix setmatrix
|
||||
end
|
||||
} def
|
||||
|
||||
/mergeprocs {
|
||||
dup length
|
||||
3 -1 roll
|
||||
dup
|
||||
length
|
||||
dup
|
||||
5 1 roll
|
||||
3 -1 roll
|
||||
add
|
||||
array cvx
|
||||
dup
|
||||
3 -1 roll
|
||||
0 exch
|
||||
putinterval
|
||||
dup
|
||||
4 2 roll
|
||||
putinterval
|
||||
} bind def
|
||||
/Times-Roman-latin1
|
||||
/Times-Roman findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/Times-Italic-latin1
|
||||
/Times-Italic findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/Times-Bold-latin1
|
||||
/Times-Bold findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/Times-BoldItalic-latin1
|
||||
/Times-BoldItalic findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/AvantGarde-Gothic-latin1
|
||||
/AvantGarde-Gothic findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/AvantGarde-BookOblique-latin1
|
||||
/AvantGarde-BookOblique findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/AvantGarde-Demi-latin1
|
||||
/AvantGarde-Demi findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/AvantGarde-DemiOblique-latin1
|
||||
/AvantGarde-DemiOblique findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/Bookman-Light-latin1
|
||||
/Bookman-Light findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/Bookman-LightItalic-latin1
|
||||
/Bookman-LightItalic findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/Bookman-Demi-latin1
|
||||
/Bookman-Demi findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/Bookman-DemiItalic-latin1
|
||||
/Bookman-DemiItalic findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/Courier-latin1
|
||||
/Courier findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/Courier-Oblique-latin1
|
||||
/Courier-Oblique findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/Courier-Bold-latin1
|
||||
/Courier-Bold findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/Courier-BoldOblique-latin1
|
||||
/Courier-BoldOblique findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/Helvetica-latin1
|
||||
/Helvetica findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/Helvetica-Oblique-latin1
|
||||
/Helvetica-Oblique findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/Helvetica-Bold-latin1
|
||||
/Helvetica-Bold findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/Helvetica-BoldOblique-latin1
|
||||
/Helvetica-BoldOblique findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/Helvetica-Narrow-latin1
|
||||
/Helvetica-Narrow findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/Helvetica-Narrow-Oblique-latin1
|
||||
/Helvetica-Narrow-Oblique findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/Helvetica-Narrow-Bold-latin1
|
||||
/Helvetica-Narrow-Bold findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/Helvetica-Narrow-BoldOblique-latin1
|
||||
/Helvetica-Narrow-BoldOblique findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/NewCenturySchlbk-Roman-latin1
|
||||
/NewCenturySchlbk-Roman findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/NewCenturySchlbk-Italic-latin1
|
||||
/NewCenturySchlbk-Italic findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/NewCenturySchlbk-Bold-latin1
|
||||
/NewCenturySchlbk-Bold findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/NewCenturySchlbk-BoldItalic-latin1
|
||||
/NewCenturySchlbk-BoldItalic findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/Palatino-Roman-latin1
|
||||
/Palatino-Roman findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/Palatino-Italic-latin1
|
||||
/Palatino-Italic findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/Palatino-Bold-latin1
|
||||
/Palatino-Bold findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/Palatino-BoldItalic-latin1
|
||||
/Palatino-BoldItalic findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/Symbol-latin1
|
||||
/Symbol findfont
|
||||
definefont pop
|
||||
/ZapfChancery-MediumItalic-latin1
|
||||
/ZapfChancery-MediumItalic findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
/ZapfDingbats-latin1
|
||||
/ZapfDingbats findfont
|
||||
dup length dict begin
|
||||
{1 index /FID ne {def} {pop pop} ifelse} forall
|
||||
/Encoding isolatin1encoding def
|
||||
currentdict end
|
||||
definefont pop
|
||||
28.346000 -28.346000 scale
|
||||
-2.165000 -19.800000 translate
|
||||
%%EndProlog
|
||||
|
||||
|
||||
1.000000 1.000000 1.000000 srgb
|
||||
n 2.715000 3.934440 m 2.715000 14.065551 l 14.250000 14.065551 l 14.250000 3.934440 l f
|
||||
n 2.715000 4.434440 m 2.715000 4.434440 0.500000 0.500000 180.000000 270.000000 ellipse f
|
||||
n 14.250000 4.434440 m 14.250000 4.434440 0.500000 0.500000 270.000000 360.000000 ellipse f
|
||||
n 2.215000 4.434440 m 2.215000 13.565551 l 14.750000 13.565551 l 14.750000 4.434440 l f
|
||||
n 2.715000 13.565551 m 2.715000 13.565551 0.500000 0.500000 90.000000 180.000000 ellipse f
|
||||
n 14.250000 13.565551 m 14.250000 13.565551 0.500000 0.500000 0.000000 90.000000 ellipse f
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
n 2.715000 3.934440 m 14.250000 3.934440 l s
|
||||
n 2.715000 14.065551 m 14.250000 14.065551 l s
|
||||
n 2.715000 4.434440 0.500000 0.500000 180.000000 270.000000 ellipse s
|
||||
n 14.250000 4.434440 0.500000 0.500000 270.000000 360.000000 ellipse s
|
||||
n 2.215000 4.434440 m 2.215000 13.565551 l s
|
||||
n 14.750000 4.434440 m 14.750000 13.565551 l s
|
||||
n 2.715000 13.565551 0.500000 0.500000 90.000000 180.000000 ellipse s
|
||||
n 14.250000 13.565551 0.500000 0.500000 0.000000 90.000000 ellipse s
|
||||
/Helvetica-Bold-latin1 ff 0.790222 scf sf
|
||||
(ParallelFor) 2.665000 5.096162 m
|
||||
gs 1 -1 sc sh gr
|
||||
1.000000 1.000000 1.000000 srgb
|
||||
n 6.515000 3.100000 m 6.515000 4.300000 l 10.515000 4.300000 l 10.515000 3.100000 l f
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
n 6.515000 3.100000 m 6.515000 4.300000 l 10.515000 4.300000 l 10.515000 3.100000 l cp s
|
||||
/Times-Roman-latin1 ff 0.070000 scf sf
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 8.515000 3.100000 m 8.515000 4.300000 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 7.515000 3.100000 m 7.515000 4.300000 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 8.515000 3.700000 m 8.515000 3.700000 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 9.515000 3.100000 m 9.515000 4.300000 l s
|
||||
1.000000 1.000000 1.000000 srgb
|
||||
n 6.515000 13.200000 m 6.515000 14.400000 l 10.515000 14.400000 l 10.515000 13.200000 l f
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
n 6.515000 13.200000 m 6.515000 14.400000 l 10.515000 14.400000 l 10.515000 13.200000 l cp s
|
||||
/Times-Roman-latin1 ff 0.070000 scf sf
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 8.515000 13.200000 m 8.515000 14.400000 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 7.515000 13.200000 m 7.515000 14.400000 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 8.515000 13.800000 m 8.515000 13.800000 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 9.515000 13.200000 m 9.515000 14.400000 l s
|
||||
1.000000 1.000000 1.000000 srgb
|
||||
n 8.565000 10.750000 3.500000 1.250000 0 360 ellipse f
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
n 8.565000 10.750000 3.500000 1.250000 0 360 ellipse cp s
|
||||
/Helvetica-Bold-latin1 ff 0.790222 scf sf
|
||||
(Render) dup sw 2 div 8.565000 ex sub 10.797278 m
|
||||
gs 1 -1 sc sh gr
|
||||
1.000000 1.000000 1.000000 srgb
|
||||
n 8.500000 16.662273 3.500000 1.312273 0 360 ellipse f
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
n 8.500000 16.662273 3.500000 1.312273 0 360 ellipse cp s
|
||||
/Helvetica-Bold-latin1 ff 0.790222 scf sf
|
||||
(Convert) dup sw 2 div 8.500000 ex sub 16.709551 m
|
||||
gs 1 -1 sc sh gr
|
||||
n 8.515000 1.400000 0.500000 0.500000 0 360 ellipse f
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
n 8.515000 1.400000 0.500000 0.500000 0 360 ellipse cp s
|
||||
1.000000 1.000000 1.000000 srgb
|
||||
n 8.565000 19.250000 0.500000 0.500000 0 360 ellipse f
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
n 8.565000 19.250000 0.500000 0.500000 0 360 ellipse cp s
|
||||
n 8.565001 19.250001 0.250001 0.250001 0 360 ellipse f
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
n 8.565001 19.250001 0.250001 0.250001 0 360 ellipse cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 8.515000 1.949170 m 8.515000 2.500317 l s
|
||||
0 slj
|
||||
n 8.265000 2.500317 m 8.515000 3.000317 l 8.765000 2.500317 l ef
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
0 slj
|
||||
n 8.265000 2.500317 m 8.515000 3.000317 l 8.765000 2.500317 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 8.515000 4.300000 m 8.513673 5.016615 l s
|
||||
0 slj
|
||||
n 8.263673 5.016152 m 8.512747 5.516614 l 8.763673 5.017078 l ef
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
0 slj
|
||||
n 8.263673 5.016152 m 8.512747 5.516614 l 8.763673 5.017078 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 8.565000 12.000000 m 8.537897 12.650477 l s
|
||||
0 slj
|
||||
n 8.288114 12.640069 m 8.517082 13.150043 l 8.787680 12.660884 l ef
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
0 slj
|
||||
n 8.288114 12.640069 m 8.517082 13.150043 l 8.787680 12.660884 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 8.515000 14.400000 m 8.508683 14.800069 l s
|
||||
0 slj
|
||||
n 8.258714 14.796122 m 8.500789 15.300006 l 8.758652 14.804015 l ef
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
0 slj
|
||||
n 8.258714 14.796122 m 8.500789 15.300006 l 8.758652 14.804015 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 8.500000 17.974500 m 8.530209 18.451101 l s
|
||||
0 slj
|
||||
n 8.280709 18.466916 m 8.561837 18.950100 l 8.779708 18.435287 l ef
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
0 slj
|
||||
n 8.280709 18.466916 m 8.561837 18.950100 l 8.779708 18.435287 l cp s
|
||||
1.000000 1.000000 1.000000 srgb
|
||||
n 8.510000 7.000000 3.872766 1.383131 0 360 ellipse f
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
n 8.510000 7.000000 3.872766 1.383131 0 360 ellipse cp s
|
||||
/Helvetica-Bold-latin1 ff 0.790222 scf sf
|
||||
(SceneFile) dup sw 2 div 8.510000 ex sub 7.047278 m
|
||||
gs 1 -1 sc sh gr
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 8.510000 8.383131 m 8.537948 8.950666 l s
|
||||
0 slj
|
||||
n 8.288251 8.962962 m 8.562541 9.450061 l 8.787646 8.938369 l ef
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
0 slj
|
||||
n 8.288251 8.962962 m 8.562541 9.450061 l 8.787646 8.938369 l cp s
|
||||
showpage
|
||||
Executable
+3550
File diff suppressed because it is too large
Load Diff
Executable
+337
@@ -0,0 +1,337 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
|
||||
<!--Created by yEd 3.14-->
|
||||
<key for="graphml" id="d0" yfiles.type="resources"/>
|
||||
<key for="port" id="d1" yfiles.type="portgraphics"/>
|
||||
<key for="port" id="d2" yfiles.type="portgeometry"/>
|
||||
<key for="port" id="d3" yfiles.type="portuserdata"/>
|
||||
<key attr.name="url" attr.type="string" for="node" id="d4"/>
|
||||
<key attr.name="description" attr.type="string" for="node" id="d5"/>
|
||||
<key for="node" id="d6" yfiles.type="nodegraphics"/>
|
||||
<key attr.name="Beschreibung" attr.type="string" for="graph" id="d7"/>
|
||||
<key attr.name="url" attr.type="string" for="edge" id="d8"/>
|
||||
<key attr.name="description" attr.type="string" for="edge" id="d9"/>
|
||||
<key for="edge" id="d10" yfiles.type="edgegraphics"/>
|
||||
<graph edgedefault="directed" id="G">
|
||||
<data key="d7"/>
|
||||
<node id="n0">
|
||||
<data key="d6">
|
||||
<y:GenericNode configuration="com.yworks.bpmn.Artifact.withShadow">
|
||||
<y:Geometry height="55.0" width="35.0" x="-1313.13859375" y="-272.55046875"/>
|
||||
<y:Fill color="#FFFFFFE6" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="14" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="36.59375" modelName="custom" textColor="#000000" visible="true" width="106.4091796875" x="-35.70458984375" y="59.0">Workflow
|
||||
Specification<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="-0.5" nodeRatioX="0.0" nodeRatioY="0.5" offsetX="0.0" offsetY="4.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:StyleProperties>
|
||||
<y:Property class="com.yworks.yfiles.bpmn.view.BPMNTypeEnum" name="com.yworks.bpmn.type" value="ARTIFACT_TYPE_DATA_OBJECT"/>
|
||||
<y:Property class="com.yworks.yfiles.bpmn.view.DataObjectTypeEnum" name="com.yworks.bpmn.dataObjectType" value="DATA_OBJECT_TYPE_PLAIN"/>
|
||||
<y:Property class="java.awt.Color" name="com.yworks.bpmn.icon.line.color" value="#000000"/>
|
||||
<y:Property class="java.awt.Color" name="com.yworks.bpmn.icon.fill" value="#ffffffe6"/>
|
||||
<y:Property class="java.awt.Color" name="com.yworks.bpmn.icon.fill2" value="#d4d4d4cc"/>
|
||||
</y:StyleProperties>
|
||||
</y:GenericNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n1">
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="165.0" width="239.0" x="-1193.4785937499978" y="-327.55046875"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="117.5" y="80.5">
|
||||
<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n2">
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="128.0" width="49.0" x="-1178.4785937499978" y="-309.05046875"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="14" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="20.296875" modelName="custom" rotationAngle="270.0" textColor="#000000" visible="true" width="118.6796875" x="14.3515625" y="4.66015625">IWIR-Frontend<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="roundrectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n3">
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="128.0" width="49.0" x="-1019.1585937499935" y="-309.05046875"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="14" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="20.296875" modelName="custom" rotationAngle="270.0" textColor="#000000" visible="true" width="102.02734375" x="14.3515625" y="12.986328125">WF-Backend<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="roundrectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n4">
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="28.0" width="95.0" x="-1121.8185937499957" y="-268.83046875000014"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="17.96875" modelName="custom" textColor="#000000" visible="true" width="98.27734375" x="-1.638671875" y="5.015625">Optimisations<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n5">
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="165.0" width="208.0" x="-924.4785937499978" y="-327.55046875"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="102.0" y="80.5">
|
||||
<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n6">
|
||||
<data key="d6">
|
||||
<y:GenericNode configuration="com.yworks.bpmn.Artifact.withShadow">
|
||||
<y:Geometry height="55.0" width="35.0" x="-880.2771874999999" y="-272.55046875"/>
|
||||
<y:Fill color="#FFFFFFE6" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="14" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="20.296875" modelName="custom" textColor="#000000" visible="true" width="102.560546875" x="-33.7802734375" y="59.0">WF-Program<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="-0.5" nodeRatioX="0.0" nodeRatioY="0.5" offsetX="0.0" offsetY="4.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:StyleProperties>
|
||||
<y:Property class="com.yworks.yfiles.bpmn.view.BPMNTypeEnum" name="com.yworks.bpmn.type" value="ARTIFACT_TYPE_DATA_OBJECT"/>
|
||||
<y:Property class="com.yworks.yfiles.bpmn.view.DataObjectTypeEnum" name="com.yworks.bpmn.dataObjectType" value="DATA_OBJECT_TYPE_PLAIN"/>
|
||||
<y:Property class="java.awt.Color" name="com.yworks.bpmn.icon.line.color" value="#000000"/>
|
||||
<y:Property class="java.awt.Color" name="com.yworks.bpmn.icon.fill" value="#ffffffe6"/>
|
||||
<y:Property class="java.awt.Color" name="com.yworks.bpmn.icon.fill2" value="#d4d4d4cc"/>
|
||||
</y:StyleProperties>
|
||||
</y:GenericNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n7">
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="128.0" width="49.0" x="-792.3171874999871" y="-309.05046875"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="14" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="20.296875" modelName="custom" rotationAngle="270.0" textColor="#000000" visible="true" width="88.62890625" x="14.3515625" y="19.685546875">WF-Engine<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="roundrectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n8">
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="40.0" width="111.0" x="-1130.1585937499935" y="-157.05046875"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="16" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="22.625" modelName="custom" textColor="#000000" visible="true" width="84.5703125" x="13.21484375" y="8.6875">Compiler<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n9">
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="40.0" width="111.0" x="-880.2771874999999" y="-157.05046875"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="16" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="22.625" modelName="custom" textColor="#000000" visible="true" width="79.7578125" x="15.62109375" y="8.6875">Runtime<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n10">
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="55.0" width="103.16140625001071" x="-1046.239296874999" y="-394.05046875"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="14" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="36.59375" modelName="custom" textColor="#000000" visible="true" width="89.3876953125" x="6.886855468755357" y="9.203125">Activity
|
||||
Repository<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="roundrectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n11">
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="30.0" width="30.0" x="-1310.63859375" y="-369.05046875"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="18" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="24.953125" modelName="custom" textColor="#000000" visible="true" width="16.5244140625" x="6.73779296875" y="2.5234375">1<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="ellipse"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n12">
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="30.0" width="30.0" x="-1106.239296874999" y="-369.05046875"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="18" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="24.953125" modelName="custom" textColor="#000000" visible="true" width="16.5244140625" x="6.73779296875" y="2.5234375">2<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="ellipse"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n13">
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="30.0" width="30.0" x="-833.7971874999935" y="-369.05046875"/>
|
||||
<y:Fill hasColor="false" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="18" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="24.953125" modelName="custom" textColor="#000000" visible="true" width="16.5244140625" x="6.73779296875" y="2.5234375">3<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="ellipse"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<edge id="e0" source="n2" target="n3">
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e1" source="n0" target="n2">
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e2" source="n3" target="n6">
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e3" source="n6" target="n7">
|
||||
<data key="d10">
|
||||
<y:BezierEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
|
||||
<y:Point x="-821.4785937499978" y="-274.83046875000014"/>
|
||||
</y:Path>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
</y:BezierEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e4" source="n7" target="n6">
|
||||
<data key="d10">
|
||||
<y:BezierEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
|
||||
<y:Point x="-818.4785937499978" y="-222.83046875000014"/>
|
||||
</y:Path>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
</y:BezierEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e5" source="n10" target="n3">
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
</graph>
|
||||
<data key="d0">
|
||||
<y:Resources/>
|
||||
</data>
|
||||
</graphml>
|
||||
@@ -0,0 +1,92 @@
|
||||
|
||||
\begin{wrapfigure}{R}{0.5\textwidth}
|
||||
\centering
|
||||
\includegraphics[width=4cm,keepaspectratio=true]{./mwre/figures/Povray.pdf}
|
||||
\caption{The POV-Ray workflow.}
|
||||
\label{fig:ex-povray}
|
||||
\end{wrapfigure}
|
||||
|
||||
\section{MWRE Architecture}\label{sec:workflow_environment}
|
||||
|
||||
Based on the requirements outlined in the introduction, we designed a \emph{Manycore Workflow Runtime Engine (MWRE)} tailored to heterogeneous shared-memory manycore systems. Our main design principle was to provide a set of feature similar to the ones found in the current DCI workflow engines, while addressing the special characteristics and requirements of manycore systems. In this section we discuss the basic architecture of our workflow system and give short descriptions of the components.
|
||||
|
||||
We use the Persistence of Vision Raytracer (POV-Ray) workflow as a running example to illustrate the workflow representation, translation and enactment.
|
||||
POV-Ray~\cite{Plachetka98-PVPR} is a free tool for creating three-dimensional graphics, which is known to be a time-consuming process used not only by hobbyists and artists, but also in biochemistry research, medicine, architecture, and mathematical visualization. We modelled a POV-Ray rendering scenario as a workflow depicted in Figure~\ref{fig:ex-povray}, where the description of a movie can be separated in several scenes, each scene being composed of several frames that can be rendered (e.g. in \texttt{.png} format) in a \texttt{parallel for} loop. The \texttt{Scene} activity before the \texttt{Render} returns the scene file for a given scene name.
|
||||
Finally, all frames are merged into a \texttt{.mpg} movie using a \texttt{Convert} activity (e.g. running a \texttt{png2yuv} followed by an \texttt{ffmpeg} conversion).
|
||||
|
||||
Figure~\ref{fig:overall-architecture} presents the overall architecture of the MWRE consisting of three main parts: \circled{1} the workflow specification, \circled{2} a source-to-source compiler, and \circled{3} the workflow runtime environment.
|
||||
The main difference between the MWRE's architecture and the traditional DCI workflow engines is the source-to-source compiler that generates a native C++ program from the workflow specification. Furthermore, MWRE does the mapping of abstract activity types to concrete activity implementations at compile-time, instead of runtime as done by most DCI engines.
|
||||
|
||||
\begin{figure}[t]
|
||||
\centering
|
||||
\includegraphics[keepaspectratio=true, width=\textwidth]{./mwre/figures/overall-architecture.pdf}
|
||||
\caption{MWRE architecture.}
|
||||
\label{fig:overall-architecture}
|
||||
\end{figure}
|
||||
|
||||
|
||||
\subsection{Workflow specification}
|
||||
The input to MWRE is a workflow specification (\circled{1}) encoded in the Interoperable Workflow Intermediate Representation (IWIR)~\cite{Plankensteiner2013}. IWIR is an intermediate workflow specification language designed in the European SHIWA project\footnote{\url{http://www.shiwa-workflow.eu/}} to enable interoperability of different workflow systems. As most workflow environments require workflows to be written in their respective workflow language to be able to execute them, exchanging workflows usually means that the workflow specification needs to be translated from one workflow language to another. IWIR eases this translation process by providing a common intermediate representation and thus reducing the number of required translators from $2\cdot n^2$ to $2\cdot n$. IWIR is currently supported by four workflow systems: ASKALON~\cite{Fahringer2007}, MOTEUR~\cite{glatard2008flexible}, Triana~\cite{taylor2003triana} and WS-PGRADE~\cite{kacsuk2011p}.
|
||||
|
||||
Using IWIR to specify MWRE workflows has several advantages allowing reusing existing tool chains with no need to implement existing functionality.
|
||||
First, because it is designed for interoperability, it captures all concepts and constructs found in most workflow languages, and can therefore be seen as a superset of the major workflow languages. Second, it is well-defined and easy to parse. Third, it allows automatic translation and reuse of existing workflows for experiments across different systems without further modifications.
|
||||
Fourth, it allows integration of new languages and new platforms with O(1) complexity through IWIR front-end or back-end support. And fifth, the implementation of a MWRE workflows is not tied to a specific development environment, but domain scientists can use their favourite workflow development tools from any workflow environment that supports IWIR translation.
|
||||
|
||||
|
||||
\lstset{ %
|
||||
backgroundcolor=\color{white}, % choose the background color; you must add \usepackage{color} or \usepackage{xcolor}
|
||||
basicstyle=\scriptsize\ttfamily, % the size of the fonts that are used for the code
|
||||
breakatwhitespace=true, % sets if automatic breaks should only happen at whitespace
|
||||
breaklines=true, % sets automatic line breaking
|
||||
captionpos=b, % sets the caption-position to bottom
|
||||
commentstyle=\color{black}, % comment style
|
||||
deletekeywords={...}, % if you want to delete keywords from the given language
|
||||
escapeinside={(*@}{@*)}, % if you want to add LaTeX within your code
|
||||
extendedchars=true, % lets you use non-ASCII characters; for 8-bits encodings only, does not work with UTF-8
|
||||
frame=none, % adds a frame around the code
|
||||
keepspaces=false, % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible)
|
||||
keywordstyle=\color{black}, % keyword style
|
||||
otherkeywords={*,...}, % if you want to add more keywords to the set
|
||||
numbers=left, % where to put the line-numbers; possible values are (none, left, right)
|
||||
numbersep=2pt, % how far the line-numbers are from the code
|
||||
numberstyle=\tiny\color{gray}, % the style that is used for the line-numbers
|
||||
rulecolor=\color{black}, % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here))
|
||||
showspaces=false, % show spaces everywhere adding particular underscores; it overrides 'showstringspaces'
|
||||
showstringspaces=false, % underline spaces within strings only
|
||||
showtabs=false, % show tabs within strings adding particular underscores
|
||||
stepnumber=1, % the step between two line-numbers. If it's 1, each line will be numbered
|
||||
stringstyle=\color{black}, % string literal style
|
||||
tabsize=2, % sets default tabsize to 2 spaces
|
||||
columns=fullflexible,
|
||||
}
|
||||
|
||||
\lstdefinelanguage{XML2}{
|
||||
language=XML,
|
||||
commentstyle=\color{gray}\upshape,
|
||||
morestring=[b][\color{black}\itshape\mdseries]",
|
||||
morestring=[s][\bfseries]{>}{<},
|
||||
morecomment=[s]{<?}{?>},
|
||||
stringstyle=\color{black},
|
||||
identifierstyle=\color{blue}\bfseries,
|
||||
keywordstyle=\color{black}\bfseries, % keyword style
|
||||
tagstyle=\color{black}\bfseries,
|
||||
}
|
||||
|
||||
\begin{listing}
|
||||
\resizebox*{!}{\textheight}{
|
||||
\lstinputlisting[language=XML2]{mwre/povray.iwir}}
|
||||
\caption{IWIR specification of the POV-Ray workflow.}
|
||||
\label{lst:povray_iwir}
|
||||
\end{listing}
|
||||
|
||||
Listing~\ref{lst:povray_iwir} shows the IWIR specification of our POV-Ray workflow. The \texttt{toplevel} composite activity represents the start of the workflow and is defined in lines~\ref{povray:iwir:toplevel:start}~--~\ref{povray:iwir:toplevel:end}. The input ports of the \texttt{toplevel} activity (one file and two integers) are defined in lines~\ref{povray:iwir:toplevel:inports:start}~--~\ref{povray:iwir:toplevel:inports:end} and also represent the workflow input ports. A real-world POV-Ray workflow has more input parameters, but we omitted them for brevity reasons. The output ports of the \texttt{toplevel} activity (one file) defined in lines~\ref{povray:iwir:toplevel:outports:start}~--~\ref{povray:iwir:toplevel:outports:end} again represent the workflow output ports too. Lines~\ref{povray:iwir:pfor:start}~--~\ref{povray:iwir:pfor:end} represent the \texttt{parallel for} \texttt{ParallelFor} loop activity containing the atomic activities \texttt{SceneFile} (lines~\ref{povray:iwir:SceneFile:start}~--~\ref{povray:iwir:SceneFile:end}) and \texttt{Render} (lines~\ref{povray:iwir:Render:start}~--~\ref{povray:iwir:Render:end}). The loop activity is then followed by the atomic activity \texttt{Convert}, represented in lines~\ref{povray:iwir:Convert:start}~--~\ref{povray:iwir:Convert:end}.
|
||||
|
||||
\subsection{Source-to-source compiler}
|
||||
The IWIR workflow specification is then given to the source-to-source compiler (\circled{2}), which translates it into a C++ \emph{workflow program} using the API provided by MWRE. We believe that compiling the workflow application into a native executable program is the way to achieve the ``best'' performance on shared-memory manycore systems while minimizing enactment latencies and other middle-ware overheads. The compiler is also responsible for mapping the abstract workflow activity types to concrete activity implementations. Performing this task at compile-time, instead of runtime as done by most DCI workflow systems, saves additional overhead and eases configuration of the workflow program. For this purpose, the compiler has access to a repository that contains activity implementations in form of pre-compiled libraries, binaries, GPU kernels (i.e. \texttt{CUDA}, \texttt{OpenCL}), source-code snippets, and shell-scripts. The compiler also allows a $1$-to-$n$ mapping of activity types to implementations. Meta-data stored for each mapping allows the scheduler to efficiently select the most suitable implementation at runtime.
|
||||
Using a source-to-source compiler also allows applying transformations to the workflow structure to optimize the performance of the generated workflow program, similar to the compiler optimisations for shared memory systems.
|
||||
We describe the source-to-source compiler in Section~\ref{sec:Source-to-Source-Compiler} in detail.
|
||||
|
||||
|
||||
\subsection{Runtime environment}
|
||||
The runtime environment of MWRE (\circled{3}) invokes and executes the workflow program created by the source-to-source compiler. It is implemented as a C++ library considering several performance concerns, such as overhead, memory footprint, and resource utilization.
|
||||
We describe MWRE workflow engine in Section~\ref{sec:MWRE-EnactmentModel} in detail.
|
||||
@@ -0,0 +1,4 @@
|
||||
|
||||
\chapter{Manycore Workflow Runtime Engine (MWRE)}
|
||||
|
||||
\input{mwre/mwre-architecture}
|
||||
Executable
+67
@@ -0,0 +1,67 @@
|
||||
<IWIR version="1.1" wfname="NewWorkflow" xmlns="http://shiwa-workflow.eu/IWIR">
|
||||
<blockScope name="toplevel"> (*@\label{povray:iwir:toplevel:start}@*)
|
||||
<inputPorts> (*@\label{povray:iwir:toplevel:inports:start}@*)
|
||||
<inputPort name="scene" type="string"/>
|
||||
<inputPort name="totalFrames" type="integer"/>
|
||||
<inputPort name="framesPerActivity" type="integer"/>
|
||||
</inputPorts> (*@\label{povray:iwir:toplevel:inports:end}@*)
|
||||
<body>
|
||||
<parallelFor name="ParallelFor"> (*@\label{povray:iwir:pfor:start}@*)
|
||||
<inputPorts>
|
||||
<inputPort name="scene" type="string"/>
|
||||
<inputPort name="numFrames" type="integer"/>
|
||||
<loopCounter name="frameCounter" from="1" to="" step=""/>
|
||||
</inputPorts>
|
||||
<body>
|
||||
<task name="SceneFile" tasktype="SceneFile"> (*@\label{povray:iwir:SceneFile:start}@*)
|
||||
<inputPorts>
|
||||
<inputPort name="scene" type="string"/>
|
||||
</inputPorts>
|
||||
<outputPorts>
|
||||
<outputPort name="povFile" type="file"/>
|
||||
</outputPorts>
|
||||
</task> (*@\label{povray:iwir:SceneFile:end}@*)
|
||||
<task name="Render" tasktype="Render"> (*@\label{povray:iwir:Render:start}@*)
|
||||
<inputPorts>
|
||||
<inputPort name="povFile" type="file"/>
|
||||
<inputPort name="startFrame" type="integer"/>
|
||||
<inputPort name="numFrames" type="integer"/>
|
||||
</inputPorts>
|
||||
<outputPorts>
|
||||
<outputPort name="frames" type="collection/file"/>
|
||||
</outputPorts>
|
||||
</task> (*@\label{povray:iwir:Render:end}@*)
|
||||
</body>
|
||||
<outputPorts>
|
||||
<outputPort name="frames" type="collection/collection/file"/>
|
||||
</outputPorts>
|
||||
<links>
|
||||
<link from="ParallelFor/scene" to="SceneFile/scene"/>
|
||||
<link from="SceneFile/povFile" to="Render/povFile"/>
|
||||
<link from="ParallelFor/numFrames" to="Render/numFrames"/>
|
||||
<link from="ParallelFor/frameCounter" to="Render/startFrame"/>
|
||||
<link from="Render/frames" to="ParallelFor/frames"/>
|
||||
</links>
|
||||
</parallelFor> (*@\label{povray:iwir:pfor:end}@*)
|
||||
<task name="Convert" tasktype="Convert"> (*@\label{povray:iwir:Convert:start}@*)
|
||||
<inputPorts>
|
||||
<inputPort name="frames" type="collection/file"/>
|
||||
</inputPorts>
|
||||
<outputPorts>
|
||||
<outputPort name="outFile" type="file"/>
|
||||
</outputPorts>
|
||||
</task> (*@\label{povray:iwir:Convert:end}@*)
|
||||
</body>
|
||||
<outputPorts> (*@\label{povray:iwir:toplevel:outports:start}@*)
|
||||
<outputPort name="finalMovie" type="file"/>
|
||||
</outputPorts> (*@\label{povray:iwir:toplevel:outports:end}@*)
|
||||
<links>
|
||||
<link from="toplevel/totalFrames" to="ParallelFor/frameCounter/to"/>
|
||||
<link from="toplevel/framesPerActivity" to="ParallelFor/frameCounter/step"/>
|
||||
<link from="toplevel/framesPerActivity" to="ParallelFor/numFrames"/>
|
||||
<link from="toplevel/scene" to="ParallelFor/scene"/>
|
||||
<link from="ParallelFor/frames" to="Convert/frames"/>
|
||||
<link from="Convert/outFile" to="toplevel/finalMovie"/>
|
||||
</links>
|
||||
</blockScope> (*@\label{povray:iwir:toplevel:end}@*)
|
||||
</IWIR>
|
||||
@@ -0,0 +1,261 @@
|
||||
[General]
|
||||
def_graphic_ext=eps
|
||||
img_extIsRegExp=false
|
||||
img_extensions=.eps .jpg .jpeg .png .pdf .ps .fig .gif
|
||||
kileprversion=2
|
||||
kileversion=2.1.3
|
||||
lastDocument=mwre/mwre-architecture.tex
|
||||
masterDocument=
|
||||
name=PhD Thesis
|
||||
pkg_extIsRegExp=false
|
||||
pkg_extensions=.cls .sty .bbx .cbx .lbx
|
||||
src_extIsRegExp=false
|
||||
src_extensions=.tex .ltx .latex .dtx .ins
|
||||
|
||||
[Tools]
|
||||
MakeIndex=
|
||||
QuickBuild=
|
||||
|
||||
[document-settings,item:background/background-main.tex]
|
||||
Bookmarks=
|
||||
Encoding=UTF-8
|
||||
Highlighting=LaTeX
|
||||
Indentation Mode=normal
|
||||
Mode=LaTeX
|
||||
|
||||
[document-settings,item:background/workflowmodel.tex]
|
||||
Bookmarks=
|
||||
Encoding=UTF-8
|
||||
Highlighting=LaTeX
|
||||
Indentation Mode=normal
|
||||
Mode=LaTeX
|
||||
|
||||
[document-settings,item:biblio.bib]
|
||||
Bookmarks=
|
||||
Encoding=UTF-8
|
||||
Highlighting=BibTeX
|
||||
Indentation Mode=normal
|
||||
Mode=BibTeX
|
||||
|
||||
[document-settings,item:introduction/introduction-main.tex]
|
||||
Bookmarks=
|
||||
Encoding=UTF-8
|
||||
Highlighting=LaTeX
|
||||
Indentation Mode=normal
|
||||
Mode=LaTeX
|
||||
|
||||
[document-settings,item:mwre/mwre-architecture.tex]
|
||||
Bookmarks=
|
||||
Encoding=UTF-8
|
||||
Highlighting=LaTeX
|
||||
Indentation Mode=normal
|
||||
Mode=LaTeX
|
||||
|
||||
[document-settings,item:mwre/mwre-main.tex]
|
||||
Bookmarks=
|
||||
Encoding=UTF-8
|
||||
Highlighting=LaTeX
|
||||
Indentation Mode=normal
|
||||
Mode=LaTeX
|
||||
|
||||
[document-settings,item:thesis.tex]
|
||||
Bookmarks=
|
||||
Encoding=UTF-8
|
||||
Highlighting=LaTeX
|
||||
Indentation Mode=normal
|
||||
Mode=LaTeX
|
||||
|
||||
[document-settings,item:titlepage.tex]
|
||||
Bookmarks=
|
||||
Encoding=UTF-8
|
||||
Highlighting=LaTeX
|
||||
Indentation Mode=normal
|
||||
Mode=LaTeX
|
||||
|
||||
[item:background/background-main.tex]
|
||||
archive=true
|
||||
column=20
|
||||
encoding=UTF-8
|
||||
highlight=LaTeX
|
||||
line=1
|
||||
mode=LaTeX
|
||||
open=true
|
||||
order=2
|
||||
|
||||
[item:background/workflowmodel.tex]
|
||||
archive=true
|
||||
column=18
|
||||
encoding=UTF-8
|
||||
highlight=LaTeX
|
||||
line=5
|
||||
mode=LaTeX
|
||||
open=false
|
||||
order=-1
|
||||
|
||||
[item:biblio.bib]
|
||||
archive=true
|
||||
column=0
|
||||
encoding=UTF-8
|
||||
highlight=BibTeX
|
||||
line=0
|
||||
mode=BibTeX
|
||||
open=false
|
||||
order=-1
|
||||
|
||||
[item:conclusion/conclusion-main.tex]
|
||||
archive=true
|
||||
column=7536750
|
||||
encoding=
|
||||
highlight=
|
||||
line=0
|
||||
mode=
|
||||
open=false
|
||||
order=-1
|
||||
|
||||
[item:introduction/introduction-main.tex]
|
||||
archive=true
|
||||
column=0
|
||||
encoding=UTF-8
|
||||
highlight=LaTeX
|
||||
line=0
|
||||
mode=LaTeX
|
||||
open=false
|
||||
order=-1
|
||||
|
||||
[item:mwre/mwre-architecture.tex]
|
||||
archive=true
|
||||
column=64
|
||||
encoding=UTF-8
|
||||
highlight=LaTeX
|
||||
line=21
|
||||
mode=LaTeX
|
||||
open=true
|
||||
order=4
|
||||
|
||||
[item:mwre/mwre-main.tex]
|
||||
archive=true
|
||||
column=30
|
||||
encoding=UTF-8
|
||||
highlight=LaTeX
|
||||
line=3
|
||||
mode=LaTeX
|
||||
open=true
|
||||
order=3
|
||||
|
||||
[item:phdthesis.kilepr]
|
||||
archive=true
|
||||
column=1
|
||||
encoding=
|
||||
highlight=
|
||||
line=0
|
||||
mode=
|
||||
open=false
|
||||
order=-1
|
||||
|
||||
[item:scheduling/scheduling-main.tex]
|
||||
archive=true
|
||||
column=0
|
||||
encoding=
|
||||
highlight=
|
||||
line=0
|
||||
mode=
|
||||
open=false
|
||||
order=-1
|
||||
|
||||
[item:thesis.tex]
|
||||
archive=true
|
||||
column=28
|
||||
encoding=UTF-8
|
||||
highlight=LaTeX
|
||||
line=29
|
||||
mode=LaTeX
|
||||
open=true
|
||||
order=0
|
||||
|
||||
[item:titlepage.tex]
|
||||
archive=true
|
||||
column=0
|
||||
encoding=UTF-8
|
||||
highlight=LaTeX
|
||||
line=6
|
||||
mode=LaTeX
|
||||
open=true
|
||||
order=1
|
||||
|
||||
[item:wepevaluation/wepevaluation-main.tex]
|
||||
archive=true
|
||||
column=0
|
||||
encoding=
|
||||
highlight=
|
||||
line=0
|
||||
mode=
|
||||
open=false
|
||||
order=-1
|
||||
|
||||
[item:workflowtransformations/workflowtransformations-main.tex]
|
||||
archive=true
|
||||
column=0
|
||||
encoding=
|
||||
highlight=
|
||||
line=0
|
||||
mode=
|
||||
open=false
|
||||
order=-1
|
||||
|
||||
[item:workflowtranslation/workflowtranslation-main.tex]
|
||||
archive=true
|
||||
column=0
|
||||
encoding=
|
||||
highlight=
|
||||
line=0
|
||||
mode=
|
||||
open=false
|
||||
order=-1
|
||||
|
||||
[view-settings,view=0,item:background/background-main.tex]
|
||||
CursorColumn=20
|
||||
CursorLine=1
|
||||
JumpList=
|
||||
ViMarks=.,3,16,[,3,9,],3,16
|
||||
|
||||
[view-settings,view=0,item:background/workflowmodel.tex]
|
||||
CursorColumn=18
|
||||
CursorLine=5
|
||||
JumpList=
|
||||
ViMarks=.,5,15,[,5,15,],5,15
|
||||
|
||||
[view-settings,view=0,item:biblio.bib]
|
||||
CursorColumn=0
|
||||
CursorLine=0
|
||||
JumpList=
|
||||
ViMarks=.,34,0,[,1,0,],-1,-1
|
||||
|
||||
[view-settings,view=0,item:introduction/introduction-main.tex]
|
||||
CursorColumn=0
|
||||
CursorLine=0
|
||||
JumpList=
|
||||
ViMarks=
|
||||
|
||||
[view-settings,view=0,item:mwre/mwre-architecture.tex]
|
||||
CursorColumn=64
|
||||
CursorLine=21
|
||||
JumpList=
|
||||
ViMarks=.,21,63,[,21,59,],21,63
|
||||
|
||||
[view-settings,view=0,item:mwre/mwre-main.tex]
|
||||
CursorColumn=30
|
||||
CursorLine=3
|
||||
JumpList=
|
||||
ViMarks=.,1,9,[,1,9,],1,47
|
||||
|
||||
[view-settings,view=0,item:thesis.tex]
|
||||
CursorColumn=28
|
||||
CursorLine=29
|
||||
JumpList=
|
||||
ViMarks=.,29,0,[,26,0,],29,27
|
||||
|
||||
[view-settings,view=0,item:titlepage.tex]
|
||||
CursorColumn=0
|
||||
CursorLine=6
|
||||
JumpList=
|
||||
ViMarks=
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
\chapter{Full-Ahead Scheduling}
|
||||
+65
@@ -0,0 +1,65 @@
|
||||
\documentclass[
|
||||
a4paper, % paper size
|
||||
11pt, % font size
|
||||
% DIV=15, % used for typearea calculation
|
||||
% headsepline, % add head line to border calculation
|
||||
oneside, % onesided document
|
||||
footnotes = multiple, % visually separate two consecutive footnotes
|
||||
% toc = index, % add index to table of contents
|
||||
numbers = auto, % automatic placing of end dot in numbering
|
||||
% pagesize % used for flexibility
|
||||
]{scrbook}
|
||||
|
||||
|
||||
\usepackage[utf8]{inputenc}
|
||||
|
||||
\usepackage{wrapfig}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{caption}
|
||||
\usepackage{subcaption}
|
||||
\usepackage{xcolor}
|
||||
\usepackage{listings}
|
||||
\usepackage{url}
|
||||
|
||||
\usepackage{tikz}
|
||||
\newcommand*\circled[1]{\tikz[baseline=(char.base)]{\node[shape=circle,draw,inner sep=0.5pt] (char) {#1};}}
|
||||
|
||||
\usepackage{float}
|
||||
\floatstyle{ruled}
|
||||
\newfloat{listing}{tbph}{listing}
|
||||
\floatname{listing}{Listing}
|
||||
|
||||
|
||||
% Bibliography
|
||||
%\usepackage[backend=bibtex,style=numeric]{biblatex}
|
||||
%\addbibresource{biblio.bib}
|
||||
|
||||
|
||||
|
||||
\begin{document}
|
||||
|
||||
|
||||
\include{titlepage}
|
||||
|
||||
\tableofcontents
|
||||
|
||||
\include{introduction/introduction-main}
|
||||
|
||||
\include{background/background-main}
|
||||
|
||||
\include{workflowtranslation/workflowtranslation-main}
|
||||
|
||||
\include{mwre/mwre-main}
|
||||
|
||||
\include{scheduling/scheduling-main}
|
||||
|
||||
\include{wepevaluation/wepevaluation-main}
|
||||
|
||||
\include{workflowtransformations/workflowtransformations-main}
|
||||
|
||||
\include{conclusion/conclusion-main}
|
||||
|
||||
\bibliographystyle{abbrv}
|
||||
\bibliography{biblio}
|
||||
|
||||
\end{document}
|
||||
@@ -0,0 +1,6 @@
|
||||
|
||||
\title{Workflows on Manycores}
|
||||
\author{Matthias Janetschek}
|
||||
\date{Sometime 2017/2018}
|
||||
|
||||
\maketitle
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
\chapter{WEP Evaluation}
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
\chapter{Workflow Transformations}
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
\chapter{Workflow-to-Workflow Translation}
|
||||
Reference in New Issue
Block a user