I am looking to create a query for all released (scheduled) jobs showing the schedule parameters such as ‘Finite Capacity’. When I get Field Help - Technical Details is shows EpiBinding as ‘ScheduleEngine.Finite’ I recognize this as a dll.
I’m with Bruce on this. If you really wanted to know where that data comes from, and what is done with it, you’ll need to decompile that DLL a poke around.
A quick and dirty solutions might be to create a UD field to store that data on the job and slap some code in a BPM to do it.
What is driving me crazy here is this; if you have the option to Finite Capacity or not Finite Capacity, then this implies that the global finite parameter is overridden by this if not in agreement. If this is correct, then the Schedule Calculator must be able to retrieve this parameter from somewhere in order to determine how to schedule all the operations for each individual job. I have not found this type of data in any table.
To expand this a bit, if you trace the schedule board communications, you will see it returns a dataset from the SchedulingBoard.BuildResourceLine method.
Again, it contains a lot of data that in not present on any Job table. The gant chart is generated from these calculated values - from where? It would take a lot of cpu time to recalculate these values (and every related operation) every time you pulled up a schedule board.
You’re looking at one of the tables that Epicor builds on the fly. It doesn’t exist anywhere in the database in a format that matches the dataset/tableset you’re looking at.
As far as I’ve been able to tell the finite vs infinite isn’t stored anywhere relative to the job but is something that’s defined as a parameter to be passed in whenever you setup the scheduling engine to run.
The resources do have a finite capacity option and that ultimately decides whether or not the jobs are scheduled in a finite or infinite manner. The value that you’re passing in when you schedule from job entry is really whether or not you’re overriding that properly.
If you want to see what’s actually on your schedule then you need to be looking at the ResourceTimeUsed table. That table stores the resource allocations as well as the start and end times for everything that you would see on the scheduling board.
Thanks for the reply. My question is the culmination of a lot of frustration that begins here:
This is the operation gant chart for one resource - a Mazak Nexus CNC machine. It can only do one operation at a time. I cannot get the gant chart to be a simple finish to start schedule (Finite) All I ever get is this, which implies infinite scheduling. So, starting from the top down, here is this Site Mainenance:
Next is the Resource Group:
And finally the Resource:
My conclusion can be several things:
I am missing something blatantly obvious
I am missing something significant that is hidden
Something else is determining Finite/Infinite Scheduling - i.e. Job level Scheduling and thus the reason I am trying to figure out how this works from the data level.
I want the Resource Group value to inherit Site Maintenance values, and the Resource to inherit the Resource Group values. If it ain’t ‘0’ then it cannot inherit at all? Or is there a special character to tell it to inherit?
The setting on resource group acts as the default when creating a new resource.
The site maintenance setting will be the value used unless there is a different value on the resource/resource group. The resource group settings can override the resource settings.
Using V8 over here, but trying to relay as much info as I have gathered regarding settings heirarchy.
If you want them to be correct, verify the value on every resource group and resource. Hopefully, you won’t have too many to check. I’m not a fan of leaving anything to chance when modifying scheduler settings.
Please realize that even when scheduled finitely, it is possible to reschedule the job using infinite settings through Job Entry. On a lot of our work, we schedule the front operations finitely (through Job Entry) and modify the later operations to be infinite by using Job Scheduling Board. In our products, we have more flexibility at the end of a part’s routing than at the start to vary shop capacity (overtime, etc).
I am trying to grasp what the rules are. Here is my level of understanding at this point:
To get finite scheduling for a resource - it must have a finite horizon >0 value.
Resource group finite horizon(RGFH) overrides resource finite horizon(RFH) only when RFH > RGFH.
Site finite horizon(SFH) overrides resource group finite horizon(RGFH) only when RGFH > SFH.
The concept of inheritance is NOT used here.
Am I correct so far?
Job Entry is where I am still confused.
What I want is to understand what Finite Capacity = True does and what Finite Capacity = False does.
This implies that the Schedule Job Finite Capacity parameter override the Resource Finite Horizon value. Is this correct? (How can it do that without being stored somewhere?)
What I want is for every job to be scheduled as Finite Capacity. I want to correct every job to Finite Capacity = True(1) if it is not already true, without going job by job.
I have discovered why I cannot schedule Finite mode - my company is not using MRP feature, thus it cannot possibly schedule Finitely. Took me months to figure this one out. Thank you Robert Brown for helping me understand this!
(Doesn’t mean I have answers about where all the scheduling/calculations save the schedule/data/parameters, but at least I have some closure after months of searching for the root problem)
I hope this will help the next guy/gal trying to figure this out!
There must be a module that you don’t have, there is no direct relationship between MRP and scheduling. MRP calls the scheduler during MRP to schedule the unfirm jobs.
Don’t want to burst your bubble, but I’m not convinced that something else isn’t going on.
We are going through the same issues currently. My question is, I figured the Horizon settings in Site Maintenance/Planning might not apply since we too are not running MRP, but does that mean we cannot set them by Resource Group and have the Global Schedule set jobs finitely? We have the same settings you outlined above, Site Maintenance Horizons set to 30,60,90 and Resource Groups/Resources set to 0. Is that why when we run global scheduling, we get jobs scheduling Infinitely?? Any assistance would be appreciated.
Sorry Eric. I definitely feel your pain!, but I may not have what you want to hear. I will explain.
I had to resign myself to the reality that Epicor cannot do the scheduling that I need at our facilities.
Some brief history…
Precision Parts Inc is a machine shop. Scheduling relates directly to what the operator currently has on the machine, and what the operator is prepping for next. This is a very dynamic environment as opposed to the same machine doing the same thing for weeks at a time.
So with some programming skills and learning about Business Objects (Business Rules) in this forum, I was able to show the operator what to work on and give them a means of clocking on a job (activities) by clicking on the job in the list of jobs I produced with an SQL stored procedure. (MES is cumbersome)
But my underlying problem was always the schedule generated by Epicor. I could never get a finite schedule, so I did what most engineers do - do it myself!
So I am 5 weeks into developing a scheduling engine that will definitely yield a finite - real schedule. I am now starting on the GUI.
This is the path that I chose, because I can do it and get what I want.
Hope this will give you some additional thoughts about your dilemma.
Go to Epic Web and download the Application User Guide. Also get the MRP technical reference guide. Also get the planning and scheduling reference guide. Additionally you can use Epicor Embedded Education or help and it will explain the hierarchies and parameters.
I’m not understanding why a simple dispatch report cannot be used to instruct the operators what to work on next. The canned dispatch report works well, and it differentiates what items are available to start, and what items are not.