<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mariush T. - Freelance Flex/PureMVC Developer - blog &#187; StateMachine</title>
	<atom:link href="http://mariusht.com/blog/tag/statemachine/feed/" rel="self" type="application/rss+xml" />
	<link>http://mariusht.com/blog</link>
	<description>A blog about Flex Development.</description>
	<lastBuildDate>Wed, 21 Apr 2010 13:22:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PureMVC StateMachine lockable door demo</title>
		<link>http://mariusht.com/blog/2009/07/14/puremvc-statemachine-lockable-door-demo/</link>
		<comments>http://mariusht.com/blog/2009/07/14/puremvc-statemachine-lockable-door-demo/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 15:06:31 +0000</pubDate>
		<dc:creator>Mariush T.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[PureMVC]]></category>
		<category><![CDATA[StateMachine]]></category>

		<guid isPermaLink="false">http://mariusht.com/blog/?p=1225</guid>
		<description><![CDATA[I created and slightly modified Lockable Door application mentioned in StateMachine presentation by Cliff Hall. Application have 3 states OPENED, CLOSED and LOCKED, makes use of entry, exit guards and also sends CHANGED annoucement(notification) for specific(CLOSED) state. This demo is great for beginners learning PureMVC StateMachine Utility.

FSM for Lockable Door
&#60;fsm initial={LockableDoor.STATE_CLOSED}&#62;
    &#60;state [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="" src="http://mariusht.com/files/blog/lockable_door/fsmDiagram.jpg" class="alignleft" width="172" height="75" />I created and slightly modified Lockable Door application mentioned in <a href="http://puremvc.tv/#P003/">StateMachine presentation by Cliff Hall</a>. Application have 3 states OPENED, CLOSED and LOCKED, makes use of entry, exit guards and also sends CHANGED annoucement(notification) for specific(CLOSED) state. This demo is great for beginners learning PureMVC StateMachine Utility.</p>
<p><span id="more-1225"></span><br />
FSM for Lockable Door</p>
<pre class="MXML"><span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">fsm</span> <span class="ActionScriptDefault_Text">initial</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{</span><span class="ActionScriptDefault_Text">LockableDoor</span>.<span class="ActionScriptDefault_Text">STATE_CLOSED</span><span class="ActionScriptBracket/Brace">}</span><span class="ActionScriptOperator">&gt;</span>
    <span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">state</span> <span class="ActionScriptDefault_Text">name</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{</span><span class="ActionScriptDefault_Text">LockableDoor</span>.<span class="ActionScriptDefault_Text">STATE_CLOSED</span><span class="ActionScriptBracket/Brace">}</span>
        <span class="ActionScriptDefault_Text">exiting</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{A</span><span class="ActionScriptDefault_Text">pplicationFacade</span>.<span class="ActionScriptDefault_Text">EXITING_CLOSED_STATE</span><span class="ActionScriptBracket/Brace">}</span>
        <span class="ActionScriptDefault_Text">changed</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{A</span><span class="ActionScriptDefault_Text">pplicationFacade</span>.<span class="ActionScriptDefault_Text">CHANGED_CLOSED_STATE</span><span class="ActionScriptBracket/Brace">}</span><span class="ActionScriptOperator">&gt;</span>
        <span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">transition</span> <span class="ActionScriptDefault_Text">action</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{</span><span class="ActionScriptDefault_Text">LockableDoor</span>.<span class="ActionScriptDefault_Text">ACTION_OPEN</span><span class="ActionScriptBracket/Brace">}</span> <span class="ActionScriptDefault_Text">target</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{</span><span class="ActionScriptDefault_Text">LockableDoor</span>.<span class="ActionScriptDefault_Text">STATE_OPENED</span><span class="ActionScriptBracket/Brace">}</span><span class="ActionScriptOperator">/&gt;</span>
        <span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">transition</span> <span class="ActionScriptDefault_Text">action</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{</span><span class="ActionScriptDefault_Text">LockableDoor</span>.<span class="ActionScriptDefault_Text">ACTION_LOCK</span><span class="ActionScriptBracket/Brace">}</span> <span class="ActionScriptDefault_Text">target</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{</span><span class="ActionScriptDefault_Text">LockableDoor</span>.<span class="ActionScriptDefault_Text">STATE_LOCKED</span><span class="ActionScriptBracket/Brace">}</span><span class="ActionScriptOperator">/&gt;</span>
    <span class="ActionScriptOperator">&lt;/</span><span class="ActionScriptDefault_Text">state</span><span class="ActionScriptOperator">&gt;</span>
    <span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">state</span> <span class="ActionScriptDefault_Text">name</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{</span><span class="ActionScriptDefault_Text">LockableDoor</span>.<span class="ActionScriptDefault_Text">STATE_LOCKED</span><span class="ActionScriptBracket/Brace">}</span><span class="ActionScriptOperator">&gt;</span>
        <span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">transition</span> <span class="ActionScriptDefault_Text">action</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{</span><span class="ActionScriptDefault_Text">LockableDoor</span>.<span class="ActionScriptDefault_Text">ACTION_UNLOCK</span><span class="ActionScriptBracket/Brace">}</span> <span class="ActionScriptDefault_Text">target</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{</span><span class="ActionScriptDefault_Text">LockableDoor</span>.<span class="ActionScriptDefault_Text">STATE_CLOSED</span><span class="ActionScriptBracket/Brace">}</span><span class="ActionScriptOperator">/&gt;</span>
    <span class="ActionScriptOperator">&lt;/</span><span class="ActionScriptDefault_Text">state</span><span class="ActionScriptOperator">&gt;</span>
    <span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">state</span> <span class="ActionScriptDefault_Text">name</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{</span><span class="ActionScriptDefault_Text">LockableDoor</span>.<span class="ActionScriptDefault_Text">STATE_OPENED</span><span class="ActionScriptBracket/Brace">}</span>
        <span class="ActionScriptDefault_Text">entering</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{A</span><span class="ActionScriptDefault_Text">pplicationFacade</span>.<span class="ActionScriptDefault_Text">ENTERING_OPENED_STATE</span><span class="ActionScriptBracket/Brace">}</span><span class="ActionScriptOperator">&gt;</span>
        <span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">transition</span> <span class="ActionScriptDefault_Text">action</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{</span><span class="ActionScriptDefault_Text">LockableDoor</span>.<span class="ActionScriptDefault_Text">ACTION_CLOSE</span><span class="ActionScriptBracket/Brace">}</span> <span class="ActionScriptDefault_Text">target</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{</span><span class="ActionScriptDefault_Text">LockableDoor</span>.<span class="ActionScriptDefault_Text">STATE_CLOSED</span><span class="ActionScriptBracket/Brace">}</span><span class="ActionScriptOperator">/&gt;</span>
    <span class="ActionScriptOperator">&lt;/</span><span class="ActionScriptDefault_Text">state</span><span class="ActionScriptOperator">&gt;</span>
<span class="ActionScriptOperator">&lt;/</span><span class="ActionScriptDefault_Text">fsm</span><span class="ActionScriptOperator">&gt;</span></pre>
<p><br/>FSM Diagram for Lockable Door<br />
<img alt="" src="http://mariusht.com/files/blog/lockable_door/lockableDoorDiagram.jpg" class="alignnone" width="669" height="250" /><br />
<br/>Lockable Door demo</p>
<div style="width:667px; height:280px; border:solid #666 1px"><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="LockableDoor" width="667" height="280" codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab"> </p>
<param name="movie" value="http://mariusht.com/files/blog/lockable_door/demo/LockableDoor.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="allowScriptAccess" value="sameDomain" />
			<embed src="http://mariusht.com/files/blog/lockable_door/demo/LockableDoor.swf" quality="high" bgcolor="#ffffff"</p>
<p>				width="667" height="280" name="LockableDoor" align="middle"</p>
<p>				play="true"</p>
<p>				loop="false"</p>
<p>				quality="high"</p>
<p>				allowScriptAccess="sameDomain"</p>
<p>				type="application/x-shockwave-flash"</p>
<p>				pluginspage="http://www.adobe.com/go/getflashplayer"><br />
			</embed><br />
	</object></div>
<div style="margin-top:7px;"><a href="http://mariusht.com/files/blog/lockable_door/demo/srcview/index.html"><img src="http://mariusht.com/assets/viewsrcBtn.gif" /></a>
<div style="float:right; padding-right:342px"><a href="http://mariusht.com/files/blog/lockable_door/demo/srcview/LockableDoor.zip"><img src="http://mariusht.com/assets/downloadsrcBtn.gif" /></a></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://mariusht.com/blog/2009/07/14/puremvc-statemachine-lockable-door-demo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Transition between States in PureMVC StateMachine Utility</title>
		<link>http://mariusht.com/blog/2009/07/14/transition-between-states-in-puremvc-statemachine-utility/</link>
		<comments>http://mariusht.com/blog/2009/07/14/transition-between-states-in-puremvc-statemachine-utility/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 15:03:59 +0000</pubDate>
		<dc:creator>Mariush T.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[PureMVC]]></category>
		<category><![CDATA[StateMachine]]></category>

		<guid isPermaLink="false">http://mariusht.com/blog/?p=1177</guid>
		<description><![CDATA[Below you can see what&#8217;s happening when transition between states occurs. First your application sends a StateMachine.ACTION Notification that triggers the StateMachine to begin a transition. Any state specific exiting or entering guard(Commands or Mediators) defined for the current and target state are notified. If transition is not cancelled the current state is changed to the [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://mariusht.com/files/blog/state_machine_utility/flow.jpg" alt="" width="170" height="70" />Below you can see what&#8217;s happening when transition between states occurs. First your application sends a StateMachine.ACTION Notification that triggers the StateMachine to begin a transition. Any state specific exiting or entering guard(Commands or Mediators) defined for the current and target state are notified. If transition is not cancelled the current state is changed to the target state and any state specific CHANGED annoucement is sent. And finally a generic annoucement of the CHANGED is sent.</p>
<p><span id="more-1177"></span><br />
<img class="alignnone" src="http://mariusht.com/files/blog/state_machine_utility/transition.jpg" alt="" width="669" height="500" /></p>
<p><strong>Useful Resources</strong>:<br />
<a href="http://puremvc.org/content/view/104/1/">Get your FSM on!</a><br />
<a href="http://puremvc.tv/#P003/">StateMachine Utility overview presentation by Cliff Hall</a><br />
<a href="http://mariusht.com/blog/2009/07/14/puremvc-statemachine-lockable-door-demo/">Lockable Door demo</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mariusht.com/blog/2009/07/14/transition-between-states-in-puremvc-statemachine-utility/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
