Batch Procedure | Creating a Recipe using Templates by Script

Sepasoft MES Module Suite

Create a Batch Recipe based on a Template

This example uses an existing Unit Procedure template to build out a recipe via script.

Reference documentation for this example:

Python
# Load recipe class and template
recipe_class = system.mes.batch.recipe.loadRecipeClass('Template Test', None)
template = system.mes.batch.recipe.loadTemplate('GUI Template', None)

# Create a new Recipe
recipe = system.mes.batch.recipe.createRecipe('Script Using Template Example', recipe_class.asLink())

# Add procedures to recipe...
procedure = recipe.createLogic('Procedure')

# Create 2 Unit Procedures from the first item in the template list 
unit_procedure_1 = procedure.createLogic(template[0].asLink(), 'Unit Procedure')
unit_procedure_2 = procedure.createLogic(template[0].asLink(), 'Unit Procedure')

# Add steps to the procedure
procedure.addStep("P1", 1, system.mes.batch.phase.getBuiltInPhaseLink('Start'))
# Note additional argument that sets the unit procedure logic from what was created above
p2 = procedure.addStep("P2", 2, system.mes.batch.phase.getBuiltInPhaseLink('Unit Procedure'), unit_procedure_1[0].asLink())
p3 = procedure.addStep("P3", 3, system.mes.batch.phase.getBuiltInPhaseLink('Transition'))
# Note additional argument that sets the unit procedure logic from what was created above
p4 = procedure.addStep("P4", 4, system.mes.batch.phase.getBuiltInPhaseLink('Unit Procedure'), unit_procedure_2[0].asLink())
p5 = procedure.addStep("P5", 5, system.mes.batch.phase.getBuiltInPhaseLink('Transition'))
procedure.addStep("P6", 6, system.mes.batch.phase.getBuiltInPhaseLink('Terminator'))
p3.setParameterValue('Transition_Expression', 'P2.Complete = True')
p5.setParameterValue('Transition_Expression', 'P4.Complete = True')

# Configure links
procedure.addLink(1, 2)
procedure.addLink(2, 3)
procedure.addLink(3, 4)
procedure.addLink(4, 5)
procedure.addLink(5, 6)

# Save the recipe and all the logic
saveList = system.mes.object.list.createList()
saveList.add(recipe)
saveList.add(procedure)
# Note unit_procedure_1 and unit_procedure_2 are lists and can have additional logic for Operations, add all items to the save list
saveList.addAll(unit_procedure_1)
saveList.addAll(unit_procedure_2)
system.mes.batch.recipe.saveRecipe(saveList)

Sepasoft MES Module Suite