<?xml version="1.0" ?>
<?xml:stylesheet type="text/xsl" href="http://twiki.mygrid.info/twiki/pub/Mygrid/WorkflowResources/sumwsfl.xsl"?>
<!-- Example workflow based on part of EMBOSS tutorial
     using soaplab services
     01.10.2002 updated 
     03.10.2002 ontology concepts added
 -->

<flowModel name="embossTutorial" serviceProviderType="http://www.aboutmygrid.org/ontology#biological_sequence_alignment_data string" logProvenance="true">

<!-- input type EMBL_nucleotide_sequence_id (STEP 1)
     for STEP 1B - biological_sequence_id (swissprot id query string)
 -->

<serviceProvider name="soaplab_reformatting_seqret" type="soaplab_seqret_derived">
    <locator type="static" service="http://industry.ebi.ac.uk/soaplab/wsdl/reformatting__seqret__derived.wsdl"/>
</serviceProvider>

<serviceProvider name="soaplab_translation_getorf" type="soaplab_getorf_derived">
    <locator type="static" service="http://industry.ebi.ac.uk/soaplab/wsdl/translation__getorf__derived.wsdl"/>
</serviceProvider>

<serviceProvider name="soaplab_translation_transeq" type="soaplab_transeq_derived">
    <locator type="static" service="http://industry.ebi.ac.uk/soaplab/wsdl/translation__transeq__derived.wsdl"/>
</serviceProvider>

<!-- only need to locate seqret once ??
<serviceProvider name="soaplab_reformatting_seqret" type="soaplab_seqret_derived">
    <locator type="static" service="http://industry.ebi.ac.uk/soaplab/wsdl/reformatting__seqret__derived.wsdl"/>
</serviceProvider>
-->

<serviceProvider name="soaplab_alignment_multiple_emma" type="soaplab_emma_derived">
    <locator type="static" service="http://industry.ebi.ac.uk/soaplab/wsdl/alignment_multiple__emma__derived.wsdl"/>
</serviceProvider>

<serviceProvider name="soaplab_profiles_prophecy" type="soaplab_prophecy_derived">
    <locator type="static" service="http://industry.ebi.ac.uk/soaplab/wsdl/profiles__prophecy__derived.wsdl"/>
</serviceProvider>

<serviceProvider name="soaplab_profiles_prophet" type="soaplab_prophet_derived">
    <locator type="static" service="http://industry.ebi.ac.uk/soaplab/wsdl/profiles__prophet__derived.wsdl"/>
</serviceProvider>

<!-- start STEP 1 seqret (derived) -->

<activity name="Create_activity1">
   <performedBy serviceProvider="soaplab_reformatting_seqret"/>
   <implement> <export>
	  <target portType="reformatting__seqret" operation="createEmptyJob"/>
     </export> </implement>
</activity>
<!-- takes void and returns jobId -->

<activity name="Set_activity1">
   <performedBy serviceProvider="soaplab_reformatting_seqret"/>
   <implement> <export>
	  <target portType="reformatting__seqret" operation="set_sequence_usa"/>
      </export> </implement>
</activity>
<!-- takes jobId and string and returns void -->

<activity name="Run_activity1">
   <performedBy serviceProvider="soaplab_reformatting_seqret"/>
   <implement> <export>
	  <target portType="reformatting__seqret" operation="run"/>
      </export> </implement>
</activity>
<!-- takes jobId and returns void -->

<activity name="WaitFor_activity1">
   <performedBy serviceProvider="soaplab_reformatting_seqret"/>
   <implement> <export>
	  <target portType="reformatting__seqret" operation="waitFor"/>
      </export> </implement>
</activity>
<!-- takes jobId and returns void -->

<activity name="Get_activity1">
   <performedBy serviceProvider="soaplab_reformatting_seqret"/>
   <implement> <export>
	  <target portType="reformatting__seqret" operation="get_outseq"/>
      </export> </implement>
</activity>
<!-- takes jobId and returns getoutseq result -->

