<?xml version="1.0" encoding="UTF-8"?>
<s:scufl xmlns:s="http://org.embl.ebi.escience/xscufl/0.1alpha" version="0.2" log="0">
  <s:workflowdescription lsid="urn:lsid:www.mygrid.org.uk:operation:O212J5USSV4" author="Peter Li" title="interproscan1">A test workflow using the interproscan service at the EBI.</s:workflowdescription>
  <s:processor name="ProbeSetId" boring="true">
    <s:stringconstant>1001_at</s:stringconstant>
  </s:processor>
  <s:processor name="contentXML">
    <s:local>
      org.embl.ebi.escience.scuflworkers.java.XMLInputSplitter
      <s:extensions>
        <s:arraytype optional="false" unbounded="false" typename="WSArrayofData" name="content" qname="{http://www.ebi.ac.uk/WSInterProScan}WSArrayofData">
          <s:elementtype>
            <s:complextype optional="false" unbounded="false" typename="data" name="" qname="{http://www.ebi.ac.uk/WSInterProScan}data">
              <s:elements>
                <s:basetype optional="false" unbounded="false" typename="string" name="type" qname="{http://www.w3.org/2001/XMLSchema}string" />
                <s:basetype optional="false" unbounded="false" typename="string" name="content" qname="{http://www.w3.org/2001/XMLSchema}string" />
              </s:elements>
            </s:complextype>
          </s:elementtype>
        </s:arraytype>
      </s:extensions>
    </s:local>
  </s:processor>
  <s:processor name="WSArrayofDataXML">
    <s:defaults>
      <s:default name="type">sequence</s:default>
      <s:default name="content">uniprot:alk1_human</s:default>
    </s:defaults>
    <s:local>
      org.embl.ebi.escience.scuflworkers.java.XMLInputSplitter
      <s:extensions>
        <s:complextype optional="false" unbounded="false" typename="data" name="" qname="{http://www.ebi.ac.uk/WSInterProScan}data">
          <s:elements>
            <s:basetype optional="false" unbounded="false" typename="string" name="type" qname="{http://www.w3.org/2001/XMLSchema}string" />
            <s:basetype optional="false" unbounded="false" typename="string" name="content" qname="{http://www.w3.org/2001/XMLSchema}string" />
          </s:elements>
        </s:complextype>
      </s:extensions>
    </s:local>
  </s:processor>
  <s:processor name="params">
    <s:defaults>
      <s:default name="app">all</s:default>
      <s:default name="crc">0</s:default>
      <s:default name="seqtype">P</s:default>
      <s:default name="async">1</s:default>
      <s:default name="email">alabarga@ebi.ac.uk</s:default>
    </s:defaults>
    <s:local>
      org.embl.ebi.escience.scuflworkers.java.XMLInputSplitter
      <s:extensions>
        <s:complextype optional="false" unbounded="false" typename="inputParams" name="params" qname="{http://www.ebi.ac.uk/WSInterProScan}inputParams">
          <s:elements>
            <s:basetype optional="false" unbounded="false" typename="string" name="app" qname="{http://www.w3.org/2001/XMLSchema}string" />
            <s:basetype optional="false" unbounded="false" typename="boolean" name="crc" qname="{http://www.w3.org/2001/XMLSchema}boolean" />
            <s:basetype optional="false" unbounded="false" typename="string" name="seqtype" qname="{http://www.w3.org/2001/XMLSchema}string" />
            <s:basetype optional="false" unbounded="false" typename="int" name="trlen" qname="{http://www.w3.org/2001/XMLSchema}int" />
            <s:basetype optional="false" unbounded="false" typename="int" name="trtable" qname="{http://www.w3.org/2001/XMLSchema}int" />
            <s:basetype optional="false" unbounded="false" typename="boolean" name="goterms" qname="{http://www.w3.org/2001/XMLSchema}boolean" />
            <s:basetype optional="false" unbounded="false" typename="boolean" name="async" qname="{http://www.w3.org/2001/XMLSchema}boolean" />
            <s:basetype optional="false" unbounded="false" typename="string" name="outformat" qname="{http://www.w3.org/2001/XMLSchema}string" />
            <s:basetype optional="false" unbounded="false" typename="string" name="email" qname="{http://www.w3.org/2001/XMLSchema}string" />
          </s:elements>
        </s:complextype>
      </s:extensions>
    </s:local>
  </s:processor>
  <s:processor name="Byte___to_String">
    <s:local>org.embl.ebi.escience.scuflworkers.java.ByteArrayToString</s:local>
  </s:processor>
  <s:processor name="splitString">
    <s:defaults>
      <s:default name="regex">\s///\s</s:default>
    </s:defaults>
    <s:local>org.embl.ebi.escience.scuflworkers.java.SplitByRegex</s:local>
  </s:processor>
  <s:processor name="runInterProScan">
    <s:arbitrarywsdl>
      <s:wsdl>http://www.ebi.ac.uk/Tools/webservices/wsdl/WSInterProScan.wsdl</s:wsdl>
      <s:operation>runInterProScan</s:operation>
    </s:arbitrarywsdl>
  </s:processor>
  <s:processor name="poll">
    <s:defaults>
      <s:default name="type">tooloutput</s:default>
    </s:defaults>
    <s:arbitrarywsdl>
      <s:wsdl>http://www.ebi.ac.uk/Tools/webservices/wsdl/WSInterProScan.wsdl</s:wsdl>
      <s:operation>poll</s:operation>
    </s:arbitrarywsdl>
  </s:processor>
  <s:processor name="addInterproFeatures">
    <s:defaults>
      <s:default name="application">HMMPfam</s:default>
    </s:defaults>
    <s:arbitrarywsdl>
      <s:wsdl>http://dbk-ed.mib.man.ac.uk:8080/SwissProtFileWorker/services/SwissProtFileWorker?wsdl</s:wsdl>
      <s:operation>addInterproFeatures</s:operation>
    </s:arbitrarywsdl>
    <s:iterationstrategy>
      <i:dot xmlns:i="http://org.embl.ebi.escience/xscufliteration/0.1beta10">
        <i:iterator name="interpro" />
        <i:iterator name="swissprot" />
      </i:dot>
    </s:iterationstrategy>
  </s:processor>
  <s:processor name="checkStatusWorkflow">
    <s:workflow maxretries="10" retrydelay="30000">
      <s:scufl version="0.2" log="0">
        <s:workflowdescription lsid="urn:lsid:net.sf.taverna:wfDefinition:8eec7ed7-d494-4842-b35c-b6792ed19f32" author="" title="checkCompletion" />
        <s:processor name="Fail_if_false">
          <s:local critical="true">org.embl.ebi.escience.scuflworkers.java.FailIfFalse</s:local>
        </s:processor>
        <s:processor name="isDone">
          <s:beanshell>
            <s:scriptvalue>if (status.equals("DONE")){
				finished = "true";
			} else {
				finished = "false";
			}</s:scriptvalue>
            <s:beanshellinputlist>
              <s:beanshellinput s:syntactictype="'text/plain'">status</s:beanshellinput>
            </s:beanshellinputlist>
            <s:beanshelloutputlist>
              <s:beanshelloutput s:syntactictype="'text/plain'">finished</s:beanshelloutput>
            </s:beanshelloutputlist>
          </s:beanshell>
        </s:processor>
        <s:processor name="checkStatus">
          <s:arbitrarywsdl>
            <s:wsdl>http://www.ebi.ac.uk/Tools/webservices/wsdl/WSInterProScan.wsdl</s:wsdl>
            <s:operation>checkStatus</s:operation>
          </s:arbitrarywsdl>
        </s:processor>
        <s:link source="job" sink="checkStatus:jobid" />
        <s:link source="checkStatus:status" sink="isDone:status" />
        <s:link source="isDone:finished" sink="Fail_if_false:test" />
        <s:link source="checkStatus:status" sink="status" />
        <s:source name="job" />
        <s:sink name="status" />
      </s:scufl>
    </s:workflow>
  </s:processor>
  <s:processor name="ebi_uniprot">
    <s:description>The UniProt Knowledgebase is a central database of protein sequence and function created by joining the information contained in Swiss-Prot, TrEMBL, and PIR.</s:description>
    <s:defaults>
      <s:default name="fieldname">acc</s:default>
    </s:defaults>
    <s:soaplabwsdl>http://dbk-ed.mib.man.ac.uk:8080/axis/services/srs_ebi_uniprotsequence.ebi_uniprot</s:soaplabwsdl>
  </s:processor>
  <s:processor name="getSwissProtId">
    <s:arbitrarywsdl>
      <s:wsdl>http://dbk-ed.mib.man.ac.uk:8080/HumanAffymapper/services/HumanAffymapper?wsdl</s:wsdl>
      <s:operation>getSwissProt</s:operation>
    </s:arbitrarywsdl>
  </s:processor>
  <s:link source="Byte___to_String:string" sink="addInterproFeatures:interpro" />
  <s:link source="ProbeSetId:value" sink="getSwissProtId:probeSetId" />
  <s:link source="WSArrayofDataXML:output" sink="contentXML:WSArrayofData" />
  <s:link source="contentXML:output" sink="runInterProScan:content" />
  <s:link source="ebi_uniprot:result" sink="WSArrayofDataXML:content" />
  <s:link source="ebi_uniprot:result" sink="addInterproFeatures:swissprot" />
  <s:link source="getSwissProtId:getSwissProtReturn" sink="splitString:string" />
  <s:link source="runInterProScan:jobid" sink="checkStatusWorkflow:job" />
  <s:link source="runInterProScan:jobid" sink="poll:jobid" />
  <s:link source="Byte___to_String:string" sink="interpro" />
  <s:link source="addInterproFeatures:addInterproFeaturesReturn" sink="newSwissProt" />
  <s:link source="ebi_uniprot:result" sink="swissprot" />
  <s:link source="params:output" sink="runInterProScan:params" />
  <s:link source="poll:output" sink="Byte___to_String:bytes" />
  <s:link source="splitString:split" sink="ebi_uniprot:searchterm" />
  <s:sink name="interpro">
    <s:metadata>
      <s:mimeTypes>
        <s:mimeType>application/octet-stream</s:mimeType>
      </s:mimeTypes>
    </s:metadata>
  </s:sink>
  <s:sink name="swissprot" />
  <s:sink name="newSwissProt">
    <s:metadata>
      <s:mimeTypes>
        <s:mimeType>chemical/x-swissprot</s:mimeType>
      </s:mimeTypes>
    </s:metadata>
  </s:sink>
  <s:coordination name="poll_BLOCKON_checkStatusWorkflow">
    <s:condition>
      <s:state>Completed</s:state>
      <s:target>checkStatusWorkflow</s:target>
    </s:condition>
    <s:action>
      <s:target>poll</s:target>
      <s:statechange>
        <s:from>Scheduled</s:from>
        <s:to>Running</s:to>
      </s:statechange>
    </s:action>
  </s:coordination>
</s:scufl>

