Поддерживаются ли условные цели в блоках <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() > .5"/>
<transition event="event_1" target="s03"/>
</state>
<state id="s02"/>
<state id="s03"/>
</scxml>