Petri net modeling combined with heuristic search provides a new scheduling method for flexible manufacturing systems. The method formulates a scheduling problem with a Petri net model. Then, it generates and searches a partial reachability graph to find an optimal or near optimal feasible schedule in terms of the firing sequence of the transitions of the Petri net model. The method can handle features such as routing flexibility, shared resources, lot sizes and concurrency. By following the generated schedule, potential deadlocks in the Petri net model and the system can be avoided. Hence the analytical overhead to guarantee the liveness of the model and the system is eliminated. Some heuristic functions for efficient search are explored and the experimental results are presented.