GinsFSM, a library to develop systems based in finite-state machines. It's a communication framework, including a full asynchronous http/wsgi/winsocket/sockjs server. Ideal for working with Pyramid using traversal dispatch.
Can you draw your development?
Can you view the behaviour of your application in real time?
With this framework you can!.
GinsFSM is a python library to develop systems based in finite-state machines (http://en.wikipedia.org/wiki/Finite-state_machine). This model is really useful when writing networking and communication applications.
The idea is very simple:
All objects, called gobj, are instances of a derived ginsfsm.gobj.GObj class.
The GObj has an inside simple-machine that defines its behavior.
The communication between gobj’s happens via event’s.
Thus, the nature of this system is fully asynchronous and event-driven.
The interface is simple and common to all objects; you just have to change the name of the event and the data they carry.
It includes a full asynchronous http server, wsgi server and winsocket server/client compatible with sockjs.
You can run multiple wsgi applications.
Ginsfsm comes with a variety of scaffolds that you can use to generate a project.
Like Pyramid framework pcreate/pserve commands, Ginsfsm provides the gcreate/gserve commands, to create and run ginsfsm projects.
With gcreate command you can create a ginsfsm project. For example, with multi_pyramid_wsgi scaffold, you will create a multiple wsgi application project, one of wsgi application being a Pyramid wsgi application.
The GObj’s objects are Pyramid “location-aware” resources. Also, the gobj’s are a hierarchical tree, also therefore the use of traversal dispatching are all natural.
Support and Documentation
See the <http://ginsfsm.org/> to view documentation.
Code available in <https://bitbucket.org/artgins/ginsfsm>
Copyright (c) 2012, Ginés Martínez Sánchez.
GinsFSM is released under terms of The MIT License <http://www.opensource.org/licenses/mit-license>
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.