Поддерживаются ли условные цели в блоках <transition> в SCXML?

Я хочу реализовать этот вид условного перехода в SCXML:

current_state = s01  
if (Math.random() < 50) go to state s02  
  else go to state s03  

Поддерживается ли этот тип условных целей в SCXML?
Чтобы перевести его на язык SCXML, возможен ли эквивалент следующего фрагмента?

<transition event="event_1">
        <if cond="import java.util.Random; Math.abs(new Random().nextInt(100)) gt 50">
            <target="s02"/>
            <else/>
            <target="s03"/>
        </if>
</transition>

Буду признателен за любые ссылки на их документ. для этого / альтернативные стратегии справиться с этим.
Благодарю.

1 ответ

Решение

Что-то вроде следующего (непроверенного) кода будет делать то, что вы хотите.

<scxml 
    datamodel="ecmascript"
    xmlns="http://www.w3.org/2005/07/scxml"
    version="1.0">

    <state id="s01">
      <transition event="event_1" target="s02" cond="Math.random() &gt; .5"/>
      <transition event="event_1" target="s03"/>
    </state> 

    <state id="s02"/>

    <state id="s03"/>

</scxml>
Другие вопросы по тегам