2016-03-09 14 views
1

Я хочу осуществить такого рода в условного перехода в SCXML:Являются ли условные цели в <transition> блоках, поддерживаемых в 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> 
+0

Спасибо за ответ @ jbeard4. Но мой главный мотив состоит в том, чтобы знать, может ли блок «target» быть удален из тега верхнего уровня и помещаться в любой из внутренних операторов тела, таких как . Разрешает ли SCXML это? – user1598865

+1

Почему вы хотите это сделать? – jbeard4

+0

Нет, SCXML (стандарт) не предоставляет механизм для указания цели в любом месте, кроме атрибута элемента ''. Для реализации моей SCXML моей компании мы добавили атрибут 'targetexpr', который оценивает код для определения цели. – Phrogz