2016-03-09 24 views
1

我想要實現這個不大不小的條件轉換在SCXML:SCXML支持的<transition>塊中是否有條件的目標?

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。但我的主要動機是要知道是否可以將「目標」塊從頂級標籤中取出,並將其放入之類的任何內部機構語句中。 SCXML是否允許這樣做? – user1598865

+1

你爲什麼要這樣做? – jbeard4

+0

不,SCXML(標準)沒有提供一種機制來指定除''元素屬性以外的任何地方的目標。對於我公司的SCXML實現,我們添加了一個「targetexpr」屬性,用於評估代碼以確定目標。 – Phrogz

相關問題