Job Batching: Dashboard idea:

Here is an idea I am throwing out there for those that like to make cool things for efficiency…
a new “Job Batching Dashboard”… Note this is not an “easy” dashboard, and most companies don’t need batching, so this is for those select who do.

"Normally" the only way to batch jobs is to:

  1. go into Resource Scheduling board
  2. select a resource
  3. look at the details and select jobs that you want to batch.

This is great, but, it is hard to find related jobs… for example, if you want to find all jobs that are from the same sales order, or some other grouping other than resource group.

SOOO… I created a special dashboard that:

  1. shows all jobs allowing for grouping of jobs/operations by Sales Order Demand
  2. the dashboard also hide any jobs that have already been batched (since you cannot batch them again… “base” version still shows them, but then rejects them when you select it).
  3. One you select a set of options, (via an “updatable” calculated checkbox field), you choose the custom action in the updatable dashboard called “Batch Jobs”.
  4. the Custom action verifies a few things like:
  • are all the operations selected from the same resource group
  • are all the operations on the same SETUP group (original doesn’t do this)
  1. THEN it creates the batch. (calling the Batch process with a Widget, BUT it took some C# code to generate the data that the Batch widget needs).

BONUS:

  1. After creating the batch, it also automatically schedules the new batch job (base version does not).
  2. ALSO the new batched job’s operations are also updated to hold an updated labor standard that summarizes all the batched jobs (Base version assumes that all batched jobs have the same labor standard).

Wish I could publish the results, but there are too many custom fields… so I will just publish the idea for those who want to take it on.
Have Fun.

3 Likes

I had a dashboard that clumped like materials together and on-hand quantities so we could group jobs together. Whenever possible we would cut jobs with like materials.

Charlie

One trick we are using is to use the SETUP GROUP field in the operation. We create a setup group for each material type. This could be used to group ‘similar’ materials as well… so if the operation is setup to cut 1/2" stock, you can batch all the 1/2 inch material (regardless of the color)

1 Like

This is on top of the batching system provided by the advanced production module right? Or can it work independently of it?

You would probably need access to Advanced Production to make this work… the dashboard simply calls the batching method to create the batches instead of needing the Resource Scheduling Board with its limitations.

Hi Tim,
This is exactly what I need - I’ve done tracing and the BO is Erp.Proxy.BO.BatchOpsImpl DoBatching.
Do you have the code that does the batching bit (if you wouldn’t mind sharing it?)
Thanks
Mark

Sorry, I dont have the code… but i think I remember that i had to put together a list of Sysrow IDs, which was not very difficult. The first one is the "master’ job which all the others get batched with.
I also added other features such as a secondary call to automatically schedule the job (which is not done with the base version either).

Ok Thanks Tim.

We have created something similar to this idea. We spent a lot of time looking for help and code to assist with the BatchOps dobatching side of it but in the end figured it out ourselves at great pain. However, I wanted to share my findings with those who may want to try this for themselves but are unsure where to start or need pointed in the right direction. (You will need the Advance Production Module to use this option as mentioned in comments above)

Start with an Updateable BAQ ( this will be used for both your Dashboard and for calling the BatchOps dobatching method). You will also need to have the JobOper table linked in this BAQ as you will need the JobOper.SysRowID values in order to do the BatchOps successfully.

In your UBAQ go to the update tab and then update processing - Select the business object Table that you will be updating - we used JobEntry with UpdateExt Update Method. Next click on the BPM Directives Configuration and create a new Base Processing Directive and then Design (Don’t forget to enable this Base Processing directive).

In the BPM Designer Create 3 new variables - we used S , BackWard and JobOperstring.

You now need to insert some Custom Code - this will likely be used for using a check box in your Dashboard to select the jobs you want to batch etc. which in turn updates your JobHead Table from your UBAQ. (I’m not going to go into this side of things - There are lots of other Threads to help you with this) Within your custom code you will have a foreach loop to loop through the rows of the jobs that have been selected (in our case via a checkbox).

Just before your foreach loop create a variable to store the JobOper.SysRowID values for each of the jobs selected. We used var JobOpersys = “”; As the code loops through we want to add each of the selected jobs JobOper.SysRowID values to it. So within the foreach loop code add JobOpersys = JobOpersys + ttResults_xRow.JobOper_SysRowID.ToString() + “,”; (you may need to substitute ttResults with the tt table that your ubaq has created) this will add each of the sysrow id’s seperated by a comma. Finally, Outside of the foreach { loop code } loop, have the BPM variable JobOperstring we created above reference the loop sysrow id’s variable. JobOperstring = JobOpersys.Remove(JobOpersys.LastIndexOf(’,’)); (The remove option here is used to remove the final trailing comma from our string).

Example:

var JobOpersys = “”;
foreach(var ttResults_xRow in (from ttResults_Row in ttResults select ttResults_Row))
{
your additional Loop code for check boxes, etc. goes here
JobOpersys = JobOpersys + ttResults_xRow.JobOper_SysRowID.ToString() + “,”;
}
JobOperstring = JobOpersys.Remove(JobOpersys.LastIndexOf(’,’));

Back to the BPM Designer create 2 set argument/varaibles - in the first set the S variable we created to equal the expression “S” then in the second set the BackWard variable to equal the expression “BackWard”.

Now we want to add the Invoke BO Method to call the Job Batching process. Once added configure it to call the BatchOps business object and Select the dobatching option from here. Finally we need to configure the parameters - this is where we use the 3 variables we created back at the start. There are 6 options in here:
set 1. jobProcesMode to the Var: S
set 2. pullDirection to the Var: BackWard
set 3. autoReceive to the expression true
set 4. finalOpr to the expression true
set 5 opRowIDList to the Var: JobOperstring
set 6: newJobNum to [ignore]

Link each of these from Start to Execute Custom Code to set argument/Variable 0 to set argument/Variable 1 and then to Invoke BO Method. Then Validate and save.

Now when you run your dashboard for Batching it should automatically run the Do Batching and Batch the selected jobs from your Dashboard resulting in a new job number which will be the 1st jobnumber of those selected followed by a -1

We haven’t looked at scheduling these Batched Jobs as yet so I can’t currently help if you wish to explore that side of things further.

Hopefully this will help some. (I know I could have used it when we were trying to figure this out)

1 Like