<activity name="Destroy_activity1">
   <performedBy serviceProvider="soaplab_reformatting_seqret"/>
   <implement> <export>
	  <target portType="reformatting__seqret" operation="destroy"/>
      </export> </implement>
</activity>
<!-- probably not essential but tidies things up -->

<!-- end STEP 1 seqret (derived) -->

<!-- start STEP 2 getorf (derived) -->

<activity name="Create_activity2">
   <performedBy serviceProvider="soaplab_translation_getorf"/>
   <implement> <export>
	  <target portType="translation__getorf" operation="createEmptyJob"/>
     </export> </implement>
</activity>
<!-- takes void and returns jobId -->

<activity name="Set_activity2a">
   <performedBy serviceProvider="soaplab_translation_getorf"/>
   <implement> <export>
	  <target portType="translation__getorf" operation="set_sequence_direct_data"/>
      </export> </implement>
</activity>
<!-- takes jobId and string and returns void -->

<activity name="Set_activity2b">
   <performedBy serviceProvider="soaplab_translation_getorf"/>
   <implement> <export>
	  <target portType="translation__getorf" operation="set_minsize"/>
      </export> </implement>
</activity>
<!-- takes jobId and string and returns void -->

<activity name="Set_activity2c">
   <performedBy serviceProvider="soaplab_translation_getorf"/>
   <implement> <export>
	  <target portType="translation__getorf" operation="set_find"/>
      </export> </implement>
</activity>
<!-- takes jobId and string and returns void -->

<activity name="Run_activity2">
   <performedBy serviceProvider="soaplab_translation_getorf"/>
   <implement> <export>
	  <target portType="translation__getorf" operation="run"/>
      </export> </implement>
</activity>
<!-- takes jobId and returns void -->

<activity name="WaitFor_activity2">
   <performedBy serviceProvider="soaplab_translation_getorf"/>
   <implement> <export>
	  <target portType="translation__getorf" operation="waitFor"/>
      </export> </implement>
</activity>
<!-- takes jobId and returns void -->

<activity name="Get_activity2">
   <performedBy serviceProvider="soaplab_translation_getorf"/>
   <implement> <export>
	  <target portType="translation__getorf" operation="get_outseq"/>
      </export> </implement>
</activity>
<!-- takes jobId and returns get_outseq result -->

<activity name="Destroy_activity2">
   <performedBy serviceProvider="soaplab_translation_getorf"/>
   <implement> <export>
	  <target portType="translation__getorf" operation="destroy"/>
      </export> </implement>
</activity>
<!-- probably not essential but tidies things up -->

<!-- end STEP 2 getorf (derived) -->

<!-- start STEP 3 transeq (derived) -->


<activity name="Create_activity3">
   <performedBy serviceProvider="soaplab_translation_transeq"/>
   <implement> <export>
	  <target portType="translation__transeq" operation="createEmptyJob"/>
     </export> </implement>
</activity>
<!-- takes void and returns jobId -->

<activity name="Set_activity3">
   <performedBy serviceProvider="soaplab_translation_transeq"/>
   <implement> <export>
	  <target portType="translation__transeq" operation="set_sequence_direct_data"/>
      </export> </implement>
</activity>
<!-- takes jobId and string and returns void -->


<activity name="Run_activity3">
   <performedBy serviceProvider="soaplab_translation_transeq"/>
   <implement> <export>
	  <target portType="translation__transeq" operation="run"/>
      </export> </implement>
</activity>
<!-- takes jobId and returns void -->

<activity name="WaitFor_activity3">
   <performedBy serviceProvider="soaplab_translation_transeq"/>
   <implement> <export>
	  <target portType="translation__transeq" operation="waitFor"/>
      </export> </implement>
</activity>
<!-- takes jobId and returns void -->

<activity name="Get_activity3">
   <performedBy serviceProvider="soaplab_translation_transeq"/>
   <implement> <export>
	  <target portType="translation__transeq" operation="get_outseq"/>
      </export> </implement>
</activity>
<!-- takes jobId and returns specific result -->

<activity name="Destroy_activity3">
   <performedBy serviceProvider="soaplab_translation_transeq"/>
   <implement> <export>
	  <target portType="translation__transeq" operation="destroy"/>
      </export> </implement>
