A method for incorporating knowledge and communication into decentralized discrete-event systems