This application is part of a service-based, cloud-native system for production planning and scheduling (Advanced Planning and Scheduling) and production tracking (Manufacturing Execution System). As of the time of writing this post, development has been completed and the system is being piloted at two major pharmaceutical plants, while several others have expressed strong interest in its adoption. This post describes the production tracking application of the system.

Unlike the planning/scheduling application, which employs a relational database, the production tracking application stores its data in a document database. This fundamental architectural decision ensures scalability, as the production tracking application has a potential base of several hundred users or more, mostly operators on the plant floor. Past experience had shown that retrieving data from a relational database in production via complex join queries, can lead to significant delays, especially when the system is under heavy load. Instead, data retrieval from a document database is very fast and highly scalable.

Planners develop their recipes and schedules in the planning application, which relies on the structured data model, robust SQL querying and ACID features of a relational database. When a schedule is finalized, it can be synced with production and become available to the plant floor for execution. Syncing involves materializing a very large SQL query and exporting the results to the document database. Essentially, the document database functions as a cache of the relational database, whereby expensive joins occur only once (during syncing), and subsequent data access in production takes place on the already-materialized query results of the document model.

Syncing production is a two-step process: Firstly, planning queries production for the published batches. Each batch caries a mark that changes every time the batch is modified, so planning knows if a batch has been modified since the last sync with production. Secondly, batches that have, indeed, been modified are published to the production application. All interactions between the two applications (services) take place over GRPC.

The production application allows plant floor personnel to view data in a variety of ways. It also allows for registering updates from actual schedule execution. These updates, can then be applied onto the schedule in the planning application.

Functionality at a glance:

  • Production Equipment Occupancy Chart, for graphically viewing the production schedule
  • Tabular production operations view.
  • Customizable resource viewing: Allows for selecting equipment and staff to be included in the various views.
  • Task filtering: Allows for selecting the tasks to be included in the various views.
  • Updating production data: Allows for updating the schedule with actual info from production.