I have now successfully ported a minimal subset of the Windows Workflow Foundation to AS3. Initially I have created Sequential and StateMachine Workflows with just a set of non-nestable Activities.
Next point of focus is on implementing a set of sample applications which will illustrate the power of having an event-driven application based on StateMachines as well as a number of Applications illustrating how easy keeping a complex set of activities in strictly sequence using the SequentialWorkflow.
Another important aspect right now is to get the WorkflowRuntime just right as it right now pretty much only works as a Workflow factory.
Idealism is what precedes experience; cynicism is what follows...
Showing posts with label State Machines. Show all posts
Showing posts with label State Machines. Show all posts
Tuesday, June 17, 2008
Sunday, June 08, 2008
State Machines : The C in PureMVC
I have some difficulty figurering out how to combine the notion of a statemachine workflow with the PureMVC notion of commands as the primary work-units. Using states seems to defy the need for commands and if not in direct conflict only because one could imagine using the statechange events to trigger commands. However, the ladder seems to create additional complexity in return of no other benefit than being able to use a statemachine workflow as the primary driver in a strict PureMVC system without removing logic from the commands.
Cliff Hall started a working group with this focus, but it appears that they too have had some difficulty cornering the right way to combine this.
Check it out...
http://forums.puremvc.org/index.php?board=25.0
Cliff Hall started a working group with this focus, but it appears that they too have had some difficulty cornering the right way to combine this.
Check it out...
http://forums.puremvc.org/index.php?board=25.0
Labels:
Best Practices,
PureMVC,
State Machines
State Machines : Windows Workflow Foundation
Windows Workflow Foundation has buildin support for building state-machine workflows to be used from any dotNet based host.
I will explore this in the upcoming weeks in relation to my effort to contribute to the further development of State Machine support in the PureMVC framework.
Check it out...
http://msdn.microsoft.com/en-us/netframework/aa663328.aspx
I will explore this in the upcoming weeks in relation to my effort to contribute to the further development of State Machine support in the PureMVC framework.
Check it out...
http://msdn.microsoft.com/en-us/netframework/aa663328.aspx
State Machines : Basic Thoughts
There is one important decision to make when creating a new workflow. Will the workflow be a sequential workflow, or a state machine workflow? Windows Workflow provides these two types out of the box. To answer the question, we have to decide whois in control.
A sequential workflow is a predictable workflow. The execution path might branch, or loop, or wait for an outside event to occur, but in the end, the sequential workflow will use the activities, conditions, and rules we've provided to march inevitably forward. The workflow is in control of the process.
A state-machine workflow is an event driven workflow. That is, the state machine workflow relies on external events to drive the workflow to completion. We define the legal states of the workflow, and the legal transitions between those states. The workflow is always in one of the states, and has to wait for an event to arrive before transitioning to a new state. Generally, the important decisions happen outside of the workflow. The state machine defines a structure to follow, but control belongs to the outside world.
We use a sequential workflow when we can encode most of the decision-making inside the workflow itself. We use a state machine workflow when the decision-making happens outside the workflow.
A sequential workflow is a predictable workflow. The execution path might branch, or loop, or wait for an outside event to occur, but in the end, the sequential workflow will use the activities, conditions, and rules we've provided to march inevitably forward. The workflow is in control of the process.
A state-machine workflow is an event driven workflow. That is, the state machine workflow relies on external events to drive the workflow to completion. We define the legal states of the workflow, and the legal transitions between those states. The workflow is always in one of the states, and has to wait for an event to arrive before transitioning to a new state. Generally, the important decisions happen outside of the workflow. The state machine defines a structure to follow, but control belongs to the outside world.
We use a sequential workflow when we can encode most of the decision-making inside the workflow itself. We use a state machine workflow when the decision-making happens outside the workflow.
State Machines : A Powerfull Programming Tool
State machines have always fascinated me. There is a clockwork precision to their inner workings that appeals to me on an aesthetic level. They are also an invaluable programming tool. In building libraries and applications, I have returned to them again and again.
A state machine is a model of how something behaves in response to events. It models behavior by making its responses appropriate to the state that it is currently in. How a state machine responds to an event is called a transition. A transition describes what happens when a state machine receives an event based on its current state. Usually, but not always, the way a state machine responds to an event is to take some sort of action and change its state. A state machine will sometimes test a condition to make sure it is true before performing a transition. This is called a guard.
* A state machine is a model of behavior composed of states, events, guards, actions, and transitions.
* A state is a unique condition in which a state machine can exist during its lifetime.
* An event is something that happens to a state machine.
* A transition describes how a state machine behaves in response to an event based on its current state.
* A guard is a condition that must be true before a state machine will perform a transition.
* An action is what a state machine performs during a transition.
This description of state machines introduces several abstract concepts quickly, and is not meant to be formal or complete. It is just a starting point. I will explore what state machines are in a series of posts.
Next post will be about the implementation of State Machines in Adobe Flex with a running code example.
A state machine is a model of how something behaves in response to events. It models behavior by making its responses appropriate to the state that it is currently in. How a state machine responds to an event is called a transition. A transition describes what happens when a state machine receives an event based on its current state. Usually, but not always, the way a state machine responds to an event is to take some sort of action and change its state. A state machine will sometimes test a condition to make sure it is true before performing a transition. This is called a guard.
* A state machine is a model of behavior composed of states, events, guards, actions, and transitions.
* A state is a unique condition in which a state machine can exist during its lifetime.
* An event is something that happens to a state machine.
* A transition describes how a state machine behaves in response to an event based on its current state.
* A guard is a condition that must be true before a state machine will perform a transition.
* An action is what a state machine performs during a transition.
This description of state machines introduces several abstract concepts quickly, and is not meant to be formal or complete. It is just a starting point. I will explore what state machines are in a series of posts.
Next post will be about the implementation of State Machines in Adobe Flex with a running code example.
Tuesday, May 06, 2008
HCI : Morphable Interfaces introduces new challenges
Lately I have been working on a number of applications where the requirements to the UI has been quite extensive. The paradigm of UI in RIA's are now getting more and more well-understood among the GFX departments, XD departments, IA departments, etc. and this has triggered something resembling a revolution in advanced UI's.
Among one of the new paradigms is the morphable interface where no elements are static in their representation, but on the contrary have many different and often incoherent states.
I have chosen the wording "morphable interface" as all elements now have many representations all depending on the overall state of the application combined with the fact that movement now has taken a new position as it now is used to communicate the change of state: hence the Adobe coined slogan, "movement matters".
Having many different incoherent application-states with an equivalent set of elements combined with an effect being played while transitioning between two states defines a morphable interface.
Among one of the new paradigms is the morphable interface where no elements are static in their representation, but on the contrary have many different and often incoherent states.
I have chosen the wording "morphable interface" as all elements now have many representations all depending on the overall state of the application combined with the fact that movement now has taken a new position as it now is used to communicate the change of state: hence the Adobe coined slogan, "movement matters".
Having many different incoherent application-states with an equivalent set of elements combined with an effect being played while transitioning between two states defines a morphable interface.
Labels:
Best Practices,
HCI,
Morphable Interfaces,
State Machines
Subscribe to:
Posts (Atom)
Blog Archive
-
▼
2008
(123)
-
▼
August
(11)
- This blog have been moved...
- IDEFactory... currently in Beta… soon in production…
- RSL and the lack of a build-in map over class-defi...
- Adobe Flex training in a nutshell: Flex in a Week
- Guice (pronounced 'Juice')
- Curved Scrollbar
- .NET Reflector... no more Lutz Roeder
- ClassMappings between WebORB and Adobe Flex
- The other Adobe Flex ACE's in Europe
- I got my Adobe Community Expert (ACE) designation ...
- The MyLifeBits Project
-
▼
August
(11)
My Network
-
-
Stop dragging me into board meetings - Dear Reader : This might be a bit more NEGATIVE than you’re used to. Apologies about that. I love to chair startups and companies, but I hate 95% board m...11 years ago
-
Design practice makes perfect - Evidence gained from research is powerful. It can persuade the most stubborn board members if presented in a way where decisions can be made based on facts...12 years ago
-
-
dutch vs danish politics - First reaction: glad I don’t live there. And then I made this comparison. It doesn’t differ that much actually. CDA 14% – Konservative 10% VVD 21% – Venstr...16 years ago
-
The Next Web – Timothy Ferriss - First speaker on the last day of The Next Web was Timothy Ferriss, author of the ”4-Hour workweek”. I don’t know what I was really expecting from a guy who ...16 years ago
-
Links for Motorcycle enthusiasts - MC travel-blogs: Must see: http://www.kccd.no/ http://4qconditioning.blogspot.com/ Danish blogs: http://www.ossianbuilds.blogspot.com http://wrenchmonkees....16 years ago
-
New Arduino project - I found myself a new Arduino project – an automated car! Well how to go about this. My best approach was to get a cheap RC toy car from the local toy store...17 years ago
-
Unrecognized selector sent to instance - As you may or may not know, I do iPhone/Cocoa touch now... While playing around with something this evening I stumbled across something I thought I'd share...17 years ago
-
-
-
-
-
-
-
About Me
- Peter Andreas Molgaard
- Copenhagen, Denmark
Labels
- Adobe Flex (62)
- Events (28)
- Best Practices (27)
- ActionScript 3.0 (16)
- Adobe AIR (15)
- Tools (15)
- Workaholics United (14)
- PV3D (10)
- Arbitrary Thoughts (9)
- PureMVC (7)
- Adobe Flex SDK (6)
- Adobe Max (6)
- Methodology (6)
- RIA (6)
- State Machines (6)
- .NET (5)
- Adobe Flex Builder (5)
- DFUG (5)
- Google (5)
- WebORB (5)
- Data Visualization (4)
- Flash Platform (4)
- Independent Thinking (4)
- Process (4)
- SEO (4)
- Silverlight (4)
- Adobe Flash Player (3)
- Code Design (3)
- Flash Player (3)
- HCI (3)
- MAC vs. PC (3)
- Microsoft (3)
- Performance Optimization (3)
- Stockholm (3)
- Undocumentation (3)
- Visual Studio (3)
- Windows Workflow Foundation (3)
- ACE (2)
- AUG (2)
- Adobe Thermo (2)
- Ajax (2)
- Bug Report (2)
- Cairngorm (2)
- Commerciel (2)
- Documentation (2)
- Estimation (2)
- Firefox (2)
- Google Gears (2)
- London (2)
- Morphable Interfaces (2)
- SVN (2)
- SoftwareEngineering (2)
- Test (2)
- Admin (1)
- Adobe Flex Adobe Flex Builder (1)
- Facebook (1)
- Graphics (1)
- Hardware (1)
- HelloGroup (1)
- IEEE (1)
- Outsourcing (1)
- Training (1)
- XAML (1)