</activity>
<!-- probably not essential but tidies things up -->

<!-- end STEP 3 transeq (derived) -->

<!-- start STEP 1B seqret (derived) -->

<activity name="Create_activity1B">
   <performedBy serviceProvider="soaplab_reformatting_seqret"/>
   <implement> <export>
	  <target portType="reformatting__seqret" operation="createEmptyJob"/>
     </export> </implement>
</activity>
<!-- takes void and returns jobId -->

<activity name="Set_activity1B">
   <performedBy serviceProvider="soaplab_reformatting_seqret"/>
   <implement> <export>
	  <target portType="reformatting__seqret" operation="set_sequence_usa"/>
      </export> </implement>
</activity>
<!-- takes jobId and string and returns void -->

<activity name="Run_activity1B">
   <performedBy serviceProvider="soaplab_reformatting_seqret"/>
   <implement> <export>
	  <target portType="reformatting__seqret" operation="run"/>
      </export> </implement>
</activity>
<!-- takes jobId and returns void -->

<activity name="WaitFor_activity1B">
   <performedBy serviceProvider="soaplab_reformatting_seqret"/>
   <implement> <export>
	  <target portType="reformatting__seqret" operation="waitFor"/>
      </export> </implement>
</activity>
<!-- takes jobId and returns void -->

<activity name="Get_activity1B">
   <performedBy serviceProvider="soaplab_reformatting_seqret"/>
   <implement> <export>
	  <target portType="reformatting__seqret" operation="get_outseq"/>
      </export> </implement>
</activity>
<!-- takes jobId and returns results as a Map -->

<activity name="Destroy_activity1B">
   <performedBy serviceProvider="soaplab_reformatting_seqret"/>
   <implement> <export>
	  <target portType="reformatting__seqret" operation="destroy"/>
      </export> </implement>
</activity>
<!-- probably not essential but tidies things up -->

<!-- end STEP 1B seqret (derived) -->

<!-- start STEP 2B emma (derived) -->

<activity name="Create_activity2B">
   <performedBy serviceProvider="soaplab_alignment_multiple_emma"/>
   <implement> <export>
	  <target portType="alignment_multiple__emma" operation="createEmptyJob"/>
     </export> </implement>
</activity>
<!-- takes void and returns jobId -->

<activity name="Set_activity2B">
   <performedBy serviceProvider="soaplab_alignment_multiple_emma"/>
   <implement> <export>
	  <target portType="alignment_multiple__emma" operation="set_inseqs_direct_data"/>
      </export> </implement>
</activity>
<!-- takes jobId and string and returns void -->


<activity name="Run_activity2B">
   <performedBy serviceProvider="soaplab_alignment_multiple_emma"/>
   <implement> <export>
	  <target portType="alignment_multiple__emma" operation="run"/>
      </export> </implement>
</activity>
<!-- takes jobId and returns void -->

<activity name="WaitFor_activity2B">
   <performedBy serviceProvider="soaplab_alignment_multiple_emma"/>
   <implement> <export>
	  <target portType="alignment_multiple__emma" operation="waitFor"/>
      </export> </implement>
</activity>
<!-- takes jobId and returns void -->

<activity name="Get_activity2B">
   <performedBy serviceProvider="soaplab_alignment_multiple_emma"/>
   <implement> <export>
	  <target portType="alignment_multiple__emma" operation="get_outseq"/>
      </export> </implement>
</activity>
<!-- takes jobId and returns results as a Map -->

<activity name="Destroy_activity2B">
   <performedBy serviceProvider="soaplab_alignment_multiple_emma"/>
   <implement> <export>
	  <target portType="alignment_multiple__emma" operation="destroy"/>
      </export> </implement>
</activity>
<!-- probably not essential but tidies things up -->

<!-- end STEP 2B emma (derived) -->

<!-- start STEP 3B prophecy (derived) -->

<activity name="Create_activity3B">
   <performedBy serviceProvider="soaplab_profiles_prophecy"/>
   <implement> <export>
	  <target portType="profiles__prophecy" operation="createEmptyJob"/>
     </export> </implement>
</activity>
<!-- takes void and returns jobId -->

<activity name="Set_activity3Ba">
   <performedBy serviceProvider="soaplab_profiles_prophecy"/>
   <implement> <export>
	  <target portType="profiles__prophecy" operation="set_sequence_direct_data"/>
      </export> </implement>
</activity>
<!-- takes jobId and string and returns void -->

<activity name="Set_activity3Bb">
   <performedBy serviceProvider="soaplab_profiles_prophecy"/>
   <implement> <export>
	  <target portType="profiles__prophecy" operation="set_type"/>
      </export> </implement>
</activity>
<!-- takes jobId and string and returns void -->

<activity name="Run_activity3B">
   <performedBy serviceProvider="soaplab_profiles_prophecy"/>
   <implement> <export>
	  <target portType="profiles__prophecy" operation="run"/>
      </export> </implement>
</activity>
<!-- takes jobId and returns void -->

<activity name="WaitFor_activity3B">
   <performedBy serviceProvider="soaplab_profiles_prophecy"/>
   <implement> <export>
	  <target portType="profiles__prophecy" operation="waitFor"/>
      </export> </implement>
</activity>
<!-- takes jobId and returns void -->

<activity name="Get_activity3B">
   <performedBy serviceProvider="soaplab_profiles_prophecy"/>
   <implement> <export>
	  <target portType="profiles__prophecy" operation="get_outf"/>
      </export> </implement>
</activity>
<!-- takes jobId and returns specific result -->

<activity name="Destroy_activity3B">
   <performedBy serviceProvider="soaplab_profiles_prophecy"/>
   <implement> <export>
	  <target portType="profiles__prophecy" operation="destroy"/>
      </export> </implement>
</activity>
<!-- probably not essential but tidies things up -->

<!-- end STEP 3B prophecy (derived) -->

<!-- start STEP 4 prophet (derived) -->

<activity name="Create_activity4">
   <performedBy serviceProvider="soaplab_profiles_prophet"/>
   <implement> <export>
	  <target portType="profiles__prophet" operation="createEmptyJob"/>
     </export> </implement>
</activity>
<!-- takes void and returns jobId -->

<activity name="Set_activity4a">
   <performedBy serviceProvider="soaplab_profiles_prophet"/>
   <implement> <export>
	  <target portType="profiles__prophet" operation="set_sequence_direct_data"/>
      </export> </implement>
</activity>
<!-- takes jobId and string and returns void -->

<activity name="Set_activity4b">
   <performedBy serviceProvider="soaplab_profiles_prophet"/>
   <implement> <export>
	  <target portType="profiles__prophet" operation="set_infile_direct_data"/>
      </export> </implement>
</activity>
<!-- takes jobId and string and returns void -->

<activity name="Run_activity4">
   <performedBy serviceProvider="soaplab_profiles_prophet"/>
   <implement> <export>
	  <target portType="profiles__prophet" operation="run"/>
      </export> </implement>
</activity>
<!-- takes jobId and returns void -->

<activity name="WaitFor_activity4">
   <performedBy serviceProvider="soaplab_profiles_prophet"/>
   <implement> <export>
	  <target portType="profiles__prophet" operation="waitFor"/>
      </export> </implement>
</activity>
<!-- takes jobId and returns void -->

<activity name="Get_activity4">
   <performedBy serviceProvider="soaplab_profiles_prophet"/>
   <implement> <export>
	  <target portType="profiles__prophet" operation="get_outfile"/>
      </export> </implement>
</activity>
<!-- takes jobId and returns specific result -->

<activity name="Destroy_activity4">
   <performedBy serviceProvider="soaplab_profiles_prophet"/>
   <implement> <export>
	  <target portType="profiles__prophet" operation="destroy"/>
      </export> </implement>
</activity>
<!-- probably not essential but tidies things up -->

<!-- end STEP 4 prophet (derived) -->

<!-- start STEP 1 seqret (derived) -->

