我的状态机在每次创建某个请求事件时都有一个自循环。我想根据键将这些事件存储在本地上下文列表中,并且每次执行这个self循环时,都会将一个元素附加到列表中。然后,在某个期满周期(例如1小时)之后,将该列表添加到SCXML的全局上下文中。我如何才能做到这一点?
基本上,我希望在触发特定操作之前聚合请求。
<state id="S02" label="REQUEST CREATED">
<onentry>
<action:trigger id="ACC1" name="EXPIRY_EVENT_expiry.sm00007" />
</onentry>
<transition event="expiry.sm00007" target="S03">
<action:trigger id="ACC2" name="TO_DO_SOMETHING" />
// add the local event list to global context
</transition>
<transition event=reqCreated" target="S02" >
// keep adding the event to local context like appending to list
</transition>
</state>发布于 2015-06-17 03:28:26
在SCXML规范中,所有的数据模型变量都是全局的,所以没有真正的“局部”上下文。但是您可以使用键来索引JavaScript对象。类似于:
<datamodel>
<data id="globalEventList"/>
<data id="localEventListMap" expr="{}"/>
<data id="localKey" expr="'foo'"/>
</datemodel>
<state id="init">
<onentry>
<script>
localEventListMap[localKey] = [];
</script>
</onentry>
<transition target="S02"/>
</state>
<state id="S02" label="REQUEST CREATED">
<onentry>
<action:trigger id="ACC1" name="EXPIRY_EVENT_expiry.sm00007" />
</onentry>
<transition event="expiry.sm00007" target="S03">
<action:trigger id="ACC2" name="TO_DO_SOMETHING" />
<script>
// add the local event list to global context
globalEventList = localEventListMap[key];
</script>
</transition>
<transition event="reqCreated" target="S02" >
<script>
// keep adding the event to local context like appending to list
localEventListMap[key].push(_event);
</script>
</transition>
</state>https://stackoverflow.com/questions/30861089
复制相似问题