public PetriNet Compile(PetriNet phylum) { String prefix = phylum.ActivityCount + ".internal."; // Places Place p1 = phylum.NewPlace(prefix + "initialized"); Place p2 = phylum.NewPlace(prefix + "closed"); // Place exists? Place message = phylum.Find("out." + phylum.ActivityCount + ".message"); if (message == null) { message = phylum.NewPlace("out." + phylum.ActivityCount + ".message", PetriNet.CommunicationType.Input); } // Transitions Transition receive = phylum.NewTransition(prefix + "receivereply"); // Arcs phylum.NewArc(p1, receive); phylum.NewArc(receive, p2); phylum.NewArc(message, receive); return(phylum); }
public PetriNet Compile(PetriNet phylum) { String prefix = phylum.ActivityCount + ".internal."; // Places Place p1 = phylum.NewPlace(prefix + "initialized"); Place p2 = phylum.NewPlace(prefix + "closed"); // Place exists? Place message = phylum.Find("out." + contract + "." + operation); if (message == null) { message = phylum.NewPlace("out." + contract + "." + operation, PetriNet.CommunicationType.Output); } // Transitions Transition send = phylum.NewTransition(prefix + "send"); // Arcs phylum.NewArc(p1, send); phylum.NewArc(send, p2); phylum.NewArc(send, message); return(phylum); }