<dataLink source="Create_activity1" target="Set_activity1">
    <map sourceMessage="createEmptyJobResponse" targetMessage="set_sequence_usaRequest">
	<partMap source="return" target="jobId"/>
    </map>
</dataLink>

<dataLink source="flowSource" target="Set_activity1">
    <map sourceMessage="null" targetMessage="set_sequence_usaRequest">
	<partMap source="sequenceusa" target="value"/>
    </map>
</dataLink>

<dataLink source="Create_activity1" target="Run_activity1">
    <map sourceMessage="createEmptyJobResponse" targetMessage="runRequest">
	<partMap source="return" target="in0"/>
    </map>
</dataLink>

<dataLink source="Create_activity1" target="WaitFor_activity1">
    <map sourceMessage="createEmptyJobResponse" targetMessage="waitForRequest">
	<partMap source="return" target="in0"/>
    </map> 
</dataLink>

<dataLink source="Create_activity1" target="Get_activity1">
    <map sourceMessage="createEmptyJobResponse" targetMessage="get_outseqRequest">
	<partMap source="return" target="jobId"/>
    </map>
</dataLink>

<!-- output processed by step 2
<dataLink source="Get_activity1" target="flowSink">
    <map sourceMessage="get_outseqResponse" targetMessage="null">
	<partMap source="return" target="WFResult_String"/>
    </map> 
</dataLink>
-->

<dataLink source="Create_activity1" target="Destroy_activity1">
    <map sourceMessage="createEmptyJobResponse" targetMessage="destroyRequest">
	<partMap source="return" target="in0"/>
    </map>
</dataLink>

<!-- end STEP 1 seqret (derived) -->

<!-- start STEP 2 getorf (derived) -->

<dataLink source="Create_activity2" target="Set_activity2a">
    <map sourceMessage="createEmptyJobResponse" targetMessage="set_sequence_direct_dataRequest">
	<partMap source="return" target="jobId"/>
    </map>
</dataLink>

<dataLink source="Create_activity2" target="Set_activity2b">
    <map sourceMessage="createEmptyJobResponse" targetMessage="set_minsizeRequest">
	<partMap source="return" target="jobId"/>
    </map>
</dataLink>

<dataLink source="Create_activity2" target="Set_activity2c">
    <map sourceMessage="createEmptyJobResponse" targetMessage="set_findRequest">
	<partMap source="return" target="jobId"/>
    </map>
</dataLink>

<!-- output get_outseq in step 1 input to set_sequence_direct -->

<dataLink source="Get_activity1" target="Set_activity2a">
    <map sourceMessage="get_outseqResponse" targetMessage="set_sequence_direct_dataRequest">
	<partMap source="return" target="value"/>
    </map>
</dataLink>

<dataLink source="flowSource" target="Set_activity2b">
    <map sourceMessage="null" targetMessage="set_minsizeRequest">
	<partMap source="orfminsize" target="value"/>
    </map>
</dataLink>

<dataLink source="flowSource" target="Set_activity2c">
    <map sourceMessage="null" targetMessage="set_findRequest">
	<partMap source="orffind" target="value"/>
    </map>
</dataLink>

<dataLink source="Create_activity2" target="Run_activity2">
    <map sourceMessage="createEmptyJobResponse" targetMessage="runRequest">
	<partMap source="return" target="in0"/>
    </map>
</dataLink>

<dataLink source="Create_activity2" target="WaitFor_activity2">
    <map sourceMessage="createEmptyJobResponse" targetMessage="waitForRequest">
	<partMap source="return" target="in0"/>
    </map> 
</dataLink>

<dataLink source="Create_activity2" target="Get_activity2">
    <map sourceMessage="createEmptyJobResponse" targetMessage="get_outseqRequest">
	<partMap source="return" target="jobId"/>
    </map>
</dataLink>

<!-- 
<dataLink source="Get_activity2" target="flowSink">
    <map sourceMessage="get_outseqResponse" targetMessage="null">
	<partMap source="return" target="WFResult_String"/>
    </map> 
</dataLink>
-->

<dataLink source="Create_activity2" target="Destroy_activity2">
    <map sourceMessage="createEmptyJobResponse" targetMessage="destroyRequest">
	<partMap source="return" target="in0"/>
    </map>
</dataLink>

<!-- end STEP 2 getorf (derived) -->

<!-- start STEP 3 transeq (derived) -->

<dataLink source="Create_activity3" target="Set_activity3">
    <map sourceMessage="createEmptyJobResponse" targetMessage="set_sequence_direct_dataRequest">
	<partMap source="return" target="jobId"/>
    </map>
</dataLink>

<!-- output get_outseq in step 2 input to set_sequence_direct -->

<dataLink source="Get_activity2" target="Set_activity3">
    <map sourceMessage="get_outseqResponse" targetMessage="set_sequence_direct_dataRequest">
	<partMap source="return" target="value"/>
    </map>
</dataLink>

<dataLink source="Create_activity3" target="Run_activity3">
    <map sourceMessage="createEmptyJobResponse" targetMessage="runRequest">
	<partMap source="return" target="in0"/>
    </map>
</dataLink>

<dataLink source="Create_activity3" target="WaitFor_activity3">
    <map sourceMessage="createEmptyJobResponse" targetMessage="waitForRequest">
	<partMap source="return" target="in0"/>
    </map> 
</dataLink>

<dataLink source="Create_activity3" target="Get_activity3">
    <map sourceMessage="createEmptyJobResponse" targetMessage="get_outseqRequest">
	<partMap source="return" target="jobId"/>
    </map>
</dataLink>

<dataLink source="Create_activity3" target="Destroy_activity3">
    <map sourceMessage="createEmptyJobResponse" targetMessage="destroyRequest">
	<partMap source="return" target="in0"/>
    </map>
</dataLink>

<!-- end STEP 3 transeq (derived) -->

<!-- start STEP 1B seqret (derived) -->

<dataLink source="Create_activity1B" target="Set_activity1B">
    <map sourceMessage="createEmptyJobResponse" targetMessage="set_sequence_usaRequest">
	<partMap source="return" target="jobId"/>
    </map>
</dataLink>

<dataLink source="flowSource" target="Set_activity1B">
    <map sourceMessage="null" targetMessage="set_sequence_usaRequest">
	<partMap source="sequenceRelated" target="value"/>
    </map>
</dataLink>

<dataLink source="Create_activity1B" target="Run_activity1B">
    <map sourceMessage="createEmptyJobResponse" targetMessage="runRequest">
	<partMap source="return" target="in0"/>
    </map>
</dataLink>

<dataLink source="Create_activity1B" target="WaitFor_activity1B">
    <map sourceMessage="createEmptyJobResponse" targetMessage="waitForRequest">
	<partMap source="return" target="in0"/>
    </map> 
</dataLink>

<dataLink source="Create_activity1B" target="Get_activity1B">
    <map sourceMessage="createEmptyJobResponse" targetMessage="get_outseqRequest">
	<partMap source="return" target="jobId"/>
    </map>
</dataLink>

<dataLink source="Create_activity1B" target="Destroy_activity1B">
    <map sourceMessage="createEmptyJobResponse" targetMessage="destroyRequest">
	<partMap source="return" target="in0"/>
    </map>
</dataLink>

<!-- end STEP 1B seqret (derived) -->

<!-- start STEP 2B emma (derived) -->

<dataLink source="Create_activity2B" target="Set_activity2B">
    <map sourceMessage="createEmptyJobResponse" targetMessage="set_inseqs_direct_dataRequest">
	<partMap source="return" target="jobId"/>
    </map>
</dataLink>

<!-- output get_outseq in step 1B input to set_sequence_direct -->

<dataLink source="Get_activity1B" target="Set_activity2B">
    <map sourceMessage="get_outseqResponse" targetMessage="set_inseqs_direct_dataRequest">
	<partMap source="return" target="value"/>
    </map>
</dataLink>

<dataLink source="Create_activity2B" target="Run_activity2B">
    <map sourceMessage="createEmptyJobResponse" targetMessage="runRequest">
	<partMap source="return" target="in0"/>
    </map>
</dataLink>

<dataLink source="Create_activity2B" target="WaitFor_activity2B">
    <map sourceMessage="createEmptyJobResponse" targetMessage="waitForRequest">
	<partMap source="return" target="in0"/>
    </map> 
</dataLink>

<dataLink source="Create_activity2B" target="Get_activity2B">
    <map sourceMessage="createEmptyJobResponse" targetMessage="get_outseqRequest">
	<partMap source="return" target="jobId"/>
    </map>
</dataLink>

<dataLink source="Create_activity2B" target="Destroy_activity2B">
    <map sourceMessage="createEmptyJobResponse" targetMessage="destroyRequest">
	<partMap source="return" target="in0"/>
    </map>
</dataLink>

<!-- end STEP 2B emma (derived) -->

<!-- start STEP 3B prophecy (derived) -->

<dataLink source="Create_activity3B" target="Set_activity3Ba">
    <map sourceMessage="createEmptyJobResponse" targetMessage="set_sequence_direct_dataRequest">
	<partMap source="return" target="jobId"/>
    </map>
</dataLink>

<!-- output get_outseq in step 2B input to set_sequence_direct -->

<dataLink source="Get_activity2B" target="Set_activity3Ba">
    <map sourceMessage="get_outseqResponse" targetMessage="set_sequence_direct_dataRequest">
	<partMap source="return" target="value"/>
    </map>
</dataLink>

<dataLink source="Create_activity3B" target="Set_activity3Bb">
    <map sourceMessage="createEmptyJobResponse" targetMessage="set_sequence_direct_dataRequest">
	<partMap source="return" target="jobId"/>
    </map>
</dataLink>

<dataLink source="flowSource" target="Set_activity3Bb">
    <map sourceMessage="null" targetMessage="set_typeRequest">
	<partMap source="prophecyType" target="value"/>
    </map>
</dataLink>

<dataLink source="Create_activity3B" target="Run_activity3B">
    <map sourceMessage="createEmptyJobResponse" targetMessage="runRequest">
	<partMap source="return" target="in0"/>
    </map>
</dataLink>

<dataLink source="Create_activity3B" target="WaitFor_activity3B">
    <map sourceMessage="createEmptyJobResponse" targetMessage="waitForRequest">
	<partMap source="return" target="in0"/>
    </map> 
</dataLink>

<dataLink source="Create_activity3B" target="Get_activity3B">
    <map sourceMessage="createEmptyJobResponse" targetMessage="get_outfRequest">
	<partMap source="return" target="jobId"/>
    </map>
</dataLink>


<dataLink source="Create_activity3B" target="Destroy_activity3B">
    <map sourceMessage="createEmptyJobResponse" targetMessage="destroyRequest">
	<partMap source="return" target="in0"/>
    </map>
</dataLink>

<!-- end STEP 3B prophecy (derived) -->

<!-- start STEP 4 prophet (derived) -->

<dataLink source="Create_activity4" target="Set_activity4a">
    <map sourceMessage="createEmptyJobResponse" targetMessage="set_sequence_direct_dataRequest">
	<partMap source="return" target="jobId"/>
    </map>
</dataLink>

<!-- output get_outseq in step 3 input to set_sequence_direct -->

<dataLink source="Get_activity3" target="Set_activity4a">
    <map sourceMessage="get_outseqResponse" targetMessage="set_sequence_direct_dataRequest">
	<partMap source="return" target="value"/>
    </map>
</dataLink>

<dataLink source="Create_activity4" target="Set_activity4b">
    <map sourceMessage="createEmptyJobResponse" targetMessage="set_infile_direct_dataRequest">
	<partMap source="return" target="jobId"/>
    </map>
</dataLink>

<!-- output get_outf in step 3B input to set_infile_direct -->

<dataLink source="Get_activity3B" target="Set_activity4b">
    <map sourceMessage="get_outfResponse" targetMessage="set_infile_direct_dataRequest">
	<partMap source="get_outfReturn" target="value"/>
    </map>
</dataLink>

