Supervisory control is usually considered as an external control mechanism to a system by controlling the occurrences of its controllable events. There exist Petri net models whose legal reachability spaces are nonconvex. In this case, they cannot be optimally controlled by the conjunctions of linear constraints. For Petri net models of flexible manufacturing systems, this work proposes a method to classify the legal markings into several subsets. Each subset is associated with a linear constraint that can forbid all first-met bad markings. Then, the disjunctions of the obtained constraints can make all legal markings reachable and forbid all first-met bad markings, i.e., the controlled net is live and maximally permissive. An integer linear programming model is formulated to minimize the number of the constraints. A supervisory structure is also proposed to implement the disjunctions of the constraints. Finally, examples are provided to illustrate the proposed method.