What Problems Does
The Scheduler Solve?
In manufacturing, scheduling can be complicated, yet production can’t be compromised by inefficiencies in scheduling or inability to handle an unexpected change of plans. Each piece of equipment performs a specific task. Each packaging job involves multiple steps, each of which varies in duration. These steps may include one or more printing and lamination steps, as well as slitting, bagging or pouching, holding, and shipping. These steps must be scheduled on multiple machines, in a specific order.
Many times, work in progress needs time to cure and cannot be moved onto the next step right away. Often, steps must be split and completed in parts to accommodate other job deadlines and machine availability. Schedules must also accommodate campaign runs, in which similar production steps from differing sales orders are combined and run together on the same machine. On top of that, if a piece of equipment goes down without notice, the schedule for multiple production items and machines needs to be quickly modified in a way that ensures the production of all items gets accomplished on time without compromising quality.
For these reasons, an automated scheduling system for a manufacturing business is imperative.
We created a scheduler system that can:
- Convey large amounts of information for each step of multi-step manufacturing jobs
- Highlight unscheduled steps to ensure that all jobs get scheduled
- Enable drag and drop scheduling onto or between machines and automatic shifting over of subsequent steps, as well as insertion of buffer time in between them
- Split steps into multiple sub-steps that can be carried out on differing machines and dates. Vice versa, the system also needed to enable users to merge the split steps back together.
Soon a video showing the process of selecting two machines, filtering the machines’ schedules by time frame, and moving two job steps from the unscheduled area up top into a machine’s schedule using drag and drop. The undo feature is also demonstrated.
To create a custom scheduler system that is robust enough to handle multi-step, complex jobs, and a large number of work staff and machines in a production environment that operates 24/7. As it would have disrupted ongoing operations to replace the existing database structure and code, the system also had to accommodate the legacy systems.
What Prompted the Start of the Scheduler?
The existing scheduling system consisted of multiple, large whiteboards with rows or, at times, entire boards for each machine. This setup took up an entire room. Job steps were represented by color-coded paper notes on magnets, which could be placed on the whiteboards. Job notes were indicated by attaching a small post-it note to the job step.
Although this system was functional and readily understood, when steps were rescheduled, all the subsequent magnets on that machine had to also be moved. Splitting steps was also difficult, and the system was highly prone to human error. The production managers spent several hours per week in the scheduling room manually sorting out the best workflow for the days ahead and often had to go “back to the drawing board” when an unexpected event occurred. Further, the system inherently limited how far in the future each step could be scheduled; steps could not be scheduled out farther than the edge of the whiteboard.
For these reasons and more, Classic Packaging clearly perceived the need for an automated system and had tried repeatedly to have one built. Despite the failures of three prior development teams, they engaged us to try again.
Design and Specification Process
A huge amount of effort went into the discovery process in terms of the user perspective. Our team reviewed over 150 pages of documentation that Classic Packaging provided detailing the desired functionality, their database structure, and the existing scheduling process. We then took a trip from JHMG’s home base in Atlanta to Classic Packaging’s plant in North Carolina so that the project team could see first-hand the scheduling and production processes that would be modeled in the system. We tried wherever possible to retain the familiar and successful aspects of their existing scheduling system, such as color-coding.
At JHMG we go to great lengths to truly understand the needs of our clients and take all necessary factors into account in the discovery phase. As a result of our thorough planning, the developers started with a clear roadmap that met all the client’s needs, provided realistic timelines, and ensured client resources were not wasted on development that would have to be reworked.
Working with the Existing Jobs Database
One of the biggest hurdles to a new system, as many manufacturing businesses also find, was that the existing database structure that housed job information presented barriers to creating an automated scheduling system. The existing jobs database structure was not set up to facilitate a scheduler system. To gather all the information regarding a job, we had to piece together information from three different database tables, some with hundreds of columns of information. Not only did we need to extract this information and create a new database, but we also had to continually watch for changes in the legacy tables to update the new systems. This connection needed to work both ways, meaning we also had to identify and add data from the new systems back into the legacy tables.
Thus, we created a database table with all of the information on job steps including duration, start date/time, end date/time, and other pertinent information. We then populated this table by defining the step information from the existing job storage database. With the steps separated in this way, it became feasible to schedule them onto machines without resorting to creating a convoluted, and ultimately unmaintainable, codebase. We refer to these job steps as “tags,” or units that can be placed on the schedule. These electronic tags represent the same data that the paper tags represented in the old system.
Given the dynamic environment, we monitor the job storage database for changes every minute so that we can make any necessary updates to our tag data. Sometimes jobs are created incompletely by Classic Packaging’s legacy code, resulting in invalid data. To overcome this, we enable the user to reset and recreate a job in their database.
Frontend Development Challenges
There are approximately 10,000 viewable data points on the Scheduler System at any one time. Displaying all the visual components in a timely manner was a performance challenge, and many optimizations were necessary. For example, when the data is updated in another area, the frontend of the system updates the data automatically without the need to refresh the page. Our longstanding development expertise in the Angular framework and single page application architectures allowed us to meet this challenge, creating a scalable frontend application where the volume of data does not negatively impact user interactions or user experienced. The resulting scheduler is now displayed on two 72” monitors on-site, effectively replacing the old room-sized, paper-based scheduling system.
- Drag & Drop:
Users can drag and drop unscheduled tags from the unscheduled area to a given machine and day/time slot. The width of the tag indicates its duration so that users can easily visualize where in the schedule the tag can be accommodated.
- Ease of modifications:
Tags can be dragged from one machine to another, or from one day/time to another.
- User Management:
Production managers have access to schedule, and edit tags. To avoid conflicting schedule changes, only one production manager can be logged in at a time. The production manager publishes the schedule after completing or making changes. Once the schedule is published, all system users see the updated populate automatically.
- Overlap Avoidance:
If a tag is scheduled on a machine in a time window that overlaps with an existing tag, then the existing tag, and, if necessary, subsequent tags will all be pushed later.
- Buffer Maintenance:
Buffer time between tags is also automatically scheduled and maintained to accommodate cure time for ink and glues.
- Locked Schedule:
Tags can be locked into their scheduled timeslots if it is critical that they be completed at a certain time. Locked tags cannot be adjusted on the schedule to accommodate changes in the schedule. Production managers are prevented from scheduling a tag that would require an adjustment to a locked tag’s run time.
- Split & Merge Tags:
Tags can be split and merged to combine or break up steps as shown here:
- Similar Tasks Completed on a Single Machine Simultaneously:
Campaign jobs can be scheduled together. Such jobs are similar in ink colors, print plates, and/or other job step properties. Tags of these jobs can be run on the same machine at the same time.
- Undo and Review Changes:
An action queue keeps track of all the system user’s changes to the schedule, allowing them to undo unpublished changes in the order they were made. Once the user is confident in all their changes, they may publish them, where they will also become viewable for other system users. The user is presented with a modal describing all the unpublished changes they have made.
- Order Details View:
The user can view the work order associated with a tag. Custom, industry-specific fields are available for different types of tags, as well as for the work order in general (i.e., applying to the entire job)
- Easily Edit Notes:
The production manager and customer focus team members can add/edit any job or tag notes:
- Complex Color-Coding for Data Interpretation at a Glance:
Tags are color-coded to convey key information about them at a glance, and color-coded halos around the tag are used to convey their status information (e.g., production started, production completed, scheduled for shipping, etc). If more than one halo color code applies to the tag, each of the tag’s four borders can be of different colors, and inner borders can also be added to display surplus status information. The following screenshots show some color-coded tags, as well as a legend indicating all the tag information and statuses that can be conveyed by color:
- Promise Dates with Status Flags:
The promise dates for any film purchase orders required for a job step, and/or any printing press plates that are required, can also be displayed. The tag has color-coded flags present on it that denote whether the required film and plates are allocated, received, damaged, etc.
- Job Details with Vital Data Most Visible:
Each tag also displays relevant information, such as ink colors, quantity required, unit of measure, web width, order date, due date, customer number, etc. depending on the type of job step. If a job step’s run duration is short, the sales order number is the last piece of text that will be truncated, given how important it is to always be readily visible.
- Unavailable Machines:
Maintenance tags can be scheduled on a machine so that it is clear when the machine will be unavailable:
Continue reading the Classic Packaging case study with the Allocation System page »