This paper considers a matrix-based discrete event control approach for a warehouse. The control system is organized in two modules: a dynamic model and a controller. The model provides a complete description of the discrete event dynamics of the warehouse, and is used as a means to track the stock-keeping units, and identify and inhibit control actions that violate system's constraints. The controller has several functions. At the supervisory level, it is in charge of inhibiting operations that may lead to deadlocks, commanding the actual start of the task, and the release of the resources once a task is completed. At the operational level, it is in charge of performing decisions regarding the order in which allowable tasks waiting for service should be performed. All the modules are implemented using the same matrix-based formalism, and thus integrated with each other. The main advantages of the approach are the inherent modularity (the matrix-based control is obtained by assembling individual atomic components), and the integration between the various modules, which permits a better overall resource utilization. Simulation examples describing an actual industrial warehouse are finally provided to emphasize the main advantages of the proposed approach.