<dataLink source="Create_activity4" target="Run_activity4">
    <map sourceMessage="createEmptyJobResponse" targetMessage="runRequest">
	<partMap source="return" target="in0"/>
    </map>
</dataLink>

<dataLink source="Create_activity4" target="WaitFor_activity4">
    <map sourceMessage="createEmptyJobResponse" targetMessage="waitForRequest">
	<partMap source="return" target="in0"/>
    </map> 
</dataLink>

<dataLink source="Create_activity4" target="Get_activity4">
    <map sourceMessage="createEmptyJobResponse" targetMessage="get_outfileRequest">
	<partMap source="return" target="jobId"/>
    </map>
</dataLink>

<dataLink source="Get_activity4" target="flowSink">
    <map sourceMessage="get_outfileResponse" targetMessage="null">
	<partMap source="get_outfileReturn" target="WFResProphetString"/>
    </map> 
</dataLink>

<dataLink source="Create_activity4" target="Destroy_activity4">
    <map sourceMessage="createEmptyJobResponse" targetMessage="destroyRequest">
	<partMap source="return" target="in0"/>
    </map>
</dataLink>


<!-- end STEP 4 prophet (derived) -->

<controlLink source="flowSource" target="Create_activity1"/>

<controlLink source="Set_activity1" target="Run_activity1" />

<controlLink source="Run_activity1" target="WaitFor_activity1" />

<controlLink source="WaitFor_activity1" target="Get_activity1" />

<controlLink source="Get_activity1" target="Destroy_activity1" />


<controlLink source="Set_activity1" target="Create_activity2"/>

<controlLink source="Set_activity2a" target="Run_activity2" />
<controlLink source="Set_activity2b" target="Run_activity2" />
<controlLink source="Set_activity2c" target="Run_activity2" />

<controlLink source="Run_activity2" target="WaitFor_activity2" />

<controlLink source="WaitFor_activity2" target="Get_activity2" />

<controlLink source="Get_activity2" target="Destroy_activity2" />


<controlLink source="Set_activity2c" target="Create_activity3"/>

<controlLink source="Set_activity3" target="Run_activity3" />

<controlLink source="Run_activity3" target="WaitFor_activity3" />

<controlLink source="WaitFor_activity3" target="Get_activity3" />

<controlLink source="Get_activity3" target="Destroy_activity3" />

<!-- control links for 1B, 2B, 3B -->

<!-- <controlLink source="flowSource" target="Create_activity1B"/> -->
<controlLink source="flowSource" target="Create_activity1B"/>

<controlLink source="Set_activity1B" target="Run_activity1B" />

<controlLink source="Run_activity1B" target="WaitFor_activity1B" />

<controlLink source="WaitFor_activity1B" target="Get_activity1B" />

<controlLink source="Get_activity1B" target="Destroy_activity1B" />


<controlLink source="Set_activity1B" target="Create_activity2B"/>

<controlLink source="Set_activity2B" target="Run_activity2B" />

<controlLink source="Run_activity2B" target="WaitFor_activity2B" />

<controlLink source="WaitFor_activity2B" target="Get_activity2B" />

<controlLink source="Get_activity2B" target="Destroy_activity2B" />


<controlLink source="Set_activity2B" target="Create_activity3B"/>

<controlLink source="Set_activity3Ba" target="Run_activity3B" />
<controlLink source="Set_activity3Bb" target="Run_activity3B" />

<controlLink source="Run_activity3B" target="WaitFor_activity3B" />

<controlLink source="WaitFor_activity3B" target="Get_activity3B" />

<controlLink source="Get_activity3B" target="Destroy_activity3B" />

<!-- control links for 4 prophet -->


<controlLink source="Set_activity3" target="Create_activity4"/>

<controlLink source="Set_activity3Bb" target="Create_activity4"/>

<controlLink source="Set_activity4a" target="Run_activity4" />
<controlLink source="Set_activity4b" target="Run_activity4" />

<controlLink source="Run_activity4" target="WaitFor_activity4" />

<controlLink source="WaitFor_activity4" target="Get_activity4" />

<controlLink source="Get_activity4" target="Destroy_activity4" />

</flowModel>
