lunes, 22 de octubre de 2012

Red Petri

Red Petri:
Es una representación de un sistema a eventos, en la que se describe el flujo de la información, ésta a su vez sirve como herramienta para modelar los sistemas.

Actividad:
Para esta entrada se nos encargo modelar un sistema concurrente, para el modelado de éste se empleo snakes de python, donde pueden descargarlo del siguiente link.

Mi sistema a modelar, será sobre las peticiones a un servidor y será algo básico, donde éste se encuentra esperando alguna entrada, una vez que tiene recibe algún dato, ésta la procesa para determinar si arroja un error, de lo contrario manda la información solicitada.


Codigo:
import snakes.plugins
snakes.plugins.load("gv", "snakes.nets", "nets")
from nets import *
def net_petri():
n = PetriNet("Servidor")
#Estados
n.add_place(Place("Start", [dot]))
n.add_place(Place("Esperando"))
n.add_place(Place("Recibiendo"))
n.add_place(Place("Procesando"))
n.add_place(Place("Mandando"))
n.add_place(Place("Error"))
#Transiciones
n.add_transition(Transition("t1"))
n.add_transition(Transition("t2"))
n.add_transition(Transition("t3"))
n.add_transition(Transition("t4"))
n.add_transition(Transition("t5"))
#Entrada
n.add_input("Start","t1", Value(dot))
n.add_input("Esperando", "t2", Value(dot))
n.add_input("Recibiendo", "t3", Value(dot))
n.add_input("Procesando", "t4", Value(dot))
n.add_input("Error", "t5", Value(dot))
n.add_input("Mandando", "t5", Value(dot))
#Salida
n.add_output("Esperando", "t1", Value(dot))
n.add_output("Recibiendo", "t2", Value(dot))
n.add_output("Procesando", "t3", Value(dot))
n.add_output("Start", "t5", Value(dot))
n.add_output("Error", "t4", Value(dot))
n.add_output("Mandando", "t4", Value(dot))
#Diagrama
for engine in ('dot', 'fdp', 'neato') :
n.draw(',petri-%s.png' % engine, engine=engine)
s = StateGraph(n)
s.build()
s.draw(',petri.png')
for node in sorted(n.node(), key=str) :
node.pos.moveto(-100, -100)
n.layout()
any(node.pos == (-100, -100) for node in sorted(n.node(), key=str))
print "Succefull"
net_petri()
view raw gistfile1.py hosted with ❤ by GitHub

Diagrama:

1 comentario: