Route to Fetched Targets With Invoking SCXML Strategies

The following SCXML strategy uses the results of a fetch request to construct routing targets.

  1. Fetched files content:
    1. File //myhost/Fetch_1.txt:
               {"id":813, "id1":819}
               
    2. File //myhost/Fetch_2.txt:
               {"id":511, "id1":517}
               
  2. Root strategy:

    <scxml version="1.0" xmlns="http://www.w3.org/2005/07/scxml"
            xmlns:queue="www.genesyslab.com/modules/queue"
            xmlns:dialog="www.genesyslab.com/modules/dialog"
            xmlns:session="www.genesyslab.com/modules/session"
            xmlns:xi= “http://www.w3.org/2001/XInclude”
            initial="waitinteraction">
    
    <script>
        var data1;
        var data2;
    </script>
    
    <state id="waitinteraction">
       <transition event="interaction.added" target="getdata1"/>
    </state>
    
    <state id="getdata1">
        <onentry>
           <session:fetch srcexpr="'http://myhost/Fetch_1.txt'"/>
        </onentry>
        <transition event="session.fetch.done" target="getdata2">
            <script>
               data1= JSON.parse(_event.data.content);
            </script>
        </transition>
        <transition event="error.session.fetch" target="error"/>
    </state>
    
    <state id="getdata2">
        <onentry>
           <session:fetch srcexpr="'http://myhost/Fetch_2.txt'"/>
        </onentry>
        <transition event="session.fetch.done" target="initial">
            <script>
               data2= JSON.parse(_event.data.content);
            </script>
        </transition>
        <transition event="error.session.fetch" target="error"/>
    </state>
    
    <state id="initial">
     <transition cond="_genesys.ixn.interactions[0].userdata['switch']=='1'"
     target="queued"/>
     <transition cond="_genesys.ixn.interactions[0].userdata['switch']=='2'"
     target="queued1"/>
    </state>
    
    <state id="queued">
     <onentry>
      <queue:submit queue="'vq1'" priority="5" timeout="2">
       <queue:targets type="skill" statserver="'Single_StatServer'">
        <queue:target
            skillexpr="'switch=1&id>' + data1.id + '&id<' + data1.id1"/>
       </queue:targets>
      </queue:submit>
     </onentry>
    
    
     <transition event="queue.submit.done" target="exit" />
     <transition event="error.queue.submit" target="q2.queued" />
    </state>
    
    <state id="queued1">
     <onentry>
      <queue:submit queue="'vq1'" priority="5" timeout="2">
       <queue:targets type="skill" statserver="'Single_StatServer'">
        <queue:target
             skillexpr="'switch=1&id>'+ data2.id + '&id<' + data2.id1"/>
       </queue:targets>
      </queue:submit>
     </onentry>
    
     <transition event="queue.submit.done" target="exit" />
     <transition event="error.queue.submit" target="q3.queued" />
    </state>
    
    <xi:include  resolved ="q2" href="Inv_Queue_2.xml" xpointer="queued" >
    <xi:include  resolved ="q3" href="Inv_Queue_3.xml" xpointer="queued" >
    
    <final id = "exit"/>
    <final id = "error"/>
    
    </scxml>
    
  3. Strategies making second-chance routing to queues (if first queue:submit failed):
    1. File //myhost/Inv_Queue_2.xml:

      <scxml version="1.0" xmlns="http://www.w3.org/2005/07/scxml"
              xmlns:queue="www.genesyslab.com/modules/queue"
              initial="initial">
      
      <state id="initial" >
        <transition event="interaction.added" target="queued"/>
      </state>
      
      <state id="queued">
        <onentry>
          <queue:submit queue="'vq1'" priority="5" timeout="100">
            <queue:targets type="queue">
              <queue:target name="'8112_sw1'"/>
            </queue:targets>
          </queue:submit>
        </onentry>
      
        <transition event="queue.submit.done" target="exit" />
        <transition event="error.queue.submit" target="error" />
      </state>
      
      <final id = "exit"/>
      <final id = "error"/>
      
      </scxml>
      
    2. File //myhost/Inv_Queue_3.xml:

      <scxml version="1.0" xmlns="http://www.w3.org/2005/07/scxml"
              xmlns:queue="www.genesyslab.com/modules/queue"
              initial="initial">
      
      <state id="initial" >
        <transition event="interaction.added" target="queued"/>
      </state>
      
      <state id="queued">
        <onentry>
          <queue:submit queue="'vq1'" priority="5" timeout="100">
            <queue:targets type="queue">
              <queue:target name="'8113_sw1'"/>
            </queue:targets>
          </queue:submit>
        </onentry>
      
        <transition event="queue.submit.done" target="exit" />
        <transition event="error.queue.submit" target="error" />
      </state>
      
      <final id = "exit"/>
      <final id = "error"/>
      
      </